✨ Hud basis
This commit is contained in:
@@ -4,4 +4,7 @@
|
||||
<EnableDynamicLoading>true</EnableDynamicLoading>
|
||||
<RootNamespace>AceFieldNewHorizon</RootNamespace>
|
||||
</PropertyGroup>
|
||||
<ItemGroup>
|
||||
<PackageReference Include="SimpleInjector" Version="5.5.0" />
|
||||
</ItemGroup>
|
||||
</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://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="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://byv2vu0k2drdd" path="res://Scenes/System/HUD.tscn" id="8_hud_scene"]
|
||||
|
||||
[node name="Root" type="Node2D"]
|
||||
|
||||
@@ -34,6 +35,8 @@ Registry = NodePath("../BuildingRegistry")
|
||||
scale = Vector2(0.35, 0.35)
|
||||
Inventory = NodePath("../ResourceSystem")
|
||||
|
||||
[node name="HUD" parent="." instance=ExtResource("8_hud_scene")]
|
||||
|
||||
[node name="ItemPickup" parent="." instance=ExtResource("7_is6ib")]
|
||||
position = Vector2(-496, -245)
|
||||
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/screen_space_aa=1
|
||||
anti_aliasing/quality/use_taa=true
|
||||
|
||||
[autoload]
|
||||
|
||||
ResourceManager="res://Scripts/System/ResourceManager.cs"
|
||||
|
Reference in New Issue
Block a user