WIP Wasserstand UI

This commit is contained in:
2025-07-05 17:34:03 +02:00
parent 57896e37df
commit 35c7e9a25e
24 changed files with 369 additions and 46 deletions
@@ -99,12 +99,14 @@ public partial class Player2D : CharacterBody2D
_lastDirection = Vector2.Up;
}
/*
if (Input.IsActionPressed("item"))
{
_sprite.Animation = "diagonal item";
anyActionPressed = true;
_lastDirection = Vector2.Right;
}
*/
if (anyActionPressed)
{
@@ -14,8 +14,7 @@ public partial class FarmingControls2D : Node2D
private int _toolId = -1;
private bool _wateringCanFilled = false;
private int _currentWateringCanStep = 0;
private int _wateringCanCapacity = 3;
[Signal] public delegate void WateringFieldEventHandler();
@@ -63,11 +62,11 @@ public partial class FarmingControls2D : Node2D
}
}
public void FillWateringCan(bool fillUp)
public void FillWateringCan()
{
if (_toolId == 1 )
{
_wateringCanFilled = fillUp;
WateringCanState.Fill();
}
}
@@ -78,18 +77,8 @@ public partial class FarmingControls2D : Node2D
return;
field.Water();
WateringCanState.Water();
EmitSignal(SignalName.WateringField);
if (_currentWateringCanStep < _wateringCanCapacity)
{
_currentWateringCanStep++;
}
else
{
_currentWateringCanStep = 0;
FillWateringCan(false);
}
}
private void MakeField(Vector2I fieldPosition)
@@ -15,6 +15,8 @@ public partial class VesnaBehaviour2D : Node
[Signal] public delegate void PickedUpToolEventHandler(bool success, int toolId);
[Signal] public delegate void FilledWateringCanEventHandler();
[Signal] public delegate void InventorySelectionChangedEventHandler(int toolId);
private InventoryManager _inventoryManager;
private InventoryInstance _inventoryInstance;
@@ -44,20 +46,21 @@ public partial class VesnaBehaviour2D : Node
if (currentItem == null)
return;
int toolId = -1;
if (currentItem.blueprint == _hoe)
{
ActivateTool(0);
return;
toolId = 0;
}
if (currentItem.blueprint == _wateringCan)
{
ActivateTool(1);
return;
toolId = 1;
}
ActivateTool(-1);
ActivateTool(toolId);
EmitSignal(SignalName.InventorySelectionChanged, toolId);
}
@@ -73,7 +76,7 @@ public partial class VesnaBehaviour2D : Node
{
if (toolId == 1)
{
_farmingControls.FillWateringCan(true);
_farmingControls.FillWateringCan();
_player2d.PlayWateringCanFillupAnimation();
EmitSignal(SignalName.FilledWateringCan);
}
@@ -0,0 +1,29 @@
namespace Babushka.scripts.CSharp.Common.Farming;
public static class WateringCanState
{
private static int _fillstate = 0;
public const int MAX_FILLSTATE = 6;
public static void Fill()
{
_fillstate = MAX_FILLSTATE;
}
public static void Water()
{
if(_fillstate > 0)
_fillstate--;
}
public static void Reset()
{
_fillstate = 0;
}
public static int GetFillState()
{
return _fillstate;
}
}
+44
View File
@@ -0,0 +1,44 @@
using Babushka.scripts.CSharp.Common.Farming;
using Godot;
namespace Babushka.scripts.CSharp.Common.UI;
public partial class WateringCanUi : Node2D
{
[Export] private Sprite2D[] _stages;
private const int WATERING_CAN_ID = 1;
public void Refill()
{
WateringCanState.Fill();
UpdateSprites();
}
public void Water()
{
UpdateSprites();
}
public void IsWateringCanActive(int toolId)
{
IsWateringCanActive(true, toolId);
}
public void IsWateringCanActive(bool success, int toolId)
{
if (!success)
return;
UpdateSprites();
}
private void UpdateSprites()
{
for (int i = 0; i < _stages.Length; i++)
{
_stages[i].Visible = i < WateringCanState.GetFillState();
}
}
}
@@ -0,0 +1 @@
uid://er03dkj8axlr