diff --git a/half-earth/nodes/clock.tscn b/half-earth/nodes/clock.tscn new file mode 100644 index 0000000..7d4c9fe --- /dev/null +++ b/half-earth/nodes/clock.tscn @@ -0,0 +1,6 @@ +[gd_scene load_steps=2 format=2] + +[ext_resource path="res://scripts/Clock.cs" type="Script" id=1] + +[node name="Clock" type="Node"] +script = ExtResource( 1 ) diff --git a/half-earth/nodes/debug_ui.tscn b/half-earth/nodes/debug_ui.tscn new file mode 100644 index 0000000..1cf603b --- /dev/null +++ b/half-earth/nodes/debug_ui.tscn @@ -0,0 +1,22 @@ +[gd_scene load_steps=2 format=2] + +[ext_resource path="res://scripts/DebugUI.cs" type="Script" id=1] + +[node name="Debug UI" type="Control"] +anchor_right = 1.0 +anchor_bottom = 1.0 +script = ExtResource( 1 ) +TicksLabelPath = NodePath("Ticks") + +[node name="Ticks" type="Label" parent="."] +anchor_left = 1.0 +anchor_top = 1.0 +anchor_right = 1.0 +anchor_bottom = 1.0 +margin_right = -10.0 +margin_bottom = -10.0 +grow_horizontal = 0 +grow_vertical = 0 +text = "ticks: 0" +align = 2 +valign = 2 diff --git a/half-earth/nodes/game.tscn b/half-earth/nodes/game.tscn index c7bf9d9..1cf51a8 100644 --- a/half-earth/nodes/game.tscn +++ b/half-earth/nodes/game.tscn @@ -1,11 +1,19 @@ -[gd_scene load_steps=3 format=2] +[gd_scene load_steps=5 format=2] [ext_resource path="res://nodes/grid.tscn" type="PackedScene" id=1] [ext_resource path="res://nodes/grid_cursor.tscn" type="PackedScene" id=2] +[ext_resource path="res://nodes/debug_ui.tscn" type="PackedScene" id=3] +[ext_resource path="res://nodes/clock.tscn" type="PackedScene" id=4] -[node name="Root" type="Node2D"] +[node name="Root" type="Node"] [node name="Grid" parent="." instance=ExtResource( 1 )] [node name="Cursor" parent="." instance=ExtResource( 2 )] Grid = NodePath("../Grid") + +[node name="Debug UI" parent="." instance=ExtResource( 3 )] + +[node name="Clock" parent="." instance=ExtResource( 4 )] + +[connection signal="OnTick" from="Clock" to="Debug UI" method="_on_Clock_OnTick"] diff --git a/half-earth/scripts/Clock.cs b/half-earth/scripts/Clock.cs new file mode 100644 index 0000000..9050073 --- /dev/null +++ b/half-earth/scripts/Clock.cs @@ -0,0 +1,31 @@ +using Godot; +using System; + +public class Clock : Node +{ + [Signal] + delegate void OnTick(int ticks); + + private int _ticks = 0; + + public override void _Input(InputEvent @event) + { + base._Input(@event); + + if (@event is InputEventKey keyEvent && keyEvent.Pressed) + { + switch ((KeyList)keyEvent.Scancode) + { + case KeyList.Space: + Tick(); + break; + } + } + } + + private void Tick() + { + _ticks++; + EmitSignal(nameof(OnTick), _ticks); + } +} diff --git a/half-earth/scripts/DebugUI.cs b/half-earth/scripts/DebugUI.cs new file mode 100644 index 0000000..f8a8bdb --- /dev/null +++ b/half-earth/scripts/DebugUI.cs @@ -0,0 +1,22 @@ +using Godot; +using System; + +public class DebugUI : Control +{ + [Export] + public NodePath TicksLabelPath { private get; set; } + private Label _ticksLabel; + + public override void _Ready() + { + _ticksLabel = GetNode