diff --git a/arrow.tscn b/arrow.tscn index 08961d6..503ef88 100644 --- a/arrow.tscn +++ b/arrow.tscn @@ -1,25 +1,29 @@ -[gd_scene load_steps=2 format=2] +[gd_scene load_steps=3 format=2] [ext_resource path="res://arrow.gd" type="Script" id=1] +[ext_resource path="res://fonts/default.tres" type="DynamicFont" id=2] [node name="Arrow" type="Node2D"] +show_behind_parent = true +z_as_relative = false script = ExtResource( 1 ) [node name="Line" type="Line2D" parent="."] -z_index = -1 points = PoolVector2Array( -0.480499, -0.11055, 158.301, 0.581757 ) -default_color = Color( 0.447059, 0.447059, 0.447059, 1 ) +default_color = Color( 0.2, 0.2, 0.2, 1 ) [node name="Tip" type="Node2D" parent="."] position = Vector2( 149.835, 0.290878 ) +z_index = 1 [node name="Polygon" type="Polygon2D" parent="Tip"] position = Vector2( -9.66138, -2.89842 ) z_index = -1 -color = Color( 0.447059, 0.447059, 0.447059, 1 ) +color = Color( 0.2, 0.2, 0.2, 1 ) polygon = PoolVector2Array( -19.8744, 17.0372, 47.7551, 11.8845, -10.5351, -21.2861 ) [node name="Label" type="Node2D" parent="."] +visible = false position = Vector2( 102, 46 ) [node name="ID" type="Label" parent="Label"] @@ -27,6 +31,8 @@ margin_left = -19.374 margin_top = -5.93085 margin_right = 20.626 margin_bottom = 8.06915 +custom_fonts/font = ExtResource( 2 ) +custom_colors/font_color = Color( 1, 1, 1, 1 ) text = "label" align = 1 __meta__ = { diff --git a/command_button.gd b/command_button.gd index d0a6a0a..793242f 100644 --- a/command_button.gd +++ b/command_button.gd @@ -5,4 +5,4 @@ func _ready(): func pressed(): - $"..".send_command(text) + $"../..".send_command(text) diff --git a/fonts/default.tres b/fonts/default.tres new file mode 100644 index 0000000..1835b61 --- /dev/null +++ b/fonts/default.tres @@ -0,0 +1,7 @@ +[gd_resource type="DynamicFont" load_steps=2 format=2] + +[ext_resource path="res://fonts/iosevka-regular.ttf" type="DynamicFontData" id=1] + +[resource] +size = 20 +font_data = ExtResource( 1 ) diff --git a/fonts/iosevka-regular.ttf b/fonts/iosevka-regular.ttf new file mode 100644 index 0000000..8ccb849 Binary files /dev/null and b/fonts/iosevka-regular.ttf differ diff --git a/levels/first/start b/levels/first/start index e69de29..8d17c26 100644 --- a/levels/first/start +++ b/levels/first/start @@ -0,0 +1,5 @@ +echo -e "bread\ntomato\nbread" > sandwich +git add sandwich +git commit -m "Initial sandwich" +echo -e "bread\ntomato\ncucumber\nbread" > sandwich +git commit -am "Add cucumber" diff --git a/main.gd b/main.gd index 2c2437c..7f31596 100644 --- a/main.gd +++ b/main.gd @@ -5,6 +5,9 @@ var dragged = null var server var client_connection +onready var input = $Terminal/Control/Input +onready var output = $Terminal/Control/Output + func _ready(): # Initialize level select. var options = $LevelSelect.get_popup() @@ -18,7 +21,7 @@ func _ready(): # Load first level. load_level(0) - $Terminal/Input.grab_focus() + input.grab_focus() func list_levels(): var levels = [] @@ -95,7 +98,7 @@ func _process(delta): func read_commit_message(): $CommitMessage.show() - $Terminal/Input.editable = false + input.editable = false $CommitMessage.text = game.read_file($ActiveRepository.path+"/.git/COMMIT_EDITMSG") $CommitMessage.grab_focus() @@ -103,7 +106,7 @@ func save_commit_message(): game.write_file($ActiveRepository.path+"/.git/COMMIT_EDITMSG", $CommitMessage.text) print("disconnect") client_connection.disconnect_from_host() - $Terminal/Input.editable = true + input.editable = true $CommitMessage.text = "" $CommitMessage.hide() - $Terminal/Input.grab_focus() + input.grab_focus() diff --git a/main.tscn b/main.tscn index 7de13f8..dbc053a 100644 --- a/main.tscn +++ b/main.tscn @@ -1,81 +1,125 @@ -[gd_scene load_steps=5 format=2] +[gd_scene load_steps=8 format=2] [ext_resource path="res://terminal.gd" type="Script" id=1] [ext_resource path="res://main.gd" type="Script" id=2] [ext_resource path="res://repository.tscn" type="PackedScene" id=3] [ext_resource path="res://command_button.tscn" type="PackedScene" id=4] +[ext_resource path="res://fonts/default.tres" type="DynamicFont" id=5] + +[sub_resource type="StyleBoxFlat" id=1] +bg_color = Color( 0, 0, 0, 1 ) + +[sub_resource type="StyleBoxFlat" id=2] +bg_color = Color( 0, 0, 0, 1 ) [node name="Main" type="Node2D"] script = ExtResource( 2 ) -[node name="Terminal" type="Node2D" parent="."] -z_index = 1 -script = ExtResource( 1 ) +[node name="Background" type="ColorRect" parent="."] +margin_right = 1922.0 +margin_bottom = 1081.0 +mouse_filter = 2 +color = Color( 0.0705882, 0.0705882, 0.0705882, 1 ) +__meta__ = { +"_edit_use_anchors_": false +} -[node name="Output" type="TextEdit" parent="Terminal"] -margin_left = 1416.0 -margin_top = 4.0 -margin_right = 1915.0 -margin_bottom = 737.0 +[node name="Terminal" type="Control" parent="."] +script = ExtResource( 1 ) +__meta__ = { +"_edit_use_anchors_": false +} + +[node name="Control" type="VBoxContainer" parent="Terminal"] +anchor_right = 1.0 +anchor_bottom = 1.0 +margin_left = 1208.0 +margin_top = 6.0 +margin_right = 1908.0 +margin_bottom = 1070.0 +custom_constants/separation = 0 +__meta__ = { +"_edit_use_anchors_": false +} + +[node name="Output" type="TextEdit" parent="Terminal/Control"] +margin_right = 700.0 +margin_bottom = 1038.0 +size_flags_vertical = 3 +custom_styles/read_only = SubResource( 1 ) +custom_fonts/font = ExtResource( 5 ) readonly = true __meta__ = { "_edit_use_anchors_": false } -[node name="Input" type="LineEdit" parent="Terminal"] -margin_left = 1414.0 -margin_top = 1019.0 -margin_right = 1913.0 -margin_bottom = 1075.0 +[node name="Button" parent="Terminal/Control" instance=ExtResource( 4 )] +visible = false +margin_left = 0.0 +margin_top = 852.0 +margin_right = 700.0 +margin_bottom = 905.0 +align = 0 + +[node name="Button2" parent="Terminal/Control" instance=ExtResource( 4 )] +visible = false +margin_left = 0.0 +margin_top = 905.0 +margin_right = 700.0 +margin_bottom = 958.0 +text = "git switch -c $RANDOM" +align = 0 + +[node name="Button3" parent="Terminal/Control" instance=ExtResource( 4 )] +visible = false +margin_left = 0.0 +margin_top = 958.0 +margin_right = 700.0 +margin_bottom = 1011.0 +text = "git checkout HEAD^" +align = 0 + +[node name="Input" type="LineEdit" parent="Terminal/Control"] +margin_top = 1038.0 +margin_right = 700.0 +margin_bottom = 1064.0 +custom_styles/normal = SubResource( 2 ) +custom_fonts/font = ExtResource( 5 ) __meta__ = { "_edit_use_anchors_": false } -[node name="Button" parent="Terminal" instance=ExtResource( 4 )] - -[node name="Button2" parent="Terminal" instance=ExtResource( 4 )] -margin_left = 1417.9 -margin_top = 801.646 -margin_right = 1671.9 -margin_bottom = 821.646 -text = "git switch -c $RANDOM" - -[node name="Button3" parent="Terminal" instance=ExtResource( 4 )] -margin_left = 1417.45 -margin_top = 846.547 -margin_right = 1671.45 -margin_bottom = 866.547 -text = "git checkout HEAD^" - [node name="CommitMessage" type="TextEdit" parent="."] visible = false -margin_left = 889.832 -margin_top = 16.4234 -margin_right = 1388.83 -margin_bottom = 582.423 +margin_left = 1209.0 +margin_top = 6.0 +margin_right = 1907.0 +margin_bottom = 1068.0 __meta__ = { "_edit_use_anchors_": false } -[node name="Button" type="Button" parent="CommitMessage"] -margin_left = 344.277 -margin_top = 509.45 -margin_right = 493.277 -margin_bottom = 558.45 -text = "SAVE!" +[node name="SaveButton" type="Button" parent="CommitMessage"] +margin_left = 537.443 +margin_top = 997.65 +margin_right = 686.443 +margin_bottom = 1046.65 +text = "Save" __meta__ = { "_edit_use_anchors_": false } [node name="GoalRepository" parent="." instance=ExtResource( 3 )] +visible = false position = Vector2( 21.5742, 19.4168 ) size = Vector2( 500, 1000 ) [node name="ActiveRepository" parent="." instance=ExtResource( 3 )] -position = Vector2( 704.399, 17.2594 ) +position = Vector2( 356.756, 44.1985 ) size = Vector2( 500, 1000 ) [node name="LevelSelect" type="MenuButton" parent="."] +visible = false margin_left = 11.5584 margin_top = 11.1303 margin_right = 109.558 @@ -85,5 +129,5 @@ flat = false __meta__ = { "_edit_use_anchors_": false } -[connection signal="text_entered" from="Terminal/Input" to="Terminal" method="send_command"] -[connection signal="pressed" from="CommitMessage/Button" to="." method="save_commit_message"] +[connection signal="text_entered" from="Terminal/Control/Input" to="Terminal" method="send_command"] +[connection signal="pressed" from="CommitMessage/SaveButton" to="." method="save_commit_message"] diff --git a/node.gd b/node.gd index d992295..cea8618 100644 --- a/node.gd +++ b/node.gd @@ -6,6 +6,7 @@ var type setget type_set var repository: Node2D var children = {} setget children_set +var id_always_visible = false var arrow = preload("res://arrow.tscn") @@ -18,7 +19,7 @@ func _process(delta): var other = get_node("..").objects[c] var d = other.position.distance_to(position) var dir = (other.position - position).normalized() - var f = (d*0.05) + var f = (d*0.01) position += dir*f other.position -= dir*f @@ -36,17 +37,22 @@ func type_set(new_type): $ID.text = $ID.text.substr(0,8) match new_type: "blob": - $Rect.color = Color.gray + $Rect.color = Color("#333333") "tree": $Rect.color = Color.darkgreen "commit": $Rect.color = Color.orange "tag": $Rect.color = Color.blue + id_always_visible = true "ref": $Rect.color = Color("#6680ff") + id_always_visible = true "head": $Rect.color = Color.red + id_always_visible = true + if id_always_visible: + $ID.show() func children_set(new_children): for c in $Arrows.get_children(): @@ -63,7 +69,10 @@ func children_set(new_children): func _on_hover(): $Content.visible = true + $ID.visible = true func _on_unhover(): - $Content.visible = false + if not id_always_visible: + $Content.visible = false + $ID.visible = false diff --git a/node.tscn b/node.tscn index ac360c8..7e40245 100644 --- a/node.tscn +++ b/node.tscn @@ -1,42 +1,47 @@ -[gd_scene load_steps=3 format=2] +[gd_scene load_steps=4 format=2] [ext_resource path="res://node.gd" type="Script" id=1] +[ext_resource path="res://fonts/default.tres" type="DynamicFont" id=2] [sub_resource type="RectangleShape2D" id=1] -extents = Vector2( 69.1778, 29.9015 ) +extents = Vector2( 30.4838, 29.9015 ) [node name="Node" type="Node2D"] +z_index = 1 script = ExtResource( 1 ) [node name="Rect" type="ColorRect" parent="."] -margin_left = -62.0578 -margin_top = -20.6286 -margin_right = 61.9422 -margin_bottom = 21.3714 +margin_left = -29.0 +margin_top = -28.0 +margin_right = 29.0 +margin_bottom = 30.0 mouse_filter = 2 +color = Color( 0.984314, 0, 0, 1 ) __meta__ = { "_edit_use_anchors_": false } [node name="ID" type="Label" parent="."] -margin_left = -57.0578 -margin_top = -7.6286 -margin_right = 58.9422 -margin_bottom = 16.3714 -custom_colors/font_color = Color( 0, 0, 0, 1 ) +visible = false +margin_left = -14.6409 +margin_top = -12.4902 +margin_right = 134.359 +margin_bottom = 40.5098 +custom_fonts/font = ExtResource( 2 ) +custom_colors/font_color = Color( 1, 1, 1, 1 ) text = "object_id" -align = 1 __meta__ = { "_edit_use_anchors_": false } [node name="Content" type="Label" parent="."] visible = false -margin_left = -57.0 -margin_top = 29.0 -margin_right = 250.0 -margin_bottom = 238.0 -custom_colors/font_color = Color( 0, 0, 0, 1 ) +margin_left = -12.8299 +margin_top = 39.5639 +margin_right = 294.17 +margin_bottom = 248.564 +custom_fonts/font = ExtResource( 2 ) +custom_colors/font_color = Color( 1, 1, 1, 1 ) text = "content" __meta__ = { "_edit_use_anchors_": false diff --git a/repository.gd b/repository.gd index 0867287..c421823 100644 --- a/repository.gd +++ b/repository.gd @@ -99,7 +99,7 @@ func apply_forces(): o2.position -= dir*f var d = o.position.distance_to(Vector2(size.x/2, size.y/2)) var dir = (o.position - Vector2(size.x/2, size.y/2)).normalized() - var f = (d+0.00001)*0.02 + var f = (d+0.00001)*0.01 o.position -= dir*f func git(args, splitlines = false): diff --git a/repository.tscn b/repository.tscn index 362af37..b5bb61d 100644 --- a/repository.tscn +++ b/repository.tscn @@ -6,6 +6,7 @@ script = ExtResource( 1 ) [node name="Index" type="Label" parent="."] +visible = false margin_left = 36.0787 margin_top = 120.0 margin_right = 375.079 @@ -17,6 +18,7 @@ __meta__ = { } [node name="IndexLabel" type="Label" parent="."] +visible = false margin_left = 38.0 margin_top = 69.0 margin_right = 377.0 @@ -27,6 +29,7 @@ __meta__ = { } [node name="Button" type="Button" parent="."] +visible = false margin_left = 36.5602 margin_top = 67.9891 margin_right = 94.5602 diff --git a/scripts/fake-editor b/scripts/fake-editor index 5f74036..326b3f5 100755 --- a/scripts/fake-editor +++ b/scripts/fake-editor @@ -1,6 +1,3 @@ #!/bin/sh -echo Hi, I am commit-hook -echo $* nc localhost 1234 -echo Goodbye diff --git a/terminal.gd b/terminal.gd index c864b0d..65f7603 100644 --- a/terminal.gd +++ b/terminal.gd @@ -1,20 +1,23 @@ -extends Node2D +extends Control var thread var history = [] var history_position = 0 +onready var input = $Control/Input +onready var output = $Control/Output + func _input(event): if history.size() > 0: if event.is_action_pressed("ui_up"): history_position -= 1 history_position %= history.size() - $Input.text = history[history_position] + input.text = history[history_position] if event.is_action_pressed("ui_down"): history_position += 1 history_position %= history.size() - $Input.text = history[history_position] + input.text = history[history_position] func send_command(command): history.push_back(command) @@ -24,9 +27,9 @@ func send_command(command): thread.start(self, "run_command_in_a_thread", command) func run_command_in_a_thread(command): - var output = game.sh(command, "/tmp/active") + var o = game.sh(command, "/tmp/active") - $Input.text = "" - $Output.text = $Output.text + "$ " + command + "\n" + output - $Output.scroll_vertical = 999999 + input.text = "" + output.text = output.text + "$ " + command + "\n" + o + output.scroll_vertical = 999999 $"../ActiveRepository".update_everything()