diffusion #12
							
								
								
									
										6
									
								
								half-earth/nodes/clock.tscn
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										6
									
								
								half-earth/nodes/clock.tscn
									
									
									
									
									
										Normal file
									
								
							@ -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 )
 | 
			
		||||
							
								
								
									
										22
									
								
								half-earth/nodes/debug_ui.tscn
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										22
									
								
								half-earth/nodes/debug_ui.tscn
									
									
									
									
									
										Normal file
									
								
							@ -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
 | 
			
		||||
@ -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"]
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										31
									
								
								half-earth/scripts/Clock.cs
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										31
									
								
								half-earth/scripts/Clock.cs
									
									
									
									
									
										Normal file
									
								
							@ -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);
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										22
									
								
								half-earth/scripts/DebugUI.cs
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										22
									
								
								half-earth/scripts/DebugUI.cs
									
									
									
									
									
										Normal file
									
								
							@ -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<Label>(TicksLabelPath);
 | 
			
		||||
        SetTicksText(0);
 | 
			
		||||
    }
 | 
			
		||||
    
 | 
			
		||||
    public void _on_Clock_OnTick(int ticks) => SetTicksText(ticks);
 | 
			
		||||
    
 | 
			
		||||
    private void SetTicksText(int ticks)
 | 
			
		||||
    {
 | 
			
		||||
        _ticksLabel.Text = $"ticks: {ticks}";
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user