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 0000000..aaa41d5 Binary files /dev/null and b/art/ui/UI/Watercan-ui/Tropfen-ui-1.png differ diff --git a/art/ui/UI/Watercan-ui/Tropfen-ui-1.png.import b/art/ui/UI/Watercan-ui/Tropfen-ui-1.png.import new file mode 100644 index 0000000..577bd6c --- /dev/null +++ b/art/ui/UI/Watercan-ui/Tropfen-ui-1.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://l0k3vh3kdprp" +path="res://.godot/imported/Tropfen-ui-1.png-ffd2adc2dec240ddecc1432b18c1c0f0.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://art/ui/UI/Watercan-ui/Tropfen-ui-1.png" +dest_files=["res://.godot/imported/Tropfen-ui-1.png-ffd2adc2dec240ddecc1432b18c1c0f0.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-2.png b/art/ui/UI/Watercan-ui/Tropfen-ui-2.png new file mode 100644 index 0000000..4bdb07b Binary files /dev/null and b/art/ui/UI/Watercan-ui/Tropfen-ui-2.png differ 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 0000000..a7f53ad Binary files /dev/null and b/art/ui/UI/Watercan-ui/Tropfen-ui-3.png differ diff --git a/art/ui/UI/Watercan-ui/Tropfen-ui-3.png.import b/art/ui/UI/Watercan-ui/Tropfen-ui-3.png.import new file mode 100644 index 0000000..e37d168 --- /dev/null +++ b/art/ui/UI/Watercan-ui/Tropfen-ui-3.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://di2npqkvvst6x" +path="res://.godot/imported/Tropfen-ui-3.png-3b58039a60642d36367527f2d94654fa.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://art/ui/UI/Watercan-ui/Tropfen-ui-3.png" +dest_files=["res://.godot/imported/Tropfen-ui-3.png-3b58039a60642d36367527f2d94654fa.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-4.png b/art/ui/UI/Watercan-ui/Tropfen-ui-4.png new file mode 100644 index 0000000..248fada Binary files /dev/null and b/art/ui/UI/Watercan-ui/Tropfen-ui-4.png differ 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 0000000..615f622 Binary files /dev/null and b/art/ui/UI/Watercan-ui/Tropfen-ui-5.png differ diff --git a/art/ui/UI/Watercan-ui/Tropfen-ui-5.png.import b/art/ui/UI/Watercan-ui/Tropfen-ui-5.png.import new file mode 100644 index 0000000..cb5ab16 --- /dev/null +++ b/art/ui/UI/Watercan-ui/Tropfen-ui-5.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://n1v4hgd467wp" +path="res://.godot/imported/Tropfen-ui-5.png-ee46a9fd4d81820f6fec9c30046a3b47.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://art/ui/UI/Watercan-ui/Tropfen-ui-5.png" +dest_files=["res://.godot/imported/Tropfen-ui-5.png-ee46a9fd4d81820f6fec9c30046a3b47.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-6.png b/art/ui/UI/Watercan-ui/Tropfen-ui-6.png new file mode 100644 index 0000000..0ff2c5d Binary files /dev/null and b/art/ui/UI/Watercan-ui/Tropfen-ui-6.png differ 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