From e32cd257fd193ae6bc17131984e05da61c5004dc Mon Sep 17 00:00:00 2001 From: Cat Flynn Date: Tue, 6 Dec 2022 20:11:42 +0000 Subject: [PATCH] add tick clock and tick counter UI #4 --- half-earth/nodes/clock.tscn | 6 ++++++ half-earth/nodes/debug_ui.tscn | 22 ++++++++++++++++++++++ half-earth/nodes/game.tscn | 12 ++++++++++-- half-earth/scripts/Clock.cs | 31 +++++++++++++++++++++++++++++++ half-earth/scripts/DebugUI.cs | 22 ++++++++++++++++++++++ 5 files changed, 91 insertions(+), 2 deletions(-) create mode 100644 half-earth/nodes/clock.tscn create mode 100644 half-earth/nodes/debug_ui.tscn create mode 100644 half-earth/scripts/Clock.cs create mode 100644 half-earth/scripts/DebugUI.cs 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