From 35c7e9a25eca16a3d3e6e4cb1f14f9f30257ada0 Mon Sep 17 00:00:00 2001 From: kziolkowski Date: Sat, 5 Jul 2025 17:34:03 +0200 Subject: [PATCH] WIP Wasserstand UI --- art/ui/UI/Watercan-ui/Tropfen-ui-1.png | Bin 0 -> 2249 bytes art/ui/UI/Watercan-ui/Tropfen-ui-1.png.import | 34 ++++++++++ art/ui/UI/Watercan-ui/Tropfen-ui-2.png | Bin 0 -> 2041 bytes art/ui/UI/Watercan-ui/Tropfen-ui-2.png.import | 34 ++++++++++ art/ui/UI/Watercan-ui/Tropfen-ui-3.png | Bin 0 -> 1898 bytes art/ui/UI/Watercan-ui/Tropfen-ui-3.png.import | 34 ++++++++++ art/ui/UI/Watercan-ui/Tropfen-ui-4.png | Bin 0 -> 1723 bytes art/ui/UI/Watercan-ui/Tropfen-ui-4.png.import | 34 ++++++++++ art/ui/UI/Watercan-ui/Tropfen-ui-5.png | Bin 0 -> 2153 bytes art/ui/UI/Watercan-ui/Tropfen-ui-5.png.import | 34 ++++++++++ art/ui/UI/Watercan-ui/Tropfen-ui-6.png | Bin 0 -> 1266 bytes art/ui/UI/Watercan-ui/Tropfen-ui-6.png.import | 34 ++++++++++ audio/default_bus_layout.tres | 5 +- default_bus_layout.tres | 15 ----- prefabs/characters/Player2D.tscn | 60 ++++++++++++++++-- prefabs/characters/Yeli.tscn | 13 +++- project.godot | 4 ++ scenes/Babushka_scene_farm_outside_2d.tscn | 4 +- .../Common/CharacterControls/Player2D.cs | 2 + .../Common/Farming/FarmingControls2D.cs | 19 ++---- .../CSharp/Common/Farming/VesnaBehaviour2D.cs | 15 +++-- .../CSharp/Common/Farming/WateringCanState.cs | 29 +++++++++ scripts/CSharp/Common/UI/WateringCanUi.cs | 44 +++++++++++++ scripts/CSharp/Common/UI/WateringCanUi.cs.uid | 1 + 24 files changed, 369 insertions(+), 46 deletions(-) create mode 100644 art/ui/UI/Watercan-ui/Tropfen-ui-1.png create mode 100644 art/ui/UI/Watercan-ui/Tropfen-ui-1.png.import create mode 100644 art/ui/UI/Watercan-ui/Tropfen-ui-2.png create mode 100644 art/ui/UI/Watercan-ui/Tropfen-ui-2.png.import create mode 100644 art/ui/UI/Watercan-ui/Tropfen-ui-3.png create mode 100644 art/ui/UI/Watercan-ui/Tropfen-ui-3.png.import create mode 100644 art/ui/UI/Watercan-ui/Tropfen-ui-4.png create mode 100644 art/ui/UI/Watercan-ui/Tropfen-ui-4.png.import create mode 100644 art/ui/UI/Watercan-ui/Tropfen-ui-5.png create mode 100644 art/ui/UI/Watercan-ui/Tropfen-ui-5.png.import create mode 100644 art/ui/UI/Watercan-ui/Tropfen-ui-6.png create mode 100644 art/ui/UI/Watercan-ui/Tropfen-ui-6.png.import delete mode 100644 default_bus_layout.tres create mode 100644 scripts/CSharp/Common/Farming/WateringCanState.cs create mode 100644 scripts/CSharp/Common/UI/WateringCanUi.cs create mode 100644 scripts/CSharp/Common/UI/WateringCanUi.cs.uid diff --git a/art/ui/UI/Watercan-ui/Tropfen-ui-1.png b/art/ui/UI/Watercan-ui/Tropfen-ui-1.png new file mode 100644 index 0000000000000000000000000000000000000000..aaa41d572628656c87faaa89f10e1e2e9bc1d058 GIT binary patch literal 2249 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 literal 0 HcmV?d00001 diff --git a/art/ui/UI/Watercan-ui/Tropfen-ui-2.png.import b/art/ui/UI/Watercan-ui/Tropfen-ui-2.png.import new file mode 100644 index 0000000..265f288 --- /dev/null +++ b/art/ui/UI/Watercan-ui/Tropfen-ui-2.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://t4w7axbof7bq" +path="res://.godot/imported/Tropfen-ui-2.png-f4fdc398383d494823a9c23512b5d46c.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://art/ui/UI/Watercan-ui/Tropfen-ui-2.png" +dest_files=["res://.godot/imported/Tropfen-ui-2.png-f4fdc398383d494823a9c23512b5d46c.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/art/ui/UI/Watercan-ui/Tropfen-ui-3.png b/art/ui/UI/Watercan-ui/Tropfen-ui-3.png new file mode 100644 index 0000000000000000000000000000000000000000..a7f53adf154aa0538421bda4c3a73d74d0a5a3d6 GIT binary patch literal 1898 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 R5u5-3002ovPDHLkV1nJ(Is^a! literal 0 HcmV?d00001 diff --git a/art/ui/UI/Watercan-ui/Tropfen-ui-4.png.import b/art/ui/UI/Watercan-ui/Tropfen-ui-4.png.import new file mode 100644 index 0000000..1bc33c5 --- /dev/null +++ b/art/ui/UI/Watercan-ui/Tropfen-ui-4.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://clti3basli30" +path="res://.godot/imported/Tropfen-ui-4.png-e2c1542b620809f430977af3bdacd86f.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://art/ui/UI/Watercan-ui/Tropfen-ui-4.png" +dest_files=["res://.godot/imported/Tropfen-ui-4.png-e2c1542b620809f430977af3bdacd86f.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/art/ui/UI/Watercan-ui/Tropfen-ui-5.png b/art/ui/UI/Watercan-ui/Tropfen-ui-5.png new file mode 100644 index 0000000000000000000000000000000000000000..615f622a34eab78c5b16ff931cae8938a433cbe6 GIT binary patch literal 2153 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 literal 0 HcmV?d00001 diff --git a/art/ui/UI/Watercan-ui/Tropfen-ui-6.png.import b/art/ui/UI/Watercan-ui/Tropfen-ui-6.png.import new file mode 100644 index 0000000..dedad38 --- /dev/null +++ b/art/ui/UI/Watercan-ui/Tropfen-ui-6.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://l5ym7gi82l1b" +path="res://.godot/imported/Tropfen-ui-6.png-2fee37aa3fbbde454a4d1b4f8ee350e6.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://art/ui/UI/Watercan-ui/Tropfen-ui-6.png" +dest_files=["res://.godot/imported/Tropfen-ui-6.png-2fee37aa3fbbde454a4d1b4f8ee350e6.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/audio/default_bus_layout.tres b/audio/default_bus_layout.tres index a71e4b1..7fe0d48 100644 --- a/audio/default_bus_layout.tres +++ b/audio/default_bus_layout.tres @@ -1,11 +1,12 @@ [gd_resource type="AudioBusLayout" format=3 uid="uid://b6dwkmkyb0axk"] [resource] +bus/0/volume_db = -5.93075 bus/1/name = &"Music" -bus/1/solo = true +bus/1/solo = false bus/1/mute = false bus/1/bypass_fx = false -bus/1/volume_db = -15.1981 +bus/1/volume_db = -17.6573 bus/1/send = &"Master" bus/2/name = &"SFX" bus/2/solo = false diff --git a/default_bus_layout.tres b/default_bus_layout.tres deleted file mode 100644 index 487f492..0000000 --- a/default_bus_layout.tres +++ /dev/null @@ -1,15 +0,0 @@ -[gd_resource type="AudioBusLayout" format=3 uid="uid://cfuxi1e3ut1w2"] - -[resource] -bus/1/name = &"Music" -bus/1/solo = false -bus/1/mute = false -bus/1/bypass_fx = false -bus/1/volume_db = 0.0 -bus/1/send = &"Master" -bus/2/name = &"SFX" -bus/2/solo = false -bus/2/mute = false -bus/2/bypass_fx = false -bus/2/volume_db = 0.0 -bus/2/send = &"Master" diff --git a/prefabs/characters/Player2D.tscn b/prefabs/characters/Player2D.tscn index 3f1a701..fa34a44 100644 --- a/prefabs/characters/Player2D.tscn +++ b/prefabs/characters/Player2D.tscn @@ -1,4 +1,4 @@ -[gd_scene load_steps=469 format=3 uid="uid://c25udixd5m6l0"] +[gd_scene load_steps=476 format=3 uid="uid://c25udixd5m6l0"] [ext_resource type="Script" uid="uid://b05uyj001ehwi" path="res://scripts/CSharp/Common/Farming/VesnaBehaviour2D.cs" id="1_yd5ep"] [ext_resource type="Script" uid="uid://cjbclkxesh3hc" path="res://scripts/CSharp/Common/CharacterControls/Player2D.cs" id="2_1vqmv"] @@ -268,9 +268,16 @@ [ext_resource type="Texture2D" uid="uid://dh3cfbcqm0fs4" path="res://art/animation/Vesna2D/Vesna Anims Tools/F01-Idle-Gießkanne/0006.png" id="462_6yyoj"] [ext_resource type="Texture2D" uid="uid://vahac0df0dhj" path="res://art/animation/Vesna2D/Vesna Anims Tools/F01-Idle-Gießkanne/0008.png" id="464_pbc3r"] [ext_resource type="Texture2D" uid="uid://b37lpqrsjjuc0" path="res://art/animation/Vesna2D/Vesna Anims Tools/F01-Idle-Gießkanne/0010.png" id="466_pw1ip"] +[ext_resource type="Script" uid="uid://er03dkj8axlr" path="res://scripts/CSharp/Common/UI/WateringCanUi.cs" id="467_j4m0f"] [ext_resource type="Texture2D" uid="uid://oi11ax6tml6j" path="res://art/animation/Vesna2D/Vesna Anims Tools/F01-Idle-Gießkanne/0012.png" id="468_08021"] +[ext_resource type="Texture2D" uid="uid://l0k3vh3kdprp" path="res://art/ui/UI/Watercan-ui/Tropfen-ui-1.png" id="468_f6xmn"] +[ext_resource type="Texture2D" uid="uid://t4w7axbof7bq" path="res://art/ui/UI/Watercan-ui/Tropfen-ui-2.png" id="469_nxglm"] +[ext_resource type="Texture2D" uid="uid://di2npqkvvst6x" path="res://art/ui/UI/Watercan-ui/Tropfen-ui-3.png" id="470_8fyd7"] [ext_resource type="Texture2D" uid="uid://dsjj23763pej5" path="res://art/animation/Vesna2D/Vesna Anims Tools/F01-Idle-Gießkanne/0014.png" id="470_bmmei"] +[ext_resource type="Texture2D" uid="uid://clti3basli30" path="res://art/ui/UI/Watercan-ui/Tropfen-ui-4.png" id="471_dnm27"] +[ext_resource type="Texture2D" uid="uid://n1v4hgd467wp" path="res://art/ui/UI/Watercan-ui/Tropfen-ui-5.png" id="472_e04c3"] [ext_resource type="Texture2D" uid="uid://blh0t2ofqj2uq" path="res://art/animation/Vesna2D/Vesna Anims Tools/F01-Idle-Gießkanne/0016.png" id="472_wdxsr"] +[ext_resource type="Texture2D" uid="uid://l5ym7gi82l1b" path="res://art/ui/UI/Watercan-ui/Tropfen-ui-6.png" id="473_g32y8"] [ext_resource type="Texture2D" uid="uid://3t1m2xi4ks75" path="res://art/animation/Vesna2D/Vesna Anims Tools/F01-Idle-Gießkanne/0018.png" id="474_tu801"] [ext_resource type="Texture2D" uid="uid://drtgi1qyq7fji" path="res://art/animation/Vesna2D/Vesna Anims Tools/F01-Idle-Gießkanne/0020.png" id="476_g4jjd"] [ext_resource type="Texture2D" uid="uid://d3rdsclnqbx7" path="res://art/animation/Vesna2D/Vesna Anims Sequences/F02-Walk/0001.png" id="477_qko58"] @@ -2118,17 +2125,62 @@ region_rect = Rect2(-1, 1128, 417, 299) position = Vector2(26, -469) zoom = Vector2(0.3, 0.3) +[node name="WateringCanUI" type="Node2D" parent="CharacterBody2D" node_paths=PackedStringArray("_stages")] +position = Vector2(0, -929) +scale = Vector2(2, 2) +script = ExtResource("467_j4m0f") +_stages = [NodePath("6"), NodePath("5"), NodePath("4"), NodePath("3"), NodePath("2"), NodePath("1")] + +[node name="1" type="Sprite2D" parent="CharacterBody2D/WateringCanUI"] +visible = false +position = Vector2(1, 0) +scale = Vector2(1.8, 1.8) +texture = ExtResource("468_f6xmn") + +[node name="2" type="Sprite2D" parent="CharacterBody2D/WateringCanUI"] +visible = false +position = Vector2(2, 2) +scale = Vector2(1.6, 1.6) +texture = ExtResource("469_nxglm") + +[node name="3" type="Sprite2D" parent="CharacterBody2D/WateringCanUI"] +visible = false +position = Vector2(3, 5) +scale = Vector2(1.4, 1.4) +texture = ExtResource("470_8fyd7") + +[node name="4" type="Sprite2D" parent="CharacterBody2D/WateringCanUI"] +visible = false +position = Vector2(3, 7) +scale = Vector2(1.2, 1.2) +texture = ExtResource("471_dnm27") + +[node name="5" type="Sprite2D" parent="CharacterBody2D/WateringCanUI"] +visible = false +position = Vector2(2, 7) +scale = Vector2(1.1, 1.1) +texture = ExtResource("472_e04c3") + +[node name="6" type="Sprite2D" parent="CharacterBody2D/WateringCanUI"] +visible = false +position = Vector2(3, 12) +texture = ExtResource("473_g32y8") + [node name="FarmingControls" type="Node2D" parent="." node_paths=PackedStringArray("_movingPlayer", "_camera")] script = ExtResource("817_6nrw3") _fieldPrefab = ExtResource("818_16w6h") _movingPlayer = NodePath("../CharacterBody2D") _camera = NodePath("../CharacterBody2D/Camera2D") -[node name="Node2D" type="Node2D" parent="."] +[node name="dialogic toggle" type="Node2D" parent="."] position = Vector2(0, 374) script = ExtResource("819_4na52") +[connection signal="FilledWateringCan" from="." to="CharacterBody2D/WateringCanUI" method="Refill"] +[connection signal="InventorySelectionChanged" from="." to="CharacterBody2D/WateringCanUI" method="IsWateringCanActive"] [connection signal="PickedUpTool" from="." to="CharacterBody2D" method="ActivateTool"] +[connection signal="PickedUpTool" from="." to="CharacterBody2D/WateringCanUI" method="IsWateringCanActive"] [connection signal="WateringField" from="FarmingControls" to="CharacterBody2D" method="PlayWateringAnimation"] -[connection signal="timelineEnded" from="Node2D" to="." method="EnableMovement"] -[connection signal="timelineStarted" from="Node2D" to="." method="DisableMovement"] +[connection signal="WateringField" from="FarmingControls" to="CharacterBody2D/WateringCanUI" method="Water"] +[connection signal="timelineEnded" from="dialogic toggle" to="." method="EnableMovement"] +[connection signal="timelineStarted" from="dialogic toggle" to="." method="DisableMovement"] diff --git a/prefabs/characters/Yeli.tscn b/prefabs/characters/Yeli.tscn index f164e7a..1bb8b72 100644 --- a/prefabs/characters/Yeli.tscn +++ b/prefabs/characters/Yeli.tscn @@ -1,4 +1,4 @@ -[gd_scene load_steps=47 format=3 uid="uid://dfvgp1my5rydh"] +[gd_scene load_steps=48 format=3 uid="uid://dfvgp1my5rydh"] [ext_resource type="Texture2D" uid="uid://c34012j5ukiuf" path="res://art/animation/Yeli2D/F01-Yeli_Idle/0001.png" id="1_03m0b"] [ext_resource type="Script" uid="uid://d2486x6upmwqq" path="res://scripts/GdScript/dialogic_starter.gd" id="1_at1n1"] @@ -182,10 +182,13 @@ animations = [{ "speed": 15.0 }] +[sub_resource type="CapsuleShape2D" id="CapsuleShape2D_aqu1t"] +radius = 202.0 +height = 404.0 + [node name="Yeli" type="Node2D"] z_index = 1 y_sort_enabled = true -position = Vector2(0, 322) script = ExtResource("1_at1n1") [node name="InteractionArea" parent="." instance=ExtResource("42_ahrat")] @@ -219,6 +222,12 @@ offset = Vector2(0, -450) [node name="DialogicToggle" type="Node2D" parent="."] script = ExtResource("44_aqu1t") +[node name="AnimatableBody2D" type="AnimatableBody2D" parent="."] +position = Vector2(0, -172) + +[node name="CollisionShape2D" type="CollisionShape2D" parent="AnimatableBody2D"] +shape = SubResource("CapsuleShape2D_aqu1t") + [connection signal="Interacted" from="InteractionArea" to="TalkingControl" method="ToggleTalking"] [connection signal="Talking" from="TalkingControl" to="." method="open"] [connection signal="timelineEnded" from="DialogicToggle" to="TalkingControl" method="ToggleTalking"] diff --git a/project.godot b/project.godot index 3b014da..ec9601f 100644 --- a/project.godot +++ b/project.godot @@ -18,6 +18,10 @@ boot_splash/fullsize=false boot_splash/image="uid://utam4axkvutc" config/icon="uid://b2smanpdo1y5e" +[audio] + +buses/default_bus_layout="uid://b6dwkmkyb0axk" + [autoload] Dialogic="*res://addons/dialogic/Core/DialogicGameHandler.gd" diff --git a/scenes/Babushka_scene_farm_outside_2d.tscn b/scenes/Babushka_scene_farm_outside_2d.tscn index 88c7ed5..9441655 100644 --- a/scenes/Babushka_scene_farm_outside_2d.tscn +++ b/scenes/Babushka_scene_farm_outside_2d.tscn @@ -123,7 +123,7 @@ shader_parameter/brightness_add = 0.0 shader_parameter/contrast_mult = 1.128 [sub_resource type="RectangleShape2D" id="RectangleShape2D_0sfl7"] -size = Vector2(728, 368) +size = Vector2(1041, 368) [sub_resource type="CircleShape2D" id="CircleShape2D_p6n74"] resource_local_to_scene = true @@ -862,7 +862,7 @@ region_rect = Rect2(0, 0, 1504, 1686) collision_mask = 4 [node name="CollisionShape2D" type="CollisionShape2D" parent="YSorted/Brünnen/StaticBody2D"] -position = Vector2(116, -224) +position = Vector2(145.5, -224) shape = SubResource("RectangleShape2D_0sfl7") [node name="InteractionArea" parent="YSorted/Brünnen" instance=ExtResource("27_klb81")] diff --git a/scripts/CSharp/Common/CharacterControls/Player2D.cs b/scripts/CSharp/Common/CharacterControls/Player2D.cs index 48bba39..f92ef76 100644 --- a/scripts/CSharp/Common/CharacterControls/Player2D.cs +++ b/scripts/CSharp/Common/CharacterControls/Player2D.cs @@ -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) { diff --git a/scripts/CSharp/Common/Farming/FarmingControls2D.cs b/scripts/CSharp/Common/Farming/FarmingControls2D.cs index 4a999d3..5c05cff 100644 --- a/scripts/CSharp/Common/Farming/FarmingControls2D.cs +++ b/scripts/CSharp/Common/Farming/FarmingControls2D.cs @@ -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) diff --git a/scripts/CSharp/Common/Farming/VesnaBehaviour2D.cs b/scripts/CSharp/Common/Farming/VesnaBehaviour2D.cs index 1fc8435..da3be73 100644 --- a/scripts/CSharp/Common/Farming/VesnaBehaviour2D.cs +++ b/scripts/CSharp/Common/Farming/VesnaBehaviour2D.cs @@ -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); } diff --git a/scripts/CSharp/Common/Farming/WateringCanState.cs b/scripts/CSharp/Common/Farming/WateringCanState.cs new file mode 100644 index 0000000..64dd048 --- /dev/null +++ b/scripts/CSharp/Common/Farming/WateringCanState.cs @@ -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; + } +} \ No newline at end of file diff --git a/scripts/CSharp/Common/UI/WateringCanUi.cs b/scripts/CSharp/Common/UI/WateringCanUi.cs new file mode 100644 index 0000000..c285817 --- /dev/null +++ b/scripts/CSharp/Common/UI/WateringCanUi.cs @@ -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(); + } + } + +} \ No newline at end of file diff --git a/scripts/CSharp/Common/UI/WateringCanUi.cs.uid b/scripts/CSharp/Common/UI/WateringCanUi.cs.uid new file mode 100644 index 0000000..a0e87ba --- /dev/null +++ b/scripts/CSharp/Common/UI/WateringCanUi.cs.uid @@ -0,0 +1 @@ +uid://er03dkj8axlr