mirror of
https://github.com/git-learning-game/oh-my-git.git
synced 2024-12-22 20:32:38 +01:00
Put everything into nested Control nodes
This commit is contained in:
parent
31751ce9d1
commit
260beefbe9
3 changed files with 203 additions and 143 deletions
54
main.gd
54
main.gd
|
@ -1,4 +1,4 @@
|
|||
extends Node2D
|
||||
extends Control
|
||||
|
||||
var dragged = null
|
||||
|
||||
|
@ -6,19 +6,38 @@ var server
|
|||
var client_connection
|
||||
var current_level = 0
|
||||
|
||||
onready var terminal = $Terminal
|
||||
export(NodePath) var terminal_path
|
||||
onready var terminal = get_node(terminal_path)
|
||||
onready var input = terminal.input
|
||||
onready var output = terminal.output
|
||||
onready var goal_repository = $Repositories/GoalRepository
|
||||
onready var active_repository = $Repositories/ActiveRepository
|
||||
|
||||
export(NodePath) var goal_repository_path
|
||||
export(NodePath) var active_repository_path
|
||||
onready var goal_repository = get_node(goal_repository_path)
|
||||
onready var active_repository = get_node(active_repository_path)
|
||||
|
||||
export(NodePath) var level_select_path
|
||||
onready var level_select = get_node(level_select_path)
|
||||
|
||||
export(NodePath) var next_level_button_path
|
||||
onready var next_level_button = get_node(next_level_button_path)
|
||||
|
||||
export(NodePath) var level_name_path
|
||||
onready var level_name = get_node(level_name_path)
|
||||
|
||||
export(NodePath) var level_description_path
|
||||
onready var level_description = get_node(level_description_path)
|
||||
|
||||
export(NodePath) var level_congrats_path
|
||||
onready var level_congrats = get_node(level_congrats_path)
|
||||
|
||||
func _ready():
|
||||
# Initialize level select.
|
||||
var options = $LevelSelect.get_popup()
|
||||
var options = level_select.get_popup()
|
||||
repopulate_levels()
|
||||
options.connect("id_pressed", self, "load_level")
|
||||
$LevelSelect.theme = Theme.new()
|
||||
$LevelSelect.theme.default_font = load("res://fonts/default.tres")
|
||||
level_select.theme = Theme.new()
|
||||
level_select.theme.default_font = load("res://fonts/default.tres")
|
||||
|
||||
# Initialize TCP server for fake editor.
|
||||
server = TCP_Server.new()
|
||||
|
@ -75,9 +94,9 @@ func list_levels():
|
|||
return level_sequence
|
||||
|
||||
func load_level(id):
|
||||
$NextLevelButton.hide()
|
||||
$LevelCongrats.hide()
|
||||
$LevelDescription.show()
|
||||
next_level_button.hide()
|
||||
level_congrats.hide()
|
||||
level_description.show()
|
||||
current_level = id
|
||||
|
||||
var levels = list_levels()
|
||||
|
@ -92,13 +111,13 @@ func load_level(id):
|
|||
|
||||
var description_file = level_prefix+level+"/description"
|
||||
var description = game.read_file(description_file, "no description")
|
||||
$LevelDescription.bbcode_text = description
|
||||
level_description.bbcode_text = description
|
||||
|
||||
var congrats_file = level_prefix+level+"/congrats"
|
||||
var congrats = game.read_file(congrats_file, "Good job, you solved the level!\n\nFeel free to try a few more things or click 'Next Level'.")
|
||||
$LevelCongrats.bbcode_text = congrats
|
||||
level_congrats.bbcode_text = congrats
|
||||
|
||||
$LevelName.text = level
|
||||
level_name.text = level
|
||||
|
||||
# We're actually destroying stuff here.
|
||||
# Make sure that active_repository is in a temporary directory.
|
||||
|
@ -182,13 +201,12 @@ func save_message():
|
|||
input.grab_focus()
|
||||
|
||||
func show_win_status():
|
||||
$NextLevelButton.show()
|
||||
$LevelDescription.hide()
|
||||
$LevelCongrats.show()
|
||||
|
||||
next_level_button.show()
|
||||
level_description.hide()
|
||||
level_congrats.show()
|
||||
|
||||
func repopulate_levels():
|
||||
var options = $LevelSelect.get_popup()
|
||||
var options = level_select.get_popup()
|
||||
options.clear()
|
||||
for level in list_levels():
|
||||
options.add_item(level)
|
||||
|
|
275
main.tscn
275
main.tscn
|
@ -17,56 +17,84 @@ corner_radius_top_right = 3
|
|||
corner_radius_bottom_right = 3
|
||||
corner_radius_bottom_left = 3
|
||||
|
||||
[node name="Main" type="Node2D"]
|
||||
[node name="Main" type="Control"]
|
||||
anchor_right = 1.0
|
||||
anchor_bottom = 1.0
|
||||
script = ExtResource( 2 )
|
||||
__meta__ = {
|
||||
"_edit_use_anchors_": false
|
||||
}
|
||||
terminal_path = NodePath("HBoxContainer/RightSide/InputArea/Terminal")
|
||||
goal_repository_path = NodePath("HBoxContainer/Repositories/GoalRepository")
|
||||
active_repository_path = NodePath("HBoxContainer/Repositories/ActiveRepository")
|
||||
level_select_path = NodePath("HBoxContainer/RightSide/Menu/LevelSelect")
|
||||
next_level_button_path = NodePath("HBoxContainer/RightSide/Menu/NextLevelButton")
|
||||
level_name_path = NodePath("HBoxContainer/RightSide/LevelPanel/LevelName")
|
||||
level_description_path = NodePath("HBoxContainer/RightSide/LevelPanel/Text/LevelDescription")
|
||||
level_congrats_path = NodePath("HBoxContainer/RightSide/LevelPanel/Text/LevelCongrats")
|
||||
|
||||
[node name="Background" type="ColorRect" parent="."]
|
||||
margin_right = 1922.0
|
||||
margin_bottom = 1081.0
|
||||
anchor_right = 1.0
|
||||
anchor_bottom = 1.0
|
||||
mouse_filter = 2
|
||||
color = Color( 0.0705882, 0.0705882, 0.0705882, 1 )
|
||||
__meta__ = {
|
||||
"_edit_use_anchors_": false
|
||||
}
|
||||
|
||||
[node name="Terminal" parent="." instance=ExtResource( 1 )]
|
||||
[node name="HBoxContainer" type="HBoxContainer" parent="."]
|
||||
anchor_right = 1.0
|
||||
anchor_bottom = 1.0
|
||||
__meta__ = {
|
||||
"_edit_use_anchors_": false
|
||||
}
|
||||
|
||||
[node name="Repositories" type="HBoxContainer" parent="HBoxContainer"]
|
||||
margin_right = 1277.0
|
||||
margin_bottom = 1080.0
|
||||
mouse_filter = 2
|
||||
size_flags_horizontal = 3
|
||||
size_flags_stretch_ratio = 2.0
|
||||
custom_constants/separation = 0
|
||||
__meta__ = {
|
||||
"_edit_use_anchors_": false
|
||||
}
|
||||
|
||||
[node name="GoalRepository" parent="HBoxContainer/Repositories" instance=ExtResource( 3 )]
|
||||
anchor_right = 0.0
|
||||
anchor_bottom = 0.0
|
||||
margin_left = 1218.0
|
||||
margin_top = 607.0
|
||||
margin_right = 1913.0
|
||||
margin_bottom = 1071.0
|
||||
margin_left = 0.0
|
||||
margin_top = 0.0
|
||||
margin_right = 638.0
|
||||
margin_bottom = 1080.0
|
||||
size_flags_horizontal = 3
|
||||
size_flags_vertical = 3
|
||||
label = "Goal"
|
||||
|
||||
[node name="TextEditor" type="TextEdit" parent="."]
|
||||
visible = false
|
||||
margin_left = 1209.0
|
||||
margin_top = 484.0
|
||||
margin_right = 1907.0
|
||||
margin_bottom = 1068.0
|
||||
custom_fonts/font = ExtResource( 5 )
|
||||
custom_colors/background_color = Color( 0, 0, 0, 1 )
|
||||
syntax_highlighting = true
|
||||
script = ExtResource( 6 )
|
||||
__meta__ = {
|
||||
"_edit_use_anchors_": false
|
||||
}
|
||||
[node name="ActiveRepository" parent="HBoxContainer/Repositories" instance=ExtResource( 3 )]
|
||||
anchor_right = 0.0
|
||||
anchor_bottom = 0.0
|
||||
margin_left = 638.0
|
||||
margin_top = 0.0
|
||||
margin_right = 1277.0
|
||||
margin_bottom = 1080.0
|
||||
size_flags_horizontal = 3
|
||||
size_flags_vertical = 3
|
||||
label = "Your repository"
|
||||
|
||||
[node name="SaveButton" type="Button" parent="TextEditor"]
|
||||
margin_left = 540.661
|
||||
margin_top = 528.031
|
||||
margin_right = 689.661
|
||||
margin_bottom = 577.031
|
||||
custom_fonts/font = ExtResource( 5 )
|
||||
text = "Save"
|
||||
__meta__ = {
|
||||
"_edit_use_anchors_": false
|
||||
}
|
||||
[node name="RightSide" type="VBoxContainer" parent="HBoxContainer"]
|
||||
margin_left = 1281.0
|
||||
margin_right = 1920.0
|
||||
margin_bottom = 1080.0
|
||||
size_flags_horizontal = 3
|
||||
|
||||
[node name="LevelSelect" type="MenuButton" parent="."]
|
||||
margin_left = 1226.25
|
||||
margin_top = 16.2615
|
||||
margin_right = 1388.25
|
||||
margin_bottom = 48.2615
|
||||
[node name="Menu" type="HBoxContainer" parent="HBoxContainer/RightSide"]
|
||||
margin_right = 639.0
|
||||
margin_bottom = 32.0
|
||||
|
||||
[node name="LevelSelect" type="MenuButton" parent="HBoxContainer/RightSide/Menu"]
|
||||
margin_right = 162.0
|
||||
margin_bottom = 32.0
|
||||
custom_fonts/font = ExtResource( 5 )
|
||||
text = "Select level..."
|
||||
flat = false
|
||||
|
@ -74,82 +102,20 @@ __meta__ = {
|
|||
"_edit_use_anchors_": false
|
||||
}
|
||||
|
||||
[node name="Repositories" type="HBoxContainer" parent="."]
|
||||
margin_left = 5.0
|
||||
margin_top = 5.0
|
||||
margin_right = 1218.0
|
||||
margin_bottom = 1076.0
|
||||
mouse_filter = 2
|
||||
custom_constants/separation = 0
|
||||
[node name="ReloadButton" type="Button" parent="HBoxContainer/RightSide/Menu"]
|
||||
margin_left = 166.0
|
||||
margin_right = 238.0
|
||||
margin_bottom = 32.0
|
||||
custom_fonts/font = ExtResource( 5 )
|
||||
text = "Reload"
|
||||
__meta__ = {
|
||||
"_edit_use_anchors_": false
|
||||
}
|
||||
|
||||
[node name="GoalRepository" parent="Repositories" instance=ExtResource( 3 )]
|
||||
anchor_right = 0.0
|
||||
anchor_bottom = 0.0
|
||||
margin_left = 0.0
|
||||
margin_top = 0.0
|
||||
margin_right = 606.0
|
||||
margin_bottom = 1071.0
|
||||
size_flags_horizontal = 3
|
||||
size_flags_vertical = 3
|
||||
label = "Goal"
|
||||
|
||||
[node name="ActiveRepository" parent="Repositories" instance=ExtResource( 3 )]
|
||||
anchor_right = 0.0
|
||||
anchor_bottom = 0.0
|
||||
margin_left = 606.0
|
||||
margin_top = 0.0
|
||||
margin_right = 1213.0
|
||||
margin_bottom = 1071.0
|
||||
size_flags_horizontal = 3
|
||||
size_flags_vertical = 3
|
||||
label = "Your repository"
|
||||
|
||||
[node name="LevelName" type="RichTextLabel" parent="."]
|
||||
margin_left = 1224.0
|
||||
margin_top = 62.0
|
||||
margin_right = 1889.0
|
||||
margin_bottom = 128.0
|
||||
custom_fonts/normal_font = ExtResource( 7 )
|
||||
text = "Level name here!"
|
||||
__meta__ = {
|
||||
"_edit_use_anchors_": false
|
||||
}
|
||||
|
||||
[node name="LevelDescription" type="RichTextLabel" parent="."]
|
||||
margin_left = 1224.0
|
||||
margin_top = 121.0
|
||||
margin_right = 1908.0
|
||||
margin_bottom = 605.0
|
||||
custom_fonts/normal_font = ExtResource( 5 )
|
||||
bbcode_enabled = true
|
||||
bbcode_text = "Level description here!"
|
||||
text = "Level description here!"
|
||||
__meta__ = {
|
||||
"_edit_use_anchors_": false
|
||||
}
|
||||
|
||||
[node name="LevelCongrats" type="RichTextLabel" parent="."]
|
||||
visible = false
|
||||
margin_left = 1224.0
|
||||
margin_top = 121.0
|
||||
margin_right = 1908.0
|
||||
margin_bottom = 605.0
|
||||
custom_fonts/normal_font = ExtResource( 5 )
|
||||
bbcode_enabled = true
|
||||
bbcode_text = "Level description here!"
|
||||
text = "Level description here!"
|
||||
__meta__ = {
|
||||
"_edit_use_anchors_": false
|
||||
}
|
||||
|
||||
[node name="NextLevelButton" type="Button" parent="."]
|
||||
margin_left = 1688.03
|
||||
margin_top = 16.2615
|
||||
margin_right = 1906.03
|
||||
margin_bottom = 47.2615
|
||||
[node name="NextLevelButton" type="Button" parent="HBoxContainer/RightSide/Menu"]
|
||||
margin_left = 242.0
|
||||
margin_right = 342.0
|
||||
margin_bottom = 32.0
|
||||
custom_styles/hover = SubResource( 1 )
|
||||
custom_styles/normal = ExtResource( 4 )
|
||||
custom_fonts/font = ExtResource( 5 )
|
||||
|
@ -158,13 +124,85 @@ __meta__ = {
|
|||
"_edit_use_anchors_": false
|
||||
}
|
||||
|
||||
[node name="ReloadButton" type="Button" parent="."]
|
||||
margin_left = 1400.72
|
||||
margin_top = 16.2615
|
||||
margin_right = 1545.72
|
||||
margin_bottom = 47.2615
|
||||
[node name="LevelPanel" type="VBoxContainer" parent="HBoxContainer/RightSide"]
|
||||
margin_top = 36.0
|
||||
margin_right = 639.0
|
||||
margin_bottom = 556.0
|
||||
size_flags_vertical = 3
|
||||
|
||||
[node name="LevelName" type="RichTextLabel" parent="HBoxContainer/RightSide/LevelPanel"]
|
||||
margin_right = 639.0
|
||||
margin_bottom = 60.0
|
||||
rect_min_size = Vector2( 0, 60 )
|
||||
custom_fonts/normal_font = ExtResource( 7 )
|
||||
text = "Level name here!"
|
||||
__meta__ = {
|
||||
"_edit_use_anchors_": false
|
||||
}
|
||||
|
||||
[node name="Text" type="Control" parent="HBoxContainer/RightSide/LevelPanel"]
|
||||
margin_top = 64.0
|
||||
margin_right = 639.0
|
||||
margin_bottom = 520.0
|
||||
size_flags_vertical = 3
|
||||
|
||||
[node name="LevelDescription" type="RichTextLabel" parent="HBoxContainer/RightSide/LevelPanel/Text"]
|
||||
anchor_right = 1.0
|
||||
anchor_bottom = 1.0
|
||||
size_flags_vertical = 3
|
||||
custom_fonts/normal_font = ExtResource( 5 )
|
||||
bbcode_enabled = true
|
||||
bbcode_text = "Level description here!"
|
||||
text = "Level description here!"
|
||||
__meta__ = {
|
||||
"_edit_use_anchors_": false
|
||||
}
|
||||
|
||||
[node name="LevelCongrats" type="RichTextLabel" parent="HBoxContainer/RightSide/LevelPanel/Text"]
|
||||
visible = false
|
||||
anchor_right = 1.0
|
||||
anchor_bottom = 1.0
|
||||
size_flags_vertical = 3
|
||||
custom_fonts/normal_font = ExtResource( 5 )
|
||||
bbcode_enabled = true
|
||||
bbcode_text = "Level description here!"
|
||||
text = "Level description here!"
|
||||
__meta__ = {
|
||||
"_edit_use_anchors_": false
|
||||
}
|
||||
|
||||
[node name="InputArea" type="Control" parent="HBoxContainer/RightSide"]
|
||||
margin_top = 560.0
|
||||
margin_right = 639.0
|
||||
margin_bottom = 1080.0
|
||||
size_flags_vertical = 3
|
||||
|
||||
[node name="Terminal" parent="HBoxContainer/RightSide/InputArea" instance=ExtResource( 1 )]
|
||||
repository_path = NodePath("../../../Repositories/ActiveRepository")
|
||||
|
||||
[node name="TextEditor" type="TextEdit" parent="HBoxContainer/RightSide/InputArea"]
|
||||
visible = false
|
||||
anchor_right = 1.0
|
||||
anchor_bottom = 1.0
|
||||
custom_fonts/font = ExtResource( 5 )
|
||||
text = "Reload"
|
||||
custom_colors/background_color = Color( 0, 0, 0, 1 )
|
||||
syntax_highlighting = true
|
||||
script = ExtResource( 6 )
|
||||
__meta__ = {
|
||||
"_edit_use_anchors_": false
|
||||
}
|
||||
|
||||
[node name="SaveButton" type="Button" parent="HBoxContainer/RightSide/InputArea/TextEditor"]
|
||||
anchor_left = 1.0
|
||||
anchor_top = 1.0
|
||||
anchor_right = 1.0
|
||||
anchor_bottom = 1.0
|
||||
margin_left = -117.279
|
||||
margin_top = -59.399
|
||||
margin_right = -17.2788
|
||||
margin_bottom = -14.399
|
||||
custom_fonts/font = ExtResource( 5 )
|
||||
text = "Save"
|
||||
__meta__ = {
|
||||
"_edit_use_anchors_": false
|
||||
}
|
||||
|
@ -182,12 +220,13 @@ margin_left = 1362.49
|
|||
margin_top = 827.517
|
||||
margin_right = 1772.49
|
||||
margin_bottom = 914.517
|
||||
caret_blink = true
|
||||
__meta__ = {
|
||||
"_edit_use_anchors_": false
|
||||
}
|
||||
[connection signal="pressed" from="TextEditor/SaveButton" to="." method="save_message"]
|
||||
[connection signal="button_down" from="LevelSelect" to="." method="repopulate_levels"]
|
||||
[connection signal="pressed" from="NextLevelButton" to="." method="load_next_level"]
|
||||
[connection signal="pressed" from="ReloadButton" to="." method="reload_level"]
|
||||
[connection signal="button_down" from="HBoxContainer/RightSide/Menu/LevelSelect" to="." method="repopulate_levels"]
|
||||
[connection signal="pressed" from="HBoxContainer/RightSide/Menu/ReloadButton" to="." method="reload_level"]
|
||||
[connection signal="pressed" from="HBoxContainer/RightSide/Menu/NextLevelButton" to="." method="load_next_level"]
|
||||
[connection signal="pressed" from="HBoxContainer/RightSide/InputArea/TextEditor/SaveButton" to="." method="save_message"]
|
||||
[connection signal="data_received" from="Test/TCPServer" to="Test" method="data"]
|
||||
[connection signal="text_entered" from="Test/LineEdit" to="Test" method="send"]
|
||||
|
|
17
terminal.gd
17
terminal.gd
|
@ -7,9 +7,10 @@ var history_position = 0
|
|||
|
||||
onready var input = $Control/InputLine/Input
|
||||
onready var output = $Control/Output
|
||||
onready var repo = $"../Repositories/ActiveRepository"
|
||||
export(NodePath) var repository_path
|
||||
onready var repository = get_node(repository_path)
|
||||
onready var command_dropdown = $Control/InputLine/CommandDropdown
|
||||
onready var main = get_parent()
|
||||
onready var main = get_tree().get_root().get_node("Main")
|
||||
onready var text_editor = $"../TextEditor"
|
||||
|
||||
var premade_commands = [
|
||||
|
@ -19,13 +20,15 @@ var premade_commands = [
|
|||
]
|
||||
|
||||
func _ready():
|
||||
#repo.shell.connect("output", self, "receive_output")
|
||||
#repository.shell.connect("output", self, "receive_output")
|
||||
|
||||
for command in premade_commands:
|
||||
command_dropdown.get_popup().add_item(command)
|
||||
command_dropdown.get_popup().connect("id_pressed", self, "load_command")
|
||||
command_dropdown.theme = Theme.new()
|
||||
command_dropdown.theme.default_font = load("res://fonts/default.tres")
|
||||
|
||||
print(main)
|
||||
|
||||
func _input(event):
|
||||
if event is InputEventKey and not text_editor.visible:
|
||||
|
@ -63,16 +66,16 @@ func send_command(command):
|
|||
func send_command_async(command):
|
||||
output.text += "$ "+command+"\n"
|
||||
input.text = ""
|
||||
repo.shell.run_async(command)
|
||||
repository.shell.run_async(command)
|
||||
|
||||
func run_command_in_a_thread(command):
|
||||
var o = repo.shell.run(command)
|
||||
var o = repository.shell.run(command)
|
||||
check_win_condition()
|
||||
|
||||
input.text = ""
|
||||
input.editable = true
|
||||
output.text = output.text + "$ " + command + "\n" + o
|
||||
repo.update_everything()
|
||||
repository.update_everything()
|
||||
|
||||
func receive_output(text):
|
||||
output.text += text
|
||||
|
@ -81,5 +84,5 @@ func clear():
|
|||
output.text = ""
|
||||
|
||||
func check_win_condition():
|
||||
if repo.shell.run("bash /tmp/win 2>/dev/null >/dev/null && echo yes || echo no") == "yes\n":
|
||||
if repository.shell.run("bash /tmp/win 2>/dev/null >/dev/null && echo yes || echo no") == "yes\n":
|
||||
main.show_win_status()
|
||||
|
|
Loading…
Reference in a new issue