✨ 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