From 944ca8c3f21a1eda669a88ce2c25ebcf71276c36 Mon Sep 17 00:00:00 2001 From: Cat Flynn Date: Tue, 6 Dec 2022 19:29:01 +0000 Subject: [PATCH 1/6] extract struct to file --- half-earth/scripts/Tile.cs | 8 ++++++++ half-earth/scripts/WorldGrid.cs | 11 ++++++----- 2 files changed, 14 insertions(+), 5 deletions(-) create mode 100644 half-earth/scripts/Tile.cs diff --git a/half-earth/scripts/Tile.cs b/half-earth/scripts/Tile.cs new file mode 100644 index 0000000..f46e5ee --- /dev/null +++ b/half-earth/scripts/Tile.cs @@ -0,0 +1,8 @@ +using Godot; + +public struct Tile +{ + public bool isHighlighted; + public float value; + public ShaderMaterial material; +} \ No newline at end of file diff --git a/half-earth/scripts/WorldGrid.cs b/half-earth/scripts/WorldGrid.cs index a59855d..7f55d6c 100644 --- a/half-earth/scripts/WorldGrid.cs +++ b/half-earth/scripts/WorldGrid.cs @@ -12,11 +12,6 @@ public class WorldGrid : Node2D [Export] public int CellSize { get; set; } - private struct Tile - { - public bool isHighlighted; - public ShaderMaterial material; - } private Tile[,] _tiles; // Called when the node enters the scene tree for the first time. @@ -52,6 +47,11 @@ public class WorldGrid : Node2D _tiles[x, y].isHighlighted ^= true; } + + public void SetTileValue(int x, int y, float value) + { + _tiles[x, y].value = value; + } public void GetGridPos(Vector2 position, out int x, out int y) { @@ -84,6 +84,7 @@ public class WorldGrid : Node2D { var tile = new Tile(); tile.isHighlighted = false; + tile.value = 0.0f; var node = TileScene.Instance(); this.AddChild(node); -- 2.34.1 From e32cd257fd193ae6bc17131984e05da61c5004dc Mon Sep 17 00:00:00 2001 From: Cat Flynn Date: Tue, 6 Dec 2022 20:11:42 +0000 Subject: [PATCH 2/6] 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