✨ Hud basis
This commit is contained in:
@@ -4,4 +4,7 @@
|
|||||||
<EnableDynamicLoading>true</EnableDynamicLoading>
|
<EnableDynamicLoading>true</EnableDynamicLoading>
|
||||||
<RootNamespace>AceFieldNewHorizon</RootNamespace>
|
<RootNamespace>AceFieldNewHorizon</RootNamespace>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
|
<ItemGroup>
|
||||||
|
<PackageReference Include="SimpleInjector" Version="5.5.0" />
|
||||||
|
</ItemGroup>
|
||||||
</Project>
|
</Project>
|
@@ -1,4 +1,4 @@
|
|||||||
[gd_scene load_steps=8 format=3 uid="uid://c22aprj452aha"]
|
[gd_scene load_steps=9 format=3 uid="uid://c22aprj452aha"]
|
||||||
|
|
||||||
[ext_resource type="Script" uid="uid://cudpc3w17mbsw" path="res://Scripts/System/GridManager.cs" id="1_knkkn"]
|
[ext_resource type="Script" uid="uid://cudpc3w17mbsw" path="res://Scripts/System/GridManager.cs" id="1_knkkn"]
|
||||||
[ext_resource type="Script" uid="uid://dfi2snip78eq6" path="res://Scripts/System/ResourceManager.cs" id="1_pl8e4"]
|
[ext_resource type="Script" uid="uid://dfi2snip78eq6" path="res://Scripts/System/ResourceManager.cs" id="1_pl8e4"]
|
||||||
@@ -7,6 +7,7 @@
|
|||||||
[ext_resource type="Script" uid="uid://bx1wj7gn6vrqe" path="res://Scripts/System/PlacementManager.cs" id="2_sxhdm"]
|
[ext_resource type="Script" uid="uid://bx1wj7gn6vrqe" path="res://Scripts/System/PlacementManager.cs" id="2_sxhdm"]
|
||||||
[ext_resource type="PackedScene" uid="uid://doxy60afddg1m" path="res://Scenes/Entities/Player.tscn" id="3_oss8w"]
|
[ext_resource type="PackedScene" uid="uid://doxy60afddg1m" path="res://Scenes/Entities/Player.tscn" id="3_oss8w"]
|
||||||
[ext_resource type="PackedScene" uid="uid://xwkplaxmye3v" path="res://Scenes/System/ItemPickup.tscn" id="7_is6ib"]
|
[ext_resource type="PackedScene" uid="uid://xwkplaxmye3v" path="res://Scenes/System/ItemPickup.tscn" id="7_is6ib"]
|
||||||
|
[ext_resource type="PackedScene" uid="uid://byv2vu0k2drdd" path="res://Scenes/System/HUD.tscn" id="8_hud_scene"]
|
||||||
|
|
||||||
[node name="Root" type="Node2D"]
|
[node name="Root" type="Node2D"]
|
||||||
|
|
||||||
@@ -34,6 +35,8 @@ Registry = NodePath("../BuildingRegistry")
|
|||||||
scale = Vector2(0.35, 0.35)
|
scale = Vector2(0.35, 0.35)
|
||||||
Inventory = NodePath("../ResourceSystem")
|
Inventory = NodePath("../ResourceSystem")
|
||||||
|
|
||||||
|
[node name="HUD" parent="." instance=ExtResource("8_hud_scene")]
|
||||||
|
|
||||||
[node name="ItemPickup" parent="." instance=ExtResource("7_is6ib")]
|
[node name="ItemPickup" parent="." instance=ExtResource("7_is6ib")]
|
||||||
position = Vector2(-496, -245)
|
position = Vector2(-496, -245)
|
||||||
ItemId = "stone"
|
ItemId = "stone"
|
||||||
|
13
Scenes/System/HUD.tscn
Normal file
13
Scenes/System/HUD.tscn
Normal file
@@ -0,0 +1,13 @@
|
|||||||
|
[gd_scene load_steps=2 format=3 uid="uid://byv2vu0k2drdd"]
|
||||||
|
|
||||||
|
[ext_resource type="Script" uid="uid://ddoqqcg77f60v" path="res://Scripts/System/Hud.cs" id="1_yw4ou"]
|
||||||
|
|
||||||
|
[node name="HUD" type="CanvasLayer"]
|
||||||
|
script = ExtResource("1_yw4ou")
|
||||||
|
|
||||||
|
[node name="ResourceDisplay" type="VBoxContainer" parent="."]
|
||||||
|
layout_mode = 0
|
||||||
|
offset_left = 10.0
|
||||||
|
offset_top = 10.0
|
||||||
|
offset_right = 100.0
|
||||||
|
offset_bottom = 100.0
|
64
Scripts/System/Hud.cs
Normal file
64
Scripts/System/Hud.cs
Normal file
@@ -0,0 +1,64 @@
|
|||||||
|
using Godot;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
|
||||||
|
namespace AceFieldNewHorizon.Scripts.System;
|
||||||
|
|
||||||
|
public partial class Hud : CanvasLayer
|
||||||
|
{
|
||||||
|
private ResourceManager _resourceManager;
|
||||||
|
private VBoxContainer _resourceDisplay;
|
||||||
|
private readonly Dictionary<string, Label> _resourceLabels = new();
|
||||||
|
|
||||||
|
public override void _Ready()
|
||||||
|
{
|
||||||
|
_resourceDisplay = GetNode<VBoxContainer>("ResourceDisplay");
|
||||||
|
|
||||||
|
_resourceManager = GetTree().CurrentScene.GetNode<ResourceManager>("ResourceSystem");
|
||||||
|
if (_resourceManager == null)
|
||||||
|
{
|
||||||
|
GD.PushError("ResourceSystem not found in the scene tree!");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
_resourceManager.OnResourceChanged += UpdateResourceDisplay;
|
||||||
|
|
||||||
|
// Initialize display with current resources
|
||||||
|
foreach (var entry in _resourceManager.GetAllResources())
|
||||||
|
{
|
||||||
|
UpdateResourceDisplay(entry.Key, entry.Value);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void UpdateResourceDisplay(string resourceId, int newAmount)
|
||||||
|
{
|
||||||
|
if (!_resourceLabels.TryGetValue(resourceId, out Label label))
|
||||||
|
{
|
||||||
|
label = new Label();
|
||||||
|
_resourceDisplay.AddChild(label);
|
||||||
|
_resourceLabels.Add(resourceId, label);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (newAmount <= 0)
|
||||||
|
{
|
||||||
|
// Remove label if resource amount is zero or less
|
||||||
|
if (label.GetParent() != null)
|
||||||
|
{
|
||||||
|
_resourceDisplay.RemoveChild(label);
|
||||||
|
}
|
||||||
|
_resourceLabels.Remove(resourceId);
|
||||||
|
label.QueueFree(); // Free the label from memory
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
label.Text = $"{resourceId}: {newAmount}";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public override void _ExitTree()
|
||||||
|
{
|
||||||
|
if (_resourceManager != null)
|
||||||
|
{
|
||||||
|
_resourceManager.OnResourceChanged -= UpdateResourceDisplay;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
1
Scripts/System/Hud.cs.uid
Normal file
1
Scripts/System/Hud.cs.uid
Normal file
@@ -0,0 +1 @@
|
|||||||
|
uid://ddoqqcg77f60v
|
@@ -88,3 +88,7 @@ anti_aliasing/quality/msaa_2d=3
|
|||||||
anti_aliasing/quality/msaa_3d=3
|
anti_aliasing/quality/msaa_3d=3
|
||||||
anti_aliasing/quality/screen_space_aa=1
|
anti_aliasing/quality/screen_space_aa=1
|
||||||
anti_aliasing/quality/use_taa=true
|
anti_aliasing/quality/use_taa=true
|
||||||
|
|
||||||
|
[autoload]
|
||||||
|
|
||||||
|
ResourceManager="res://Scripts/System/ResourceManager.cs"
|
||||||
|
Reference in New Issue
Block a user