diff --git a/art/animals/duck_flapFlap.res b/art/animals/duck_flapFlap.res index 89792f7..80916bd 100644 Binary files a/art/animals/duck_flapFlap.res and b/art/animals/duck_flapFlap.res differ diff --git a/art/farm/Babushka_house_frontDoor.png b/art/farm/Babushka_house_frontDoor.png new file mode 100644 index 0000000..f8378f8 Binary files /dev/null and b/art/farm/Babushka_house_frontDoor.png differ diff --git a/art/farm/Babushka_house_frontDoor.png.import b/art/farm/Babushka_house_frontDoor.png.import new file mode 100644 index 0000000..6b13bf1 --- /dev/null +++ b/art/farm/Babushka_house_frontDoor.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://ccy6bwunhfvrf" +path="res://.godot/imported/Babushka_house_frontDoor.png-345830acb7ae8cbbb97011f89455fd91.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://art/farm/Babushka_house_frontDoor.png" +dest_files=["res://.godot/imported/Babushka_house_frontDoor.png-345830acb7ae8cbbb97011f89455fd91.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/materials/inventory_interactable_outline.tres b/art/materials/inventory_interactable_outline.tres new file mode 100644 index 0000000..a6c4e88 --- /dev/null +++ b/art/materials/inventory_interactable_outline.tres @@ -0,0 +1,9 @@ +[gd_resource type="ShaderMaterial" load_steps=2 format=3 uid="uid://bv3m12duf0dj6"] + +[ext_resource type="Shader" uid="uid://dsa3lv2as7q3b" path="res://shader/outline.gdshader" id="1_fxlom"] + +[resource] +shader = ExtResource("1_fxlom") +shader_parameter/allow_out_of_bounds = true +shader_parameter/outline_thickness = 8.0 +shader_parameter/outline_color = Color(0.88, 0.54208, 0.4576, 1) diff --git a/art/materials/simple_interactable_outline.tres b/art/materials/simple_interactable_outline.tres new file mode 100644 index 0000000..c3ada87 --- /dev/null +++ b/art/materials/simple_interactable_outline.tres @@ -0,0 +1,9 @@ +[gd_resource type="ShaderMaterial" load_steps=2 format=3 uid="uid://blch5kdhkbj75"] + +[ext_resource type="Shader" uid="uid://dsa3lv2as7q3b" path="res://shader/outline.gdshader" id="1_ovtva"] + +[resource] +shader = ExtResource("1_ovtva") +shader_parameter/allow_out_of_bounds = true +shader_parameter/outline_thickness = 8.0 +shader_parameter/outline_color = Color(0.88, 0.79684, 0.3256, 1) diff --git a/dialog/Chuga.dch b/dialog/Characters/Chuga.dch similarity index 100% rename from dialog/Chuga.dch rename to dialog/Characters/Chuga.dch diff --git a/dialog/Chuga.dch.uid b/dialog/Characters/Chuga.dch.uid similarity index 100% rename from dialog/Chuga.dch.uid rename to dialog/Characters/Chuga.dch.uid diff --git a/dialog/Domovoi.dch b/dialog/Characters/Domovoi.dch similarity index 100% rename from dialog/Domovoi.dch rename to dialog/Characters/Domovoi.dch diff --git a/dialog/Domovoi.dch.uid b/dialog/Characters/Domovoi.dch.uid similarity index 100% rename from dialog/Domovoi.dch.uid rename to dialog/Characters/Domovoi.dch.uid diff --git a/dialog/Everyone.dch b/dialog/Characters/Everyone.dch similarity index 100% rename from dialog/Everyone.dch rename to dialog/Characters/Everyone.dch diff --git a/dialog/Everyone.dch.uid b/dialog/Characters/Everyone.dch.uid similarity index 100% rename from dialog/Everyone.dch.uid rename to dialog/Characters/Everyone.dch.uid diff --git a/dialog/Yeli.dch b/dialog/Characters/Yeli.dch similarity index 100% rename from dialog/Yeli.dch rename to dialog/Characters/Yeli.dch diff --git a/dialog/Yeli.dch.uid b/dialog/Characters/Yeli.dch.uid similarity index 100% rename from dialog/Yeli.dch.uid rename to dialog/Characters/Yeli.dch.uid diff --git a/dialog/defaulty_the_default_character.dch b/dialog/Characters/defaulty_the_default_character.dch similarity index 100% rename from dialog/defaulty_the_default_character.dch rename to dialog/Characters/defaulty_the_default_character.dch diff --git a/dialog/defaulty_the_default_character.dch.uid b/dialog/Characters/defaulty_the_default_character.dch.uid similarity index 100% rename from dialog/defaulty_the_default_character.dch.uid rename to dialog/Characters/defaulty_the_default_character.dch.uid diff --git a/dialog/semi_cat.dch b/dialog/Characters/semi_cat.dch similarity index 100% rename from dialog/semi_cat.dch rename to dialog/Characters/semi_cat.dch diff --git a/dialog/semi_cat.dch.uid b/dialog/Characters/semi_cat.dch.uid similarity index 100% rename from dialog/semi_cat.dch.uid rename to dialog/Characters/semi_cat.dch.uid diff --git a/dialog/vesna.dch b/dialog/Characters/vesna.dch similarity index 100% rename from dialog/vesna.dch rename to dialog/Characters/vesna.dch diff --git a/dialog/vesna.dch.uid b/dialog/Characters/vesna.dch.uid similarity index 100% rename from dialog/vesna.dch.uid rename to dialog/Characters/vesna.dch.uid diff --git a/dialog/NPC_narrative.tres b/dialog/NPC_narrative.tres index 5b3302d..32487a3 100644 --- a/dialog/NPC_narrative.tres +++ b/dialog/NPC_narrative.tres @@ -15,8 +15,8 @@ script = ExtResource("1_0jwhi") overrides = { "global_bg_color": "Color(0.898375, 0.917922, 0.835355, 1)", -"global_font_color": "Color(0.242786, 0.16463, 0.180255, 1)", -"global_font_size": "20.0" +"global_font_color": "Color(0.257812, 0.125248, 0.0533752, 1)", +"global_font_size": "30.0" } [sub_resource type="Resource" id="Resource_uxnk3"] @@ -44,10 +44,10 @@ overrides = { "name_label_alignment": "2", "name_label_box_modulate": "Color(1, 1, 1, 1)", "name_label_box_panel": "\"res://dialog/Babushka_NPC_Namebox_background.tres\"", +"name_label_custom_font_size": "30.0", "name_label_use_global_color": "false", "next_indicator_enabled": "false", -"text_alignment": "1", -"text_size": "20.0", +"text_size": "40.0", "typing_sounds_end_sound": "\"res://audio/sfx/UI/Dialog/SFX_Dialog_Open_01.wav\"" } @@ -59,7 +59,14 @@ overrides = {} [sub_resource type="Resource" id="Resource_umvdi"] script = ExtResource("1_0jwhi") scene = ExtResource("7_rg32j") -overrides = {} +overrides = { +"font_size_custom": "30.0", +"text_color_disabled": "Color(0.605469, 0.605469, 0.605469, 1)", +"text_color_focused": "Color(1, 0.628906, 0.628906, 1)", +"text_color_hovered": "Color(0.882353, 0.572549, 0.572549, 1)", +"text_color_pressed": "Color(1, 0.882812, 0.53125, 1)", +"text_color_use_global": "false" +} [sub_resource type="Resource" id="Resource_ci2ul"] script = ExtResource("1_0jwhi") @@ -94,4 +101,4 @@ layer_info = { } base_overrides = {} layers = Array[ExtResource("1_0jwhi")]([]) -metadata/_latest_layer = "14" +metadata/_latest_layer = "15" diff --git a/dialog/yeli_intro_01.dtl b/dialog/Scene1_farm_outside/yeli_intro_01.dtl similarity index 100% rename from dialog/yeli_intro_01.dtl rename to dialog/Scene1_farm_outside/yeli_intro_01.dtl diff --git a/dialog/yeli_intro_01.dtl.uid b/dialog/Scene1_farm_outside/yeli_intro_01.dtl.uid similarity index 100% rename from dialog/yeli_intro_01.dtl.uid rename to dialog/Scene1_farm_outside/yeli_intro_01.dtl.uid diff --git a/dialog/yeli_intro_02.dtl b/dialog/Scene1_farm_outside/yeli_intro_02.dtl similarity index 100% rename from dialog/yeli_intro_02.dtl rename to dialog/Scene1_farm_outside/yeli_intro_02.dtl diff --git a/dialog/yeli_intro_02.dtl.uid b/dialog/Scene1_farm_outside/yeli_intro_02.dtl.uid similarity index 100% rename from dialog/yeli_intro_02.dtl.uid rename to dialog/Scene1_farm_outside/yeli_intro_02.dtl.uid diff --git a/dialog/yeli_intro_03.dtl b/dialog/Scene1_farm_outside/yeli_intro_03.dtl similarity index 100% rename from dialog/yeli_intro_03.dtl rename to dialog/Scene1_farm_outside/yeli_intro_03.dtl diff --git a/dialog/yeli_intro_03.dtl.uid b/dialog/Scene1_farm_outside/yeli_intro_03.dtl.uid similarity index 100% rename from dialog/yeli_intro_03.dtl.uid rename to dialog/Scene1_farm_outside/yeli_intro_03.dtl.uid diff --git a/dialog/yeli_intro_04.dtl b/dialog/Scene1_farm_outside/yeli_intro_04.dtl similarity index 100% rename from dialog/yeli_intro_04.dtl rename to dialog/Scene1_farm_outside/yeli_intro_04.dtl diff --git a/dialog/yeli_intro_04.dtl.uid b/dialog/Scene1_farm_outside/yeli_intro_04.dtl.uid similarity index 100% rename from dialog/yeli_intro_04.dtl.uid rename to dialog/Scene1_farm_outside/yeli_intro_04.dtl.uid diff --git a/dialog/yeli_intro_05.dtl b/dialog/Scene1_farm_outside/yeli_intro_05.dtl similarity index 100% rename from dialog/yeli_intro_05.dtl rename to dialog/Scene1_farm_outside/yeli_intro_05.dtl diff --git a/dialog/yeli_intro_05.dtl.uid b/dialog/Scene1_farm_outside/yeli_intro_05.dtl.uid similarity index 100% rename from dialog/yeli_intro_05.dtl.uid rename to dialog/Scene1_farm_outside/yeli_intro_05.dtl.uid diff --git a/dialog/quest4_dinner.dtl b/dialog/Scene2_farm_inside/quest4_dinner.dtl similarity index 77% rename from dialog/quest4_dinner.dtl rename to dialog/Scene2_farm_inside/quest4_dinner.dtl index 05b1406..e40074e 100644 --- a/dialog/quest4_dinner.dtl +++ b/dialog/Scene2_farm_inside/quest4_dinner.dtl @@ -1,18 +1,18 @@ join Yeli center -join Vesna2 center +join vesna center Everyone: Smachnoho! -Vesna2: Lovely soup, Yeli! +vesna: Lovely soup, Yeli! Yeli (_part_side): God bless you, my child! That’s also thanks to you. -Vesna2: So, how do you like it in Lasnoye so far? +vesna: So, how do you like it in Lasnoye so far? - It feels different from when Vasily and I used to live here. - It’s just as I remembered it. Yeli (_part_side): Indeed, it is. Yeli (_part_side): Since the evacuation, Lasnoye and its people had to adapt to…new circumstances. Yeli (_part_side): But at its core, it’s still our motherland from back then. -Vesna2: …And the forest? Has anyone tried to go back and-- +vesna: …And the forest? Has anyone tried to go back and-- Yeli (_part_side): The forest is strictly off-limits! Yeli (_part_side): Dragana forbids it. Yeli (_part_side): The grime turned the forest into a dangerous place. Yeli (_part_side): But here you’re safe. After all, you can always count on your Yeli! -Vesna2: In that case, pass me some more soup! +vesna: In that case, pass me some more soup! [end_timeline] diff --git a/dialog/quest4_dinner.dtl.uid b/dialog/Scene2_farm_inside/quest4_dinner.dtl.uid similarity index 100% rename from dialog/quest4_dinner.dtl.uid rename to dialog/Scene2_farm_inside/quest4_dinner.dtl.uid diff --git a/dialog/Vesna2.dch b/dialog/Vesna2.dch deleted file mode 100644 index 090ef1e..0000000 --- a/dialog/Vesna2.dch +++ /dev/null @@ -1,19 +0,0 @@ -{ -"@path": "res://addons/dialogic/Resources/character.gd", -"@subpath": NodePath(""), -&"_translation_id": "", -&"color": Color(1, 1, 1, 1), -&"custom_info": { -"sound_mood_default": "", -"sound_moods": {}, -"style": "NPC_narrative" -}, -&"default_portrait": "", -&"description": "Main character", -&"display_name": "Vesna2", -&"mirror": false, -&"nicknames": [""], -&"offset": Vector2(0, 0), -&"portraits": {}, -&"scale": 1.0 -} \ No newline at end of file diff --git a/dialog/Vesna2.dch.uid b/dialog/Vesna2.dch.uid deleted file mode 100644 index 435f2ed..0000000 --- a/dialog/Vesna2.dch.uid +++ /dev/null @@ -1 +0,0 @@ -uid://c0vfdx7xal0py diff --git a/dialog/quest2_tomatoes_end.dtl b/dialog/quest2_tomatoes_end.dtl deleted file mode 100644 index 3989def..0000000 --- a/dialog/quest2_tomatoes_end.dtl +++ /dev/null @@ -1,4 +0,0 @@ -join Vesna2 center -Vesna2: I just wish I liked tomatoes more. -Vesna2: Well…Yeli probably started with the cooking. I should go inside. -[end_timeline] diff --git a/dialog/quest3_beets_end.dtl b/dialog/quests/beetroot/quest3_beets_end.dtl similarity index 93% rename from dialog/quest3_beets_end.dtl rename to dialog/quests/beetroot/quest3_beets_end.dtl index 2fdf181..0dcdbf2 100644 --- a/dialog/quest3_beets_end.dtl +++ b/dialog/quests/beetroot/quest3_beets_end.dtl @@ -1,5 +1,5 @@ join Yeli center -join Vesna2 center +join vesna center Yeli (_part_side): Wow! So many? Yeli (_part_side): Good job! Put it in the kettle! [wait_input] diff --git a/dialog/quest3_beets_end.dtl.uid b/dialog/quests/beetroot/quest3_beets_end.dtl.uid similarity index 100% rename from dialog/quest3_beets_end.dtl.uid rename to dialog/quests/beetroot/quest3_beets_end.dtl.uid diff --git a/dialog/quest3_beets_interim.dtl b/dialog/quests/beetroot/quest3_beets_interim.dtl similarity index 51% rename from dialog/quest3_beets_interim.dtl rename to dialog/quests/beetroot/quest3_beets_interim.dtl index 3b661ad..4292adc 100644 --- a/dialog/quest3_beets_interim.dtl +++ b/dialog/quests/beetroot/quest3_beets_interim.dtl @@ -1,15 +1,15 @@ -join Vesna2 center +join vesna center join Domovoi center -Vesna2: Oh no, most of the beets aren’t ripe yet. +vesna: Oh no, most of the beets aren’t ripe yet. Domovoi: Pssss! Domovoi: Yeah, you! Domovoi: The code word is “Rosty Rosty” -Vesna2: What? +vesna: What? Domovoi: Just say it! -Vesna2: Rosty…rosty? +vesna: Rosty…rosty? # Hier wächst die rote Beete magisch. Mit einem Signal/Ereignis? [signal arg="MagicWord"] -Vesna2: It worked! How did it work? -Vesna2: Thank y…and he’s gone. -What a truly quirky individual. +vesna: It worked! How did it work? +vesna: Thank y…and he’s gone. +vesna: What a truly quirky individual. [end_timeline] diff --git a/dialog/quest3_beets_interim.dtl.uid b/dialog/quests/beetroot/quest3_beets_interim.dtl.uid similarity index 100% rename from dialog/quest3_beets_interim.dtl.uid rename to dialog/quests/beetroot/quest3_beets_interim.dtl.uid diff --git a/dialog/quest3_beets_start.dtl b/dialog/quests/beetroot/quest3_beets_start.dtl similarity index 100% rename from dialog/quest3_beets_start.dtl rename to dialog/quests/beetroot/quest3_beets_start.dtl diff --git a/dialog/quest3_beets_start.dtl.uid b/dialog/quests/beetroot/quest3_beets_start.dtl.uid similarity index 100% rename from dialog/quest3_beets_start.dtl.uid rename to dialog/quests/beetroot/quest3_beets_start.dtl.uid diff --git a/dialog/quest1_ducks_end.dtl b/dialog/quests/ducks/quest1_ducks_end.dtl similarity index 100% rename from dialog/quest1_ducks_end.dtl rename to dialog/quests/ducks/quest1_ducks_end.dtl diff --git a/dialog/quest1_ducks_end.dtl.uid b/dialog/quests/ducks/quest1_ducks_end.dtl.uid similarity index 100% rename from dialog/quest1_ducks_end.dtl.uid rename to dialog/quests/ducks/quest1_ducks_end.dtl.uid diff --git a/dialog/quest1_ducks_start.dtl b/dialog/quests/ducks/quest1_ducks_start.dtl similarity index 85% rename from dialog/quest1_ducks_start.dtl rename to dialog/quests/ducks/quest1_ducks_start.dtl index 9aebca4..fd011b5 100644 --- a/dialog/quest1_ducks_start.dtl +++ b/dialog/quests/ducks/quest1_ducks_start.dtl @@ -2,7 +2,7 @@ join Yeli right join vesna left Yeli (_part_side): Come here, you little quacking beast! - What a mess! -- You haven’t called me that way yet. +- How did you call me? Yeli (_part_side): Vesna, oh, thank goodness! Yeli (_part_side): Please could you get the runner ducks back into their coop? [end_timeline] diff --git a/dialog/quest1_ducks_start.dtl.uid b/dialog/quests/ducks/quest1_ducks_start.dtl.uid similarity index 100% rename from dialog/quest1_ducks_start.dtl.uid rename to dialog/quests/ducks/quest1_ducks_start.dtl.uid diff --git a/dialog/quest5_forest_end.dtl b/dialog/quests/forest/quest5_forest_end.dtl similarity index 86% rename from dialog/quest5_forest_end.dtl rename to dialog/quests/forest/quest5_forest_end.dtl index c111d19..6ba59d5 100644 --- a/dialog/quest5_forest_end.dtl +++ b/dialog/quests/forest/quest5_forest_end.dtl @@ -1,6 +1,6 @@ join Chuga center Chuga: I believe you’ve seen enough for today. Chuga: And yes, you too. -Thank you for playing! +vesna: Thank you for playing! do SceneTransition.ChangeSceneToFileThreaded("res://scenes/Babushka_scene_credits.tscn") [end_timeline] diff --git a/dialog/quest5_forest_end.dtl.uid b/dialog/quests/forest/quest5_forest_end.dtl.uid similarity index 100% rename from dialog/quest5_forest_end.dtl.uid rename to dialog/quests/forest/quest5_forest_end.dtl.uid diff --git a/dialog/quest5_forest_start.dtl b/dialog/quests/forest/quest5_forest_start.dtl similarity index 76% rename from dialog/quest5_forest_start.dtl rename to dialog/quests/forest/quest5_forest_start.dtl index ce9dc6f..cf402f6 100644 --- a/dialog/quest5_forest_start.dtl +++ b/dialog/quests/forest/quest5_forest_start.dtl @@ -1,21 +1,21 @@ -join Vesna2 center +join vesna center join Chuga center Chuga: Look who it is! -Vesna2: Your name was Chuga, right? I want to go to the forest! +vesna: Your name was Chuga, right? I want to go to the forest! Chuga: To the forest? After everything the others told you? -Vesna2: Will you let me through? +vesna: Will you let me through? Chuga: Will I? Chuga: Let us have a riddle! Chuga: If you answer correctly, I let you through. Chuga: If not, I let you through anyway. -Vesna2: So, what’s the point of answering? +vesna: So, what’s the point of answering? Chuga: You give me an answer, and I give you something to see in the dark. Chuga: Or are you planning to return with bumps and bruises? Chuga: So, listen\: “I wear a crown, but I’m no king.” Vesna, what am I? - Queen Chuga: What a boring answer. - Tree - That’s it! + Chuga: That’s it! - Soup Chuga: Hate the player, not the game. Chuga: Here you go! diff --git a/dialog/quest5_forest_start.dtl.uid b/dialog/quests/forest/quest5_forest_start.dtl.uid similarity index 100% rename from dialog/quest5_forest_start.dtl.uid rename to dialog/quests/forest/quest5_forest_start.dtl.uid diff --git a/dialog/quests/tomatoes/quest2_tomatoes_end.dtl b/dialog/quests/tomatoes/quest2_tomatoes_end.dtl new file mode 100644 index 0000000..3b6d971 --- /dev/null +++ b/dialog/quests/tomatoes/quest2_tomatoes_end.dtl @@ -0,0 +1,4 @@ +join vesna center +vesna: I just wish I liked tomatoes more. +vesna: Well…Yeli probably started with the cooking. I should go inside. +[end_timeline] diff --git a/dialog/quest2_tomatoes_end.dtl.uid b/dialog/quests/tomatoes/quest2_tomatoes_end.dtl.uid similarity index 100% rename from dialog/quest2_tomatoes_end.dtl.uid rename to dialog/quests/tomatoes/quest2_tomatoes_end.dtl.uid diff --git a/dialog/quest2_tomatoes_interim.dtl b/dialog/quests/tomatoes/quest2_tomatoes_interim.dtl similarity index 94% rename from dialog/quest2_tomatoes_interim.dtl rename to dialog/quests/tomatoes/quest2_tomatoes_interim.dtl index d99badc..6d26037 100644 --- a/dialog/quest2_tomatoes_interim.dtl +++ b/dialog/quests/tomatoes/quest2_tomatoes_interim.dtl @@ -1,5 +1,5 @@ join Yeli center -join Vesna2 center +join vesna center Yeli (_part_side): Great! Now I need you to plant some tomatoes! label plant tomatoes Yeli (_part_side): Use the hoe to break up the soil. Then plant the seeds and water the fields. diff --git a/dialog/quest2_tomatoes_interim.dtl.uid b/dialog/quests/tomatoes/quest2_tomatoes_interim.dtl.uid similarity index 100% rename from dialog/quest2_tomatoes_interim.dtl.uid rename to dialog/quests/tomatoes/quest2_tomatoes_interim.dtl.uid diff --git a/dialog/quest2_tomatoes_start.dtl b/dialog/quests/tomatoes/quest2_tomatoes_start.dtl similarity index 59% rename from dialog/quest2_tomatoes_start.dtl rename to dialog/quests/tomatoes/quest2_tomatoes_start.dtl index 6e21977..0741a8f 100644 --- a/dialog/quest2_tomatoes_start.dtl +++ b/dialog/quests/tomatoes/quest2_tomatoes_start.dtl @@ -1,10 +1,10 @@ join Yeli center -join Vesna2 center +join vesna center Yeli (_part_side): Thank you, my child! Your Yeli is not so agile anymore. -Vesna2: But you’re diligent! You’ve started with the preparation for dinner. +vesna: But you’re diligent! You’ve started with the preparation for dinner. Yeli (_part_side): Indeed, I have. -Yeli (_part_side): But, oh my, those ducks messed up the tomatos. +Yeli (_part_side): But, oh my, those ducks messed up the tomatos. Yeli (_part_side): Oh, would you like to assist me? -Vesna2: What do I have to do? +vesna: What do I have to do? Yeli (_part_side): First, take the hoe and watering can over there! Then come back to me! [end_timeline] diff --git a/dialog/quest2_tomatoes_start.dtl.uid b/dialog/quests/tomatoes/quest2_tomatoes_start.dtl.uid similarity index 100% rename from dialog/quest2_tomatoes_start.dtl.uid rename to dialog/quests/tomatoes/quest2_tomatoes_start.dtl.uid diff --git a/export_presets.cfg b/export_presets.cfg index 0fc5ab5..408bddd 100644 --- a/export_presets.cfg +++ b/export_presets.cfg @@ -9,7 +9,7 @@ custom_features="" export_filter="all_resources" include_filter="" exclude_filter="" -export_path="_builds/Babushka_win_0_3/Babushka.exe" +export_path="_builds/Babushka_showcase_win_04/Babushka.exe" patches=PackedStringArray() encryption_include_filters="" encryption_exclude_filters="" @@ -79,7 +79,7 @@ custom_features="" export_filter="all_resources" include_filter="" exclude_filter="" -export_path="_builds/Babushka_linux_0_2/Babushka.x86_64" +export_path="_builds/Babushka_showcase_lux_04/Babushka.x86_64" patches=PackedStringArray() encryption_include_filters="" encryption_exclude_filters="" diff --git a/prefabs/Interactables/trash_object.tscn b/prefabs/Interactables/trash_object.tscn index dc1a121..9cd511d 100644 --- a/prefabs/Interactables/trash_object.tscn +++ b/prefabs/Interactables/trash_object.tscn @@ -28,11 +28,16 @@ stream_8/stream = ExtResource("11_kb03l") stream_9/stream = ExtResource("12_kka6u") [node name="trashObject" type="Sprite2D"] +z_index = 1 +y_sort_enabled = true texture = ExtResource("1_k4ca3") +offset = Vector2(1, -215) region_enabled = true -region_rect = Rect2(57, 493, 334, 475) +region_rect = Rect2(44, 479, 356, 503) -[node name="InteractionArea" parent="." instance=ExtResource("2_gcgfd")] +[node name="InteractionArea" parent="." node_paths=PackedStringArray("_spriteToOutline") instance=ExtResource("2_gcgfd")] +position = Vector2(0, -172) +_spriteToOutline = NodePath("..") [node name="AudioStreamPlayer2D" type="AudioStreamPlayer2D" parent="."] stream = SubResource("AudioStreamRandomizer_dich4") diff --git a/prefabs/characters/Chugar.tscn b/prefabs/characters/Chugar.tscn index c1f1cd6..6bf8903 100644 --- a/prefabs/characters/Chugar.tscn +++ b/prefabs/characters/Chugar.tscn @@ -1,10 +1,11 @@ -[gd_scene load_steps=8 format=3 uid="uid://ddpl8cbck7e6s"] +[gd_scene load_steps=9 format=3 uid="uid://ddpl8cbck7e6s"] [ext_resource type="Script" uid="uid://d0kgxh4ykuv23" path="res://scripts/CSharp/Common/NPC/TalkingCharacter.cs" id="1_xix7p"] [ext_resource type="PackedScene" uid="uid://cqc72e4hq6bcd" path="res://prefabs/interactions/interaction_area_2d.tscn" id="2_udjjv"] [ext_resource type="Texture2D" uid="uid://bgba1uv0muxat" path="res://art/characters/chugeist_tmp.png" id="3_42og6"] +[ext_resource type="Material" uid="uid://blch5kdhkbj75" path="res://art/materials/simple_interactable_outline.tres" id="3_kd44q"] [ext_resource type="Script" uid="uid://d2486x6upmwqq" path="res://scripts/GdScript/dialogic_starter.gd" id="43_xooq4"] -[ext_resource type="Script" path="res://scripts/GdScript/dialogic_toggle.gd" id="44_v6w16"] +[ext_resource type="Script" uid="uid://cvkw4qd2hxksi" path="res://scripts/GdScript/dialogic_toggle.gd" id="44_v6w16"] [sub_resource type="CircleShape2D" id="CircleShape2D_at1n1"] resource_local_to_scene = true @@ -20,24 +21,16 @@ z_index = 1 y_sort_enabled = true script = ExtResource("1_xix7p") -[node name="InteractionArea" parent="." instance=ExtResource("2_udjjv")] +[node name="InteractionArea" parent="." node_paths=PackedStringArray("_spriteToOutline") instance=ExtResource("2_udjjv")] position = Vector2(0, -450) scale = Vector2(2.805, 2.805) +_outlineMaterial = ExtResource("3_kd44q") +_spriteToOutline = NodePath("../TalkingControl/Visual") [node name="CollisionShape3D" parent="InteractionArea/Area2D" index="0"] position = Vector2(-4.99109, 63.4581) shape = SubResource("CircleShape2D_at1n1") -[node name="Label" parent="InteractionArea" index="1"] -z_index = 5 -custom_minimum_size = Vector2(10, 10) -offset_left = -131.194 -offset_top = -157.219 -offset_right = 115.806 -offset_bottom = -54.2193 -theme_override_font_sizes/font_size = 60 -text = "[E] talk" - [node name="TalkingControl" type="Node2D" parent="."] [node name="Visual" type="Sprite2D" parent="TalkingControl"] diff --git a/prefabs/characters/Player2D.tscn b/prefabs/characters/Player2D.tscn index 85a4dff..86da4af 100644 --- a/prefabs/characters/Player2D.tscn +++ b/prefabs/characters/Player2D.tscn @@ -1,7 +1,8 @@ -[gd_scene load_steps=476 format=3 uid="uid://c25udixd5m6l0"] +[gd_scene load_steps=477 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"] +[ext_resource type="Script" uid="uid://cjbclkxesh3hc" path="res://scripts/CSharp/Common/CharacterControls/PlayerMovement.cs" id="2_1vqmv"] +[ext_resource type="Script" uid="uid://n7oihifvqp23" path="res://scripts/CSharp/Common/Animation/VesnaAnimations.cs" id="3_f6xmn"] [ext_resource type="Texture2D" uid="uid://7jrac5ii3ah3" path="res://art/animation/Vesna2D/Vesna Anims Sequences/B01-Idle/0001.png" id="3_tb2wl"] [ext_resource type="Texture2D" uid="uid://c06b551t2qlo6" path="res://art/animation/Vesna2D/Vesna Anims Sequences/B01-Idle/0002.png" id="4_dy5kt"] [ext_resource type="Texture2D" uid="uid://bj2ssu0ixr0p1" path="res://art/animation/Vesna2D/Vesna Anims Sequences/B01-Idle/0004.png" id="6_3sina"] @@ -744,7 +745,7 @@ animations = [{ }], "loop": true, "name": &"back walking", -"speed": 15.0 +"speed": 20.0 }, { "frames": [{ "duration": 1.0, @@ -824,7 +825,7 @@ animations = [{ }], "loop": true, "name": &"back walking backpack", -"speed": 25.0 +"speed": 45.0 }, { "frames": [{ "duration": 1.0, @@ -862,7 +863,7 @@ animations = [{ }], "loop": true, "name": &"back walking rake", -"speed": 5.0 +"speed": 20.0 }, { "frames": [{ "duration": 1.0, @@ -900,7 +901,7 @@ animations = [{ }], "loop": true, "name": &"back walking wateringcan", -"speed": 15.0 +"speed": 20.0 }, { "frames": [{ "duration": 1.0, @@ -1471,7 +1472,7 @@ animations = [{ }], "loop": true, "name": &"front walking", -"speed": 15.0 +"speed": 20.0 }, { "frames": [{ "duration": 1.0, @@ -1551,7 +1552,7 @@ animations = [{ }], "loop": true, "name": &"front walking backpack", -"speed": 25.0 +"speed": 42.0 }, { "frames": [{ "duration": 1.0, @@ -1589,7 +1590,7 @@ animations = [{ }], "loop": true, "name": &"front walking rake", -"speed": 15.0 +"speed": 20.0 }, { "frames": [{ "duration": 1.0, @@ -1627,7 +1628,7 @@ animations = [{ }], "loop": true, "name": &"front walking wateringcan", -"speed": 15.0 +"speed": 20.0 }, { "frames": [{ "duration": 1.0, @@ -1948,7 +1949,7 @@ animations = [{ }], "loop": true, "name": &"side walking", -"speed": 25.0 +"speed": 38.0 }, { "frames": [{ "duration": 1.0, @@ -1986,7 +1987,7 @@ animations = [{ }], "loop": true, "name": &"side walking rake", -"speed": 15.0 +"speed": 16.0 }, { "frames": [{ "duration": 1.0, @@ -2024,7 +2025,7 @@ animations = [{ }], "loop": true, "name": &"side walking simplified", -"speed": 15.0 +"speed": 16.0 }, { "frames": [{ "duration": 1.0, @@ -2062,38 +2063,41 @@ animations = [{ }], "loop": true, "name": &"side walking wateringcan", -"speed": 11.0 +"speed": 16.0 }] -[node name="Player2d" type="Node2D" node_paths=PackedStringArray("_farmingControls", "_player2d")] +[node name="Vesna" type="Node2D" node_paths=PackedStringArray("_farmingControls", "_player2d", "_vesnaAnimations")] y_sort_enabled = true script = ExtResource("1_yd5ep") _farmingControls = NodePath("FarmingControls") _player2d = NodePath("CharacterBody2D") +_vesnaAnimations = NodePath("CharacterBody2D/visuals/Animated Sprites") -[node name="CharacterBody2D" type="CharacterBody2D" parent="." node_paths=PackedStringArray("_sprite", "_wateringParticles") groups=["PlantGrowing"]] +[node name="CharacterBody2D" type="CharacterBody2D" parent="." groups=["PlantGrowing"]] position = Vector2(0, 374) collision_layer = 4 collision_mask = 3 script = ExtResource("2_1vqmv") -_speed = 1500.0 -_sprite = NodePath("visuals/Animated Sprites") -_wateringParticles = NodePath("../pouring water vfx") [node name="CollisionShape2D" type="CollisionShape2D" parent="CharacterBody2D"] +visible = false z_index = 1 y_sort_enabled = true position = Vector2(-24, -13) shape = SubResource("CircleShape2D_ssqtd") debug_color = Color(0.923708, 0.202722, 0.475262, 0.42) -[node name="visuals" type="Node2D" parent="CharacterBody2D"] +[node name="visuals" type="Node2D" parent="CharacterBody2D" node_paths=PackedStringArray("_sprite", "_wateringParticles")] position = Vector2(0, -374) +script = ExtResource("3_f6xmn") +_sprite = NodePath("Animated Sprites") +_wateringParticles = NodePath("../../pouring water vfx") [node name="Animated Sprites" type="AnimatedSprite2D" parent="CharacterBody2D/visuals"] position = Vector2(0, 450) sprite_frames = SubResource("SpriteFrames_4yiyq") -animation = &"front walking backpack" +animation = &"side walking wateringcan" +frame_progress = 0.130831 offset = Vector2(0, -450) [node name="Hoe" type="Sprite2D" parent="CharacterBody2D/visuals"] @@ -2193,6 +2197,11 @@ scale_amount_max = 0.8 color = Color(0.400601, 0.62444, 0.791217, 1) hue_variation_max = 0.4 +[node name="DialogicToggle" type="Node2D" parent="." node_paths=PackedStringArray("itemToToggle")] +scale = Vector2(0.7, 0.7) +script = ExtResource("819_4na52") +itemToToggle = NodePath("../CharacterBody2D/visuals/Animated Sprites") + [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"] diff --git a/prefabs/characters/Yeli.tscn b/prefabs/characters/Yeli.tscn index bae482c..16de2cb 100644 --- a/prefabs/characters/Yeli.tscn +++ b/prefabs/characters/Yeli.tscn @@ -192,22 +192,14 @@ y_sort_enabled = true script = ExtResource("1_hn8at") _sprite = NodePath("TalkingControl/AnimatedSprite") -[node name="InteractionArea" parent="." instance=ExtResource("42_ahrat")] +[node name="InteractionArea" parent="." node_paths=PackedStringArray("_spriteToOutline") instance=ExtResource("42_ahrat")] position = Vector2(0, -450) scale = Vector2(2.805, 2.805) +_spriteToOutline = NodePath("../TalkingControl/AnimatedSprite") [node name="CollisionShape3D" parent="InteractionArea/Area2D" index="0"] shape = SubResource("CircleShape2D_at1n1") -[node name="Label" parent="InteractionArea" index="1"] -custom_minimum_size = Vector2(10, 10) -offset_left = -127.273 -offset_top = -245.633 -offset_right = 119.727 -offset_bottom = -142.633 -theme_override_font_sizes/font_size = 60 -text = "[E] talk" - [node name="TalkingControl" type="Node2D" parent="."] [node name="AnimatedSprite" type="AnimatedSprite2D" parent="TalkingControl"] @@ -230,6 +222,11 @@ position = Vector2(0, -172) position = Vector2(0, 94) shape = SubResource("CapsuleShape2D_aqu1t") +[node name="DialogicToggle" type="Node2D" parent="." node_paths=PackedStringArray("itemToToggle")] +scale = Vector2(0.7, 0.7) +script = ExtResource("44_aqu1t") +itemToToggle = NodePath("../TalkingControl/AnimatedSprite") + [connection signal="Talking" from="." to="Dialogic starter" method="open"] [connection signal="Interacted" from="InteractionArea" to="." method="ToggleTalking"] [connection signal="timelineEnded" from="Dialogic starter/DialogicToggle" to="." method="ToggleTalking"] diff --git a/prefabs/farm/beet_field.tscn b/prefabs/farm/beet_field.tscn index 3b94f13..41781fc 100644 --- a/prefabs/farm/beet_field.tscn +++ b/prefabs/farm/beet_field.tscn @@ -1,7 +1,8 @@ -[gd_scene load_steps=13 format=3 uid="uid://d4m5iy5mwqpq3"] +[gd_scene load_steps=14 format=3 uid="uid://d4m5iy5mwqpq3"] [ext_resource type="PackedScene" uid="uid://cqc72e4hq6bcd" path="res://prefabs/interactions/interaction_area_2d.tscn" id="1_tp1yj"] [ext_resource type="Script" uid="uid://bdffon388rkty" path="res://scripts/CSharp/Common/Farming/FieldBehaviour2D.cs" id="2_c6u1a"] +[ext_resource type="Material" uid="uid://blch5kdhkbj75" path="res://art/materials/simple_interactable_outline.tres" id="2_pdgar"] [ext_resource type="Texture2D" uid="uid://cgmu3qlovdr22" path="res://art/masks/field_outline_1.png" id="3_b5av1"] [ext_resource type="Texture2D" uid="uid://eg5ej0mtuac" path="res://art/masks/field_outline_2.png" id="4_yav45"] [ext_resource type="Texture2D" uid="uid://djpigvoyadvjs" path="res://art/masks/field_outline_3.png" id="5_pdgar"] @@ -12,16 +13,18 @@ [ext_resource type="Script" uid="uid://dnipeibppjirs" path="res://scripts/CSharp/Common/NPC/DialogicOverlayStarter.cs" id="10_yav45"] [ext_resource type="Script" uid="uid://drle5aies8ye4" path="res://scripts/GdScript/dialogic_event_forward.gd" id="11_yav45"] -[sub_resource type="CircleShape2D" id="CircleShape2D_tp1yj"] +[sub_resource type="CircleShape2D" id="CircleShape2D_a35l4"] resource_local_to_scene = true radius = 300.0 [node name="BaseField" type="Node2D"] -[node name="InteractionArea2" parent="." instance=ExtResource("1_tp1yj")] +[node name="InteractionArea2" parent="." node_paths=PackedStringArray("_spriteToOutline") instance=ExtResource("1_tp1yj")] visible = false z_index = 1 scale = Vector2(2.225, 2.225) +_outlineMaterial = ExtResource("2_pdgar") +_spriteToOutline = NodePath("../FieldBehaviour/MaskedField") [node name="FieldBehaviour" type="Sprite2D" parent="." node_paths=PackedStringArray("_fieldSprite", "_maskSprite", "_growingCollider")] z_index = -1 @@ -50,8 +53,8 @@ _field = NodePath("..") [node name="01" parent="FieldBehaviour/BeetRoot/BigPlant" index="0"] visible = true -[node name="CollisionShape3D" parent="FieldBehaviour/BeetRoot/ReadyPlantInventoryItem/InteractionArea2/Area2D" index="0"] -shape = SubResource("CircleShape2D_tp1yj") +[node name="CollisionShape3D" parent="FieldBehaviour/BeetRoot/ReadyPlantInventoryItem/PickupInteractionArea/Area2D" index="0"] +shape = SubResource("CircleShape2D_a35l4") [node name="01" parent="FieldBehaviour/BeetRoot/ReadyPlantInventoryItem/ReadyPlant" index="0"] scale = Vector2(3, 3) @@ -84,4 +87,4 @@ eventName = "MagicWord" [editable path="FieldBehaviour/BeetRoot"] [editable path="FieldBehaviour/BeetRoot/ReadyPlantInventoryItem"] -[editable path="FieldBehaviour/BeetRoot/ReadyPlantInventoryItem/InteractionArea2"] +[editable path="FieldBehaviour/BeetRoot/ReadyPlantInventoryItem/PickupInteractionArea"] diff --git a/prefabs/farm/beet_plant.tscn b/prefabs/farm/beet_plant.tscn index 2621373..9ab0020 100644 --- a/prefabs/farm/beet_plant.tscn +++ b/prefabs/farm/beet_plant.tscn @@ -20,7 +20,7 @@ shader_parameter/distortion = 0.0 shader_parameter/heightOffset = 0.635 shader_parameter/offset = 0.0 -[sub_resource type="CircleShape2D" id="CircleShape2D_2tt5u"] +[sub_resource type="CircleShape2D" id="CircleShape2D_rvwu0"] resource_local_to_scene = true radius = 300.0 @@ -126,6 +126,8 @@ region_rect = Rect2(18, 311, 129, 142) [node name="InteractionArea" parent="." instance=ExtResource("4_cfgyx")] position = Vector2(0, 2.3) +_useOutline = false +_useSprite = false [node name="ReadyPlantInventoryItem" parent="." instance=ExtResource("5_25lcb")] position = Vector2(0, 2.3) @@ -140,8 +142,8 @@ visible = false [node name="PickupErrorLabel" parent="ReadyPlantInventoryItem" index="2"] visible = false -[node name="CollisionShape3D" parent="ReadyPlantInventoryItem/InteractionArea2/Area2D" index="0"] -shape = SubResource("CircleShape2D_2tt5u") +[node name="CollisionShape3D" parent="ReadyPlantInventoryItem/PickupInteractionArea/Area2D" index="0"] +shape = SubResource("CircleShape2D_rvwu0") [node name="Icon" parent="ReadyPlantInventoryItem" index="4"] visible = false @@ -202,4 +204,4 @@ hue_variation_max = 0.4 [connection signal="Interacted" from="InteractionArea" to="." method="Grow"] [editable path="ReadyPlantInventoryItem"] -[editable path="ReadyPlantInventoryItem/InteractionArea2"] +[editable path="ReadyPlantInventoryItem/PickupInteractionArea"] diff --git a/prefabs/farm/duck.tscn b/prefabs/farm/duck.tscn index 5c37de3..c83462a 100644 --- a/prefabs/farm/duck.tscn +++ b/prefabs/farm/duck.tscn @@ -1,4 +1,4 @@ -[gd_scene load_steps=23 format=3 uid="uid://muuxxgvx33fp"] +[gd_scene load_steps=25 format=3 uid="uid://muuxxgvx33fp"] [ext_resource type="Script" uid="uid://7m1rt7agb6rm" path="res://scripts/CSharp/Common/Temp/MVPDuck.cs" id="1_54k4r"] [ext_resource type="Texture2D" uid="uid://hvchk6t0xe7j" path="res://art/animals/Ente.png" id="1_cgxhx"] @@ -16,6 +16,7 @@ [ext_resource type="Animation" uid="uid://b3dwd88uvfk1k" path="res://art/animals/duck_flapFlap.res" id="14_uo3dh"] [ext_resource type="AudioStream" uid="uid://bsr5m8u2sle5k" path="res://audio/sfx/Animals/SFX_Duck_Wings_07.wav" id="14_xhefb"] [ext_resource type="PackedScene" uid="uid://cqc72e4hq6bcd" path="res://prefabs/interactions/interaction_area_2d.tscn" id="15_uo3dh"] +[ext_resource type="Material" uid="uid://blch5kdhkbj75" path="res://art/materials/simple_interactable_outline.tres" id="16_nxoeu"] [sub_resource type="AudioStreamRandomizer" id="AudioStreamRandomizer_sot7i"] streams_count = 4 @@ -39,7 +40,7 @@ length = 0.001 tracks/0/type = "value" tracks/0/imported = false tracks/0/enabled = true -tracks/0/path = NodePath("bodyLookingRight/wingR:rotation") +tracks/0/path = NodePath("SubViewport/bodyLookingRight/wingR:rotation") tracks/0/interp = 1 tracks/0/loop_wrap = true tracks/0/keys = { @@ -51,7 +52,7 @@ tracks/0/keys = { tracks/1/type = "value" tracks/1/imported = false tracks/1/enabled = true -tracks/1/path = NodePath("bodyLookingRight/wingL:rotation") +tracks/1/path = NodePath("SubViewport/bodyLookingRight/wingL:rotation") tracks/1/interp = 1 tracks/1/loop_wrap = true tracks/1/keys = { @@ -63,7 +64,7 @@ tracks/1/keys = { tracks/2/type = "value" tracks/2/imported = false tracks/2/enabled = true -tracks/2/path = NodePath("bodyLookingRight/head:rotation") +tracks/2/path = NodePath("SubViewport/bodyLookingRight/head:rotation") tracks/2/interp = 1 tracks/2/loop_wrap = true tracks/2/keys = { @@ -75,7 +76,7 @@ tracks/2/keys = { tracks/3/type = "value" tracks/3/imported = false tracks/3/enabled = true -tracks/3/path = NodePath("bodyLookingRight/head/beak upper:rotation") +tracks/3/path = NodePath("SubViewport/bodyLookingRight/head/beak upper:rotation") tracks/3/interp = 1 tracks/3/loop_wrap = true tracks/3/keys = { @@ -87,7 +88,7 @@ tracks/3/keys = { tracks/4/type = "value" tracks/4/imported = false tracks/4/enabled = true -tracks/4/path = NodePath("bodyLookingRight/head/beak lower:rotation") +tracks/4/path = NodePath("SubViewport/bodyLookingRight/head/beak lower:rotation") tracks/4/interp = 1 tracks/4/loop_wrap = true tracks/4/keys = { @@ -135,6 +136,9 @@ _data = { resource_local_to_scene = true radius = 443.041 +[sub_resource type="ViewportTexture" id="ViewportTexture_4830j"] +viewport_path = NodePath("SubViewport") + [node name="Duck" type="Node2D" node_paths=PackedStringArray("_animationPlayer")] z_index = 1 y_sort_enabled = true @@ -157,16 +161,28 @@ libraries = { &"": SubResource("AnimationLibrary_54k4r") } -[node name="bodyLookingRight" type="Node2D" parent="."] -z_index = 1 -y_sort_enabled = true -position = Vector2(-5, -537) +[node name="InteractionArea" parent="." node_paths=PackedStringArray("_spriteToOutline") instance=ExtResource("15_uo3dh")] +position = Vector2(18, -250) +_outlineMaterial = ExtResource("16_nxoeu") +_spriteToOutline = NodePath("../Duck rendered") + +[node name="CollisionShape3D" parent="InteractionArea/Area2D" index="0"] +shape = SubResource("CircleShape2D_uo3dh") + +[node name="Duck rendered" type="Sprite2D" parent="."] +position = Vector2(0, -250) +texture = SubResource("ViewportTexture_4830j") + +[node name="SubViewport" type="SubViewport" parent="."] +transparent_bg = true +size = Vector2i(400, 600) + +[node name="bodyLookingRight" type="Node2D" parent="SubViewport"] +position = Vector2(200, 550) rotation = 0.0135349 -[node name="head" type="Sprite2D" parent="bodyLookingRight"] -z_index = 1 -y_sort_enabled = true -position = Vector2(46.9624, 76.1606) +[node name="head" type="Sprite2D" parent="SubViewport/bodyLookingRight"] +position = Vector2(45.706, -451.714) rotation = 0.284615 scale = Vector2(1, 0.997) skew = 0.024546 @@ -175,9 +191,8 @@ offset = Vector2(25.2328, -23.0689) region_enabled = true region_rect = Rect2(45, 24, 87, 82) -[node name="beak upper" type="Sprite2D" parent="bodyLookingRight/head"] +[node name="beak upper" type="Sprite2D" parent="SubViewport/bodyLookingRight/head"] z_index = 1 -y_sort_enabled = true position = Vector2(50.669, -7.16257) rotation = -0.0427724 scale = Vector2(0.62715, 0.62715) @@ -186,9 +201,7 @@ offset = Vector2(57.1263, -7.47815) region_enabled = true region_rect = Rect2(292, 37, 152, 98) -[node name="beak lower" type="Sprite2D" parent="bodyLookingRight/head"] -z_index = 1 -y_sort_enabled = true +[node name="beak lower" type="Sprite2D" parent="SubViewport/bodyLookingRight/head"] position = Vector2(47.9076, -15.7341) rotation = 0.0364142 scale = Vector2(0.58615, 0.58615) @@ -197,30 +210,24 @@ offset = Vector2(60.4601, 37.8134) region_enabled = true region_rect = Rect2(295, 170, 145, 39) -[node name="torso" type="Sprite2D" parent="bodyLookingRight"] -z_index = 1 -y_sort_enabled = true -position = Vector2(5.90997, 355.352) +[node name="torso" type="Sprite2D" parent="SubViewport/bodyLookingRight"] +position = Vector2(4.65357, -172.523) scale = Vector2(1.07526, 1.01724) texture = ExtResource("1_cgxhx") offset = Vector2(2.87376, -131.092) region_enabled = true region_rect = Rect2(30, 168, 125, 326) -[node name="wingR" type="Sprite2D" parent="bodyLookingRight"] -z_index = 1 -y_sort_enabled = true -position = Vector2(-28, 262) +[node name="wingR" type="Sprite2D" parent="SubViewport/bodyLookingRight"] +position = Vector2(-29.2564, -265.875) rotation = -0.371117 texture = ExtResource("1_cgxhx") offset = Vector2(-50, 50) region_enabled = true region_rect = Rect2(196, 231, 180, 164) -[node name="wingL" type="Sprite2D" parent="bodyLookingRight"] -z_index = 1 -y_sort_enabled = true -position = Vector2(47.0695, 245.905) +[node name="wingL" type="Sprite2D" parent="SubViewport/bodyLookingRight"] +position = Vector2(45.8131, -281.97) rotation = -0.0925884 skew = -0.0345086 texture = ExtResource("1_cgxhx") @@ -228,10 +235,8 @@ offset = Vector2(-59.5924, 55.37) region_enabled = true region_rect = Rect2(196, 231, 180, 164) -[node name="underbelly" type="Sprite2D" parent="bodyLookingRight"] -z_index = 1 -y_sort_enabled = true -position = Vector2(-11.4038, 439.203) +[node name="underbelly" type="Sprite2D" parent="SubViewport/bodyLookingRight"] +position = Vector2(-12.6602, -88.6718) rotation = -2.98225 scale = Vector2(0.672245, 0.955267) skew = 0.0185422 @@ -240,8 +245,8 @@ offset = Vector2(26.4135, 70.6083) region_enabled = true region_rect = Rect2(196, 231, 180, 164) -[node name="leg left" type="Sprite2D" parent="bodyLookingRight"] -position = Vector2(36.2887, 300.645) +[node name="leg left" type="Sprite2D" parent="SubViewport/bodyLookingRight"] +position = Vector2(35.0323, -227.23) rotation = 2.42655 scale = Vector2(1.05221, 1.04106) skew = -0.0544101 @@ -249,7 +254,7 @@ texture = ExtResource("1_cgxhx") region_enabled = true region_rect = Rect2(196, 231, 177, 161) -[node name="left thigh" type="Sprite2D" parent="bodyLookingRight/leg left"] +[node name="left thigh" type="Sprite2D" parent="SubViewport/bodyLookingRight/leg left"] z_index = 1 y_sort_enabled = true position = Vector2(73.353, -69.771) @@ -259,7 +264,7 @@ texture = ExtResource("1_cgxhx") region_enabled = true region_rect = Rect2(368, 263, 81, 89) -[node name="left shin" type="Sprite2D" parent="bodyLookingRight/leg left/left thigh"] +[node name="left shin" type="Sprite2D" parent="SubViewport/bodyLookingRight/leg left/left thigh"] z_index = 1 y_sort_enabled = true position = Vector2(-5.71882, 19.9984) @@ -271,7 +276,7 @@ offset = Vector2(10, -50) region_enabled = true region_rect = Rect2(360, 361, 68, 126) -[node name="left foot" type="Sprite2D" parent="bodyLookingRight/leg left/left thigh/left shin"] +[node name="left foot" type="Sprite2D" parent="SubViewport/bodyLookingRight/leg left/left thigh/left shin"] z_index = 1 y_sort_enabled = true position = Vector2(15.1289, -77.6075) @@ -282,19 +287,15 @@ offset = Vector2(40, 40) region_enabled = true region_rect = Rect2(246, 393, 111, 111) -[node name="right leg" type="Sprite2D" parent="bodyLookingRight"] -z_index = 1 -y_sort_enabled = true -position = Vector2(-24, 364) +[node name="right leg" type="Sprite2D" parent="SubViewport/bodyLookingRight"] +position = Vector2(-25.2564, -163.875) rotation = -0.463741 scale = Vector2(1.07492, 1.01762) texture = ExtResource("1_cgxhx") region_enabled = true region_rect = Rect2(196, 231, 177, 161) -[node name="right thigh" type="Sprite2D" parent="bodyLookingRight/right leg"] -z_index = 1 -y_sort_enabled = true +[node name="right thigh" type="Sprite2D" parent="SubViewport/bodyLookingRight/right leg"] position = Vector2(-29.7603, 44.2374) rotation = 0.249342 scale = Vector2(0.625107, 0.655894) @@ -303,9 +304,7 @@ texture = ExtResource("1_cgxhx") region_enabled = true region_rect = Rect2(368, 263, 81, 89) -[node name="right shin" type="Sprite2D" parent="bodyLookingRight/right leg/right thigh"] -z_index = 1 -y_sort_enabled = true +[node name="right shin" type="Sprite2D" parent="SubViewport/bodyLookingRight/right leg/right thigh"] position = Vector2(-2.78734, 11.5692) rotation = 0.0689206 scale = Vector2(1.12016, 1.07128) @@ -315,9 +314,7 @@ offset = Vector2(-14.163, 37.0936) region_enabled = true region_rect = Rect2(360, 361, 68, 126) -[node name="right foot" type="Sprite2D" parent="bodyLookingRight/right leg/right thigh/right shin"] -z_index = 1 -y_sort_enabled = true +[node name="right foot" type="Sprite2D" parent="SubViewport/bodyLookingRight/right leg/right thigh/right shin"] position = Vector2(-20.0986, 67.7507) rotation = 0.14855 scale = Vector2(1.212, 1.212) @@ -326,17 +323,6 @@ offset = Vector2(40, 40) region_enabled = true region_rect = Rect2(246, 393, 111, 111) -[node name="InteractionArea" parent="." instance=ExtResource("15_uo3dh")] -position = Vector2(-3, -274) - -[node name="CollisionShape3D" parent="InteractionArea/Area2D" index="0"] -shape = SubResource("CircleShape2D_uo3dh") - -[node name="Label" parent="InteractionArea" index="1"] -modulate = Color(0, 0, 0, 1) -z_index = 1 -y_sort_enabled = true - [connection signal="Interacted" from="InteractionArea" to="." method="TransferToTargetAfterDelay"] [connection signal="Interacted" from="InteractionArea" to="Audio/NakNak" method="PlayOneShot"] diff --git a/prefabs/farm/tomato_field.tscn b/prefabs/farm/tomato_field.tscn index bbfe8ec..8f1e2bf 100644 --- a/prefabs/farm/tomato_field.tscn +++ b/prefabs/farm/tomato_field.tscn @@ -1,6 +1,5 @@ [gd_scene load_steps=10 format=3 uid="uid://b1d2e7ely6hyw"] -[ext_resource type="PackedScene" uid="uid://cqc72e4hq6bcd" path="res://prefabs/interactions/interaction_area_2d.tscn" id="1_jrdc4"] [ext_resource type="Script" uid="uid://bdffon388rkty" path="res://scripts/CSharp/Common/Farming/FieldBehaviour2D.cs" id="2_vl3uw"] [ext_resource type="Texture2D" uid="uid://cgmu3qlovdr22" path="res://art/masks/field_outline_1.png" id="3_uqkef"] [ext_resource type="Texture2D" uid="uid://eg5ej0mtuac" path="res://art/masks/field_outline_2.png" id="4_di17a"] @@ -9,16 +8,15 @@ [ext_resource type="Texture2D" uid="uid://ctvdxwgmfaj5c" path="res://art/farm/tilable grounds/böden/nasse farming erde.png" id="7_f504p"] [ext_resource type="PackedScene" uid="uid://gishbn0a8eke" path="res://prefabs/farm/tomato_plant.tscn" id="8_jrdc4"] -[sub_resource type="CircleShape2D" id="CircleShape2D_vl3uw"] +[sub_resource type="CircleShape2D" id="CircleShape2D_jrdc4"] resource_local_to_scene = true radius = 300.0 -[node name="BaseField" type="Node2D"] +[sub_resource type="CircleShape2D" id="CircleShape2D_l0vvv"] +resource_local_to_scene = true +radius = 300.0 -[node name="InteractionArea2" parent="." instance=ExtResource("1_jrdc4")] -visible = false -z_index = 1 -scale = Vector2(2.225, 2.225) +[node name="BaseField" type="Node2D"] [node name="FieldBehaviour" type="Sprite2D" parent="." node_paths=PackedStringArray("_fieldSprite", "_maskSprite", "_growingCollider")] z_index = -1 @@ -29,13 +27,18 @@ _maskSprite = NodePath("MaskedField") _maskTexture = Array[Texture2D]([ExtResource("3_uqkef"), ExtResource("4_di17a"), ExtResource("5_4a8nv")]) Tilled = ExtResource("6_l7j4c") Watered = ExtResource("7_f504p") -_growingCollider = NodePath("BasePlant2/InteractionArea") +_growingCollider = NodePath("BasePlant2/GrowingInteractionArea") [node name="BasePlant2" parent="FieldBehaviour" node_paths=PackedStringArray("_field") groups=["PlantGrowing"] instance=ExtResource("8_jrdc4")] +visible = false _field = NodePath("..") +_magicWordNeeded = false + +[node name="CollisionShape3D" parent="FieldBehaviour/BasePlant2/GrowingInteractionArea/Area2D" index="0"] +shape = SubResource("CircleShape2D_jrdc4") -[node name="CollisionShape3D" parent="FieldBehaviour/BasePlant2/ReadyPlantInventoryItem/InteractionArea2/Area2D" index="0"] -shape = SubResource("CircleShape2D_vl3uw") +[node name="CollisionShape3D" parent="FieldBehaviour/BasePlant2/ReadyPlantInventoryItem/PickupInteractionArea/Area2D" index="0"] +shape = SubResource("CircleShape2D_l0vvv") [node name="MaskedField" type="Sprite2D" parent="FieldBehaviour"] clip_children = 1 @@ -46,5 +49,6 @@ texture = ExtResource("4_di17a") texture = ExtResource("6_l7j4c") [editable path="FieldBehaviour/BasePlant2"] +[editable path="FieldBehaviour/BasePlant2/GrowingInteractionArea"] [editable path="FieldBehaviour/BasePlant2/ReadyPlantInventoryItem"] -[editable path="FieldBehaviour/BasePlant2/ReadyPlantInventoryItem/InteractionArea2"] +[editable path="FieldBehaviour/BasePlant2/ReadyPlantInventoryItem/PickupInteractionArea"] diff --git a/prefabs/farm/tomato_plant.tscn b/prefabs/farm/tomato_plant.tscn index 8f3e637..a342358 100644 --- a/prefabs/farm/tomato_plant.tscn +++ b/prefabs/farm/tomato_plant.tscn @@ -1,4 +1,4 @@ -[gd_scene load_steps=12 format=3 uid="uid://gishbn0a8eke"] +[gd_scene load_steps=13 format=3 uid="uid://gishbn0a8eke"] [ext_resource type="Script" uid="uid://cms357f23fmfy" path="res://scripts/CSharp/Common/Farming/PlantBehaviour2D.cs" id="1_66p1c"] [ext_resource type="Texture2D" uid="uid://dtr4uga5uspg" path="res://art/farm/farming/farmobjekte/tomaten/tomaten baby.png" id="2_vjw4j"] @@ -22,7 +22,11 @@ shader_parameter/distortion = 0.0 shader_parameter/heightOffset = 0.635 shader_parameter/offset = 0.0 -[sub_resource type="CircleShape2D" id="CircleShape2D_2tt5u"] +[sub_resource type="CircleShape2D" id="CircleShape2D_vjw4j"] +resource_local_to_scene = true +radius = 300.0 + +[sub_resource type="CircleShape2D" id="CircleShape2D_7hdur"] resource_local_to_scene = true radius = 300.0 @@ -100,7 +104,7 @@ region_enabled = true region_rect = Rect2(228, 600, 85, 92) [node name="BigPlant" type="Node2D" parent="."] -position = Vector2(0, 2) +position = Vector2(0, -300) [node name="01" type="Sprite2D" parent="BigPlant"] visible = false @@ -134,8 +138,13 @@ texture = ExtResource("4_hmj2d") region_enabled = true region_rect = Rect2(546, 697, 535, 687) -[node name="InteractionArea" parent="." instance=ExtResource("5_3j24b")] +[node name="GrowingInteractionArea" parent="." instance=ExtResource("5_3j24b")] position = Vector2(0, 2.3) +_useOutline = false +_useSprite = false + +[node name="CollisionShape3D" parent="GrowingInteractionArea/Area2D" index="0"] +shape = SubResource("CircleShape2D_vjw4j") [node name="ReadyPlantInventoryItem" parent="." instance=ExtResource("6_gdrin")] position = Vector2(0, 2.3) @@ -146,17 +155,23 @@ _blueprint = ExtResource("7_di4m0") [node name="ItemLabel" parent="ReadyPlantInventoryItem" index="1"] visible = false +z_index = 100 +text = "[E] harvest" [node name="PickupErrorLabel" parent="ReadyPlantInventoryItem" index="2"] visible = false -[node name="CollisionShape3D" parent="ReadyPlantInventoryItem/InteractionArea2/Area2D" index="0"] -shape = SubResource("CircleShape2D_2tt5u") +[node name="PickupInteractionArea" parent="ReadyPlantInventoryItem" index="3"] +visible = false + +[node name="CollisionShape3D" parent="ReadyPlantInventoryItem/PickupInteractionArea/Area2D" index="0"] +shape = SubResource("CircleShape2D_7hdur") [node name="Icon" parent="ReadyPlantInventoryItem" index="4"] visible = false [node name="ReadyPlant" type="Node2D" parent="ReadyPlantInventoryItem"] +position = Vector2(0, -400) [node name="01" type="Sprite2D" parent="ReadyPlantInventoryItem/ReadyPlant"] visible = false @@ -209,7 +224,8 @@ scale_amount_max = 0.1 color = Color(0.400601, 0.62444, 0.791217, 1) hue_variation_max = 0.4 -[connection signal="Interacted" from="InteractionArea" to="." method="Grow"] +[connection signal="Interacted" from="GrowingInteractionArea" to="." method="Grow"] +[editable path="GrowingInteractionArea"] [editable path="ReadyPlantInventoryItem"] -[editable path="ReadyPlantInventoryItem/InteractionArea2"] +[editable path="ReadyPlantInventoryItem/PickupInteractionArea"] diff --git a/prefabs/interactions/generic_item_on_ground_2d.tscn b/prefabs/interactions/generic_item_on_ground_2d.tscn index 2579b11..af32756 100644 --- a/prefabs/interactions/generic_item_on_ground_2d.tscn +++ b/prefabs/interactions/generic_item_on_ground_2d.tscn @@ -2,6 +2,7 @@ [ext_resource type="Script" uid="uid://btusf04xnywhm" path="res://scripts/CSharp/Common/Inventory/ItemOnGround2D.cs" id="1_tlhp6"] [ext_resource type="Script" uid="uid://c8suoi3i6kqai" path="res://scripts/CSharp/Common/Inventory/ItemOnGroundSpawnWith.cs" id="3_xu8me"] +[ext_resource type="Material" uid="uid://bv3m12duf0dj6" path="res://art/materials/inventory_interactable_outline.tres" id="4_harr4"] [ext_resource type="PackedScene" uid="uid://cqc72e4hq6bcd" path="res://prefabs/interactions/interaction_area_2d.tscn" id="4_xu8me"] [ext_resource type="Texture2D" uid="uid://cfxibry711o16" path="res://art/ui/UI/icons/icon-scythe.png" id="5_harr4"] @@ -15,10 +16,9 @@ default_font_size = 40 resource_local_to_scene = true radius = 300.0 -[sub_resource type="Theme" id="Theme_xu8me"] -default_font_size = 75 - [node name="GenericItemOnGround" type="Node2D"] +z_index = 1 +y_sort_enabled = true script = ExtResource("1_tlhp6") [node name="SpawnWithItem" type="Node" parent="."] @@ -43,25 +43,18 @@ theme = SubResource("Theme_harr4") text = "thewe waf a pwoblem wiph picking up te item UWU" autowrap_mode = 3 -[node name="InteractionArea2" parent="." instance=ExtResource("4_xu8me")] +[node name="PickupInteractionArea" parent="." node_paths=PackedStringArray("_spriteToOutline") instance=ExtResource("4_xu8me")] +_outlineMaterial = ExtResource("4_harr4") +_spriteToOutline = NodePath("../Icon") -[node name="CollisionShape3D" parent="InteractionArea2/Area2D" index="0"] +[node name="CollisionShape3D" parent="PickupInteractionArea/Area2D" index="0"] shape = SubResource("CircleShape2D_tlhp6") -[node name="Label" parent="InteractionArea2" index="1"] -z_index = 5 -offset_left = -68.0 -offset_top = -111.0 -offset_right = 75.0 -offset_bottom = -3.0 -theme = SubResource("Theme_xu8me") -vertical_alignment = 1 - [node name="Icon" type="Sprite2D" parent="."] position = Vector2(5, -300) scale = Vector2(0.868852, 0.868852) texture = ExtResource("5_harr4") -[connection signal="Interacted" from="InteractionArea2" to="." method="TryPickUp"] +[connection signal="Interacted" from="PickupInteractionArea" to="." method="TryPickUp"] -[editable path="InteractionArea2"] +[editable path="PickupInteractionArea"] diff --git a/prefabs/interactions/interaction_area_2d.tscn b/prefabs/interactions/interaction_area_2d.tscn index 4796490..36aece1 100644 --- a/prefabs/interactions/interaction_area_2d.tscn +++ b/prefabs/interactions/interaction_area_2d.tscn @@ -1,18 +1,20 @@ -[gd_scene load_steps=4 format=3 uid="uid://cqc72e4hq6bcd"] +[gd_scene load_steps=5 format=3 uid="uid://cqc72e4hq6bcd"] [ext_resource type="Script" uid="uid://ckp413wrub5fm" path="res://scripts/CSharp/Common/CharacterControls/InteractionArea2D.cs" id="1_5ajrf"] +[ext_resource type="Material" uid="uid://blch5kdhkbj75" path="res://art/materials/simple_interactable_outline.tres" id="2_qoey7"] [sub_resource type="CircleShape2D" id="CircleShape2D_npluf"] resource_local_to_scene = true radius = 300.0 [sub_resource type="Theme" id="Theme_5ajrf"] -default_font_size = 75 +default_font_size = 30 [node name="InteractionArea" type="Node2D" node_paths=PackedStringArray("_area", "_label")] script = ExtResource("1_5ajrf") _area = NodePath("Area2D") -_label = NodePath("Label") +_label = NodePath("Area2D/CanvasLayer/MarginContainer/Label") +_outlineMaterial = ExtResource("2_qoey7") [node name="Area2D" type="Area2D" parent="."] collision_mask = 4 @@ -20,15 +22,32 @@ collision_mask = 4 [node name="CollisionShape3D" type="CollisionShape2D" parent="Area2D"] shape = SubResource("CircleShape2D_npluf") -[node name="Label" type="Label" parent="."] +[node name="CanvasLayer" type="CanvasLayer" parent="Area2D"] + +[node name="MarginContainer" type="MarginContainer" parent="Area2D/CanvasLayer"] +anchors_preset = 3 +anchor_left = 1.0 +anchor_top = 1.0 +anchor_right = 1.0 +anchor_bottom = 1.0 +offset_left = -88.0 +offset_top = -100.0 +offset_right = 3.0 +offset_bottom = 3.0 +grow_horizontal = 0 +grow_vertical = 0 +theme_override_constants/margin_right = 20 +theme_override_constants/margin_bottom = 20 + +[node name="Label" type="Label" parent="Area2D/CanvasLayer/MarginContainer"] visible = false -offset_left = -46.0 -offset_top = -55.0 -offset_right = 45.0 -offset_bottom = 48.0 +layout_mode = 2 +size_flags_horizontal = 8 +size_flags_vertical = 8 theme = SubResource("Theme_5ajrf") text = "[E]" -horizontal_alignment = 1 +horizontal_alignment = 2 +vertical_alignment = 2 [connection signal="body_entered" from="Area2D" to="." method="OnPlayerEntered"] [connection signal="body_exited" from="Area2D" to="." method="OnPlayerExited"] diff --git a/project.godot b/project.godot index 305ff01..605770d 100644 --- a/project.godot +++ b/project.godot @@ -17,6 +17,7 @@ run/max_fps=120 boot_splash/fullsize=false boot_splash/image="uid://utam4axkvutc" config/icon="uid://b2smanpdo1y5e" +boot_splash/minimum_display_time=1000 [audio] @@ -30,40 +31,40 @@ InventoryManager="*res://scripts/CSharp/Common/Inventory/InventoryManager.cs" Signal_Debugger="*res://addons/SignalVisualizer/Debugger/SignalDebugger.gd" QuestManager="*res://scripts/CSharp/Common/Quest/QuestManager.cs" FightManagerAutoload="*res://prefabs/fight/fight_manager_autoload.tscn" +InputService="*res://scripts/CSharp/Common/Services/InputService.cs" [dialogic] directories/dch_directory={ -"Chuga": "res://dialog/Chuga.dch", -"Domovoi": "res://dialog/Domovoi.dch", -"Everyone": "res://dialog/Everyone.dch", -"Vesna2": "res://dialog/Vesna2.dch", -"Yeli": "res://dialog/Yeli.dch", -"defaulty_the_default_character": "res://dialog/defaulty_the_default_character.dch", -"semi_cat": "res://dialog/semi_cat.dch", -"vesna": "res://dialog/vesna.dch" +"Chuga": "res://dialog/Characters/Chuga.dch", +"Domovoi": "res://dialog/Characters/Domovoi.dch", +"Everyone": "res://dialog/Characters/Everyone.dch", +"Yeli": "res://dialog/Characters/Yeli.dch", +"defaulty_the_default_character": "res://dialog/Characters/defaulty_the_default_character.dch", +"semi_cat": "res://dialog/Characters/semi_cat.dch", +"vesna": "res://dialog/Characters/vesna.dch" } directories/dtl_directory={ "disclaimer": "res://dialog/disclaimer.dtl", -"quest1_ducks_end": "res://dialog/quest1_ducks_end.dtl", -"quest1_ducks_start": "res://dialog/quest1_ducks_start.dtl", -"quest2_tomatoes_end": "res://dialog/quest2_tomatoes_end.dtl", -"quest2_tomatoes_interim": "res://dialog/quest2_tomatoes_interim.dtl", -"quest2_tomatoes_start": "res://dialog/quest2_tomatoes_start.dtl", -"quest3_beets_end": "res://dialog/quest3_beets_end.dtl", -"quest3_beets_interim": "res://dialog/quest3_beets_interim.dtl", -"quest3_beets_start": "res://dialog/quest3_beets_start.dtl", -"quest4_dinner": "res://dialog/quest4_dinner.dtl", -"quest5_forest_end": "res://dialog/quest5_forest_end.dtl", -"quest5_forest_start": "res://dialog/quest5_forest_start.dtl", +"quest1_ducks_end": "res://dialog/quests/ducks/quest1_ducks_end.dtl", +"quest1_ducks_start": "res://dialog/quests/ducks/quest1_ducks_start.dtl", +"quest2_tomatoes_end": "res://dialog/quests/tomatoes/quest2_tomatoes_end.dtl", +"quest2_tomatoes_interim": "res://dialog/quests/tomatoes/quest2_tomatoes_interim.dtl", +"quest2_tomatoes_start": "res://dialog/quests/tomatoes/quest2_tomatoes_start.dtl", +"quest3_beets_end": "res://dialog/quests/beetroot/quest3_beets_end.dtl", +"quest3_beets_interim": "res://dialog/quests/beetroot/quest3_beets_interim.dtl", +"quest3_beets_start": "res://dialog/quests/beetroot/quest3_beets_start.dtl", +"quest4_dinner": "res://dialog/Scene2_farm_inside/quest4_dinner.dtl", +"quest5_forest_end": "res://dialog/quests/forest/quest5_forest_end.dtl", +"quest5_forest_start": "res://dialog/quests/forest/quest5_forest_start.dtl", "semi_cat": "res://dialog/semi_cat.dtl", "talk_to_plant": "res://dialog/talk_to_plant.dtl", "test_time_line": "res://dialog/test_time_line.dtl", -"yeli_intro_01": "res://dialog/yeli_intro_01.dtl", -"yeli_intro_02": "res://dialog/yeli_intro_02.dtl", -"yeli_intro_03": "res://dialog/yeli_intro_03.dtl", -"yeli_intro_04": "res://dialog/yeli_intro_04.dtl", -"yeli_intro_05": "res://dialog/yeli_intro_05.dtl" +"yeli_intro_01": "res://dialog/Scene1_farm_outside/yeli_intro_01.dtl", +"yeli_intro_02": "res://dialog/Scene1_farm_outside/yeli_intro_02.dtl", +"yeli_intro_03": "res://dialog/Scene1_farm_outside/yeli_intro_03.dtl", +"yeli_intro_04": "res://dialog/Scene1_farm_outside/yeli_intro_04.dtl", +"yeli_intro_05": "res://dialog/Scene1_farm_outside/yeli_intro_05.dtl" } variables={ "MAGICWORD": "Hokus Pokus!s", @@ -108,9 +109,8 @@ glossary/glossary_files=["res://dialog/farming_equipment_glossary.tres"] [display] -window/size/viewport_width=2000 -window/size/viewport_height=1000 -window/size/always_on_top=true +window/size/viewport_width=1980 +window/size/viewport_height=1020 window/stretch/mode="viewport" window/stretch/aspect="keep_height" diff --git a/scenes/Babushka_scene_bootstrap.tscn b/scenes/Babushka_scene_bootstrap.tscn index e50ff18..6ae60a7 100644 --- a/scenes/Babushka_scene_bootstrap.tscn +++ b/scenes/Babushka_scene_bootstrap.tscn @@ -5,6 +5,6 @@ [node name="BabushkaSceneBootstrap" type="Node2D"] [node name="BabushkaSceneStartMenu" parent="." instance=ExtResource("1_15ton")] -_sceneNamesToLoad = PackedStringArray("res://scenes/Babushka_scene_disclaimer.tscn") +_sceneNamesToLoad = PackedStringArray("res://scenes/Babushka_scene_farm_outside_2d.tscn") [node name="SceneParent" type="Node" parent="."] diff --git a/scenes/Babushka_scene_farm_outside_2d.tscn b/scenes/Babushka_scene_farm_outside_2d.tscn index 95c02c4..e9e8db8 100644 --- a/scenes/Babushka_scene_farm_outside_2d.tscn +++ b/scenes/Babushka_scene_farm_outside_2d.tscn @@ -1,4 +1,4 @@ -[gd_scene load_steps=102 format=3 uid="uid://gigb28qk8t12"] +[gd_scene load_steps=107 format=3 uid="uid://gigb28qk8t12"] [ext_resource type="PackedScene" uid="uid://c25udixd5m6l0" path="res://prefabs/characters/Player2D.tscn" id="1_7wfwe"] [ext_resource type="Texture2D" uid="uid://8sr11ex30n0m" path="res://art/mockups/Kenney_Backgrounds/Samples/uncolored_hills.png" id="2_7b2ri"] @@ -37,6 +37,7 @@ [ext_resource type="Resource" uid="uid://cndd64batns31" path="res://resources/items/wateringcan.tres" id="28_ipqaa"] [ext_resource type="Resource" uid="uid://datee0flk1e84" path="res://resources/items/scythe.tres" id="29_wtdui"] [ext_resource type="PackedScene" uid="uid://cgjc4wurbgimy" path="res://prefabs/UI/Inventory/Inventory.tscn" id="32_2nee2"] +[ext_resource type="Script" uid="uid://boehox1ydbcnx" path="res://scripts/CSharp/Common/Farming/WellBehaviour.cs" id="32_lbnqo"] [ext_resource type="Script" uid="uid://cssdu8viimwm6" path="res://scripts/CSharp/Common/SceneTransition.cs" id="34_e5b7x"] [ext_resource type="Texture2D" uid="uid://65e44yde224q" path="res://art/farm/Babushka_house_01.png" id="36_e5b7x"] [ext_resource type="AudioStream" uid="uid://cfqg50am0swb7" path="res://audio/Music/Farming_90BPM_69Bars_Loop.wav" id="37_8ey8m"] @@ -44,6 +45,7 @@ [ext_resource type="Shader" uid="uid://braevmqauoek7" path="res://shader/swaying_plant.gdshader" id="37_taxvr"] [ext_resource type="Texture2D" uid="uid://bq2wojyy4ptva" path="res://art/nature/baum märz 2025/sonnenblume7.png" id="38_2rjny"] [ext_resource type="AudioStream" uid="uid://fsiypqhql67w" path="res://audio/sfx/Farming/SFX_GettingWater_01.wav" id="39_di1ed"] +[ext_resource type="Texture2D" uid="uid://ccy6bwunhfvrf" path="res://art/farm/Babushka_house_frontDoor.png" id="39_lbnqo"] [ext_resource type="AudioStream" uid="uid://foyw26hq1qp5" path="res://audio/sfx/Farming/SFX_GettingWater_02.wav" id="40_ceriq"] [ext_resource type="Script" uid="uid://cfnrd5k1k0gxw" path="res://scripts/CSharp/Common/AudioPlayer.cs" id="40_w3jkj"] [ext_resource type="Texture2D" uid="uid://dgavbfci8x178" path="res://art/nature/grass/grass-1.png" id="41_apj51"] @@ -153,11 +155,23 @@ size = Vector2(1041, 368) resource_local_to_scene = true radius = 371.058 -[sub_resource type="CircleShape2D" id="CircleShape2D_2nee2"] +[sub_resource type="CircleShape2D" id="CircleShape2D_ycj14"] resource_local_to_scene = true radius = 300.0 -[sub_resource type="CircleShape2D" id="CircleShape2D_ipqaa"] +[sub_resource type="CircleShape2D" id="CircleShape2D_2065p"] +resource_local_to_scene = true +radius = 300.0 + +[sub_resource type="CircleShape2D" id="CircleShape2D_tm0yg"] +resource_local_to_scene = true +radius = 300.0 + +[sub_resource type="CircleShape2D" id="CircleShape2D_lbnqo"] +resource_local_to_scene = true +radius = 300.0 + +[sub_resource type="CircleShape2D" id="CircleShape2D_l4wxt"] resource_local_to_scene = true radius = 300.0 @@ -1011,7 +1025,7 @@ _timelinesToPlay = PackedStringArray("quest1_ducks_start", "quest2_tomatoes_star [node name="Vesna" parent="YSorted" node_paths=PackedStringArray("_fieldParent") instance=ExtResource("1_7wfwe")] z_index = 1 -position = Vector2(-2031, 2949) +position = Vector2(9322, 2018) _fieldParent = NodePath("../Farm visuals/FieldParent") _hoe = ExtResource("28_6b2nr") _wateringCan = ExtResource("28_ipqaa") @@ -1019,7 +1033,7 @@ _wateringCan = ExtResource("28_ipqaa") [node name="FarmingControls" parent="YSorted/Vesna" index="1" node_paths=PackedStringArray("_camera")] _camera = NodePath("../../../Camera2D") -[node name="Brünnen" type="Sprite2D" parent="YSorted"] +[node name="Brünnen" type="Sprite2D" parent="YSorted" node_paths=PackedStringArray("_interactionArea")] z_index = 1 y_sort_enabled = true material = SubResource("ShaderMaterial_2vojv") @@ -1028,6 +1042,8 @@ texture = ExtResource("21_ualyd") offset = Vector2(0, -800) region_enabled = true region_rect = Rect2(0, 0, 1504, 1686) +script = ExtResource("32_lbnqo") +_interactionArea = NodePath("InteractionArea") [node name="StaticBody2D" type="StaticBody2D" parent="YSorted/Brünnen"] collision_mask = 4 @@ -1036,7 +1052,9 @@ collision_mask = 4 position = Vector2(145.5, -224) shape = SubResource("RectangleShape2D_0sfl7") -[node name="InteractionArea" parent="YSorted/Brünnen" instance=ExtResource("27_klb81")] +[node name="InteractionArea" parent="YSorted/Brünnen" node_paths=PackedStringArray("_spriteToOutline") instance=ExtResource("27_klb81")] +_active = false +_spriteToOutline = NodePath("..") _id = 1 [node name="CollisionShape3D" parent="YSorted/Brünnen/InteractionArea/Area2D" index="0"] @@ -1050,8 +1068,8 @@ position = Vector2(6095, 2087) [node name="SpawnWithItem" parent="YSorted/HoeGenericPickup" index="0"] _blueprint = ExtResource("26_ipqaa") -[node name="CollisionShape3D" parent="YSorted/HoeGenericPickup/InteractionArea2/Area2D" index="0"] -shape = SubResource("CircleShape2D_2nee2") +[node name="CollisionShape3D" parent="YSorted/HoeGenericPickup/PickupInteractionArea/Area2D" index="0"] +shape = SubResource("CircleShape2D_ycj14") [node name="CanGenericPickup" parent="YSorted" instance=ExtResource("25_hukxv")] position = Vector2(8192, 3507) @@ -1059,11 +1077,11 @@ position = Vector2(8192, 3507) [node name="SpawnWithItem" parent="YSorted/CanGenericPickup" index="0"] _blueprint = ExtResource("28_ipqaa") -[node name="InteractionArea2" parent="YSorted/CanGenericPickup" index="3"] -position = Vector2(0, -159) +[node name="CollisionShape3D" parent="YSorted/CanGenericPickup/PickupInteractionArea/Area2D" index="0"] +shape = SubResource("CircleShape2D_2065p") -[node name="CollisionShape3D" parent="YSorted/CanGenericPickup/InteractionArea2/Area2D" index="0"] -shape = SubResource("CircleShape2D_ipqaa") +[node name="Icon" parent="YSorted/CanGenericPickup" index="4"] +offset = Vector2(0, -50) [node name="RakeGenericPickup" parent="YSorted" instance=ExtResource("25_hukxv")] position = Vector2(8391, 2060) @@ -1071,8 +1089,8 @@ position = Vector2(8391, 2060) [node name="SpawnWithItem" parent="YSorted/RakeGenericPickup" index="0"] _blueprint = ExtResource("28_6b2nr") -[node name="CollisionShape3D" parent="YSorted/RakeGenericPickup/InteractionArea2/Area2D" index="0"] -shape = SubResource("CircleShape2D_ipqaa") +[node name="CollisionShape3D" parent="YSorted/RakeGenericPickup/PickupInteractionArea/Area2D" index="0"] +shape = SubResource("CircleShape2D_tm0yg") [node name="ScytheGenericPickup" parent="YSorted" instance=ExtResource("25_hukxv")] visible = false @@ -1081,8 +1099,8 @@ position = Vector2(15642, 2158) [node name="SpawnWithItem" parent="YSorted/ScytheGenericPickup" index="0"] _blueprint = ExtResource("29_wtdui") -[node name="CollisionShape3D" parent="YSorted/ScytheGenericPickup/InteractionArea2/Area2D" index="0"] -shape = SubResource("CircleShape2D_ipqaa") +[node name="CollisionShape3D" parent="YSorted/ScytheGenericPickup/PickupInteractionArea/Area2D" index="0"] +shape = SubResource("CircleShape2D_lbnqo") [node name="ShovelGenericPickup" parent="YSorted" instance=ExtResource("25_hukxv")] visible = false @@ -1091,8 +1109,8 @@ position = Vector2(5454, 2049) [node name="SpawnWithItem" parent="YSorted/ShovelGenericPickup" index="0"] _blueprint = ExtResource("27_ipqaa") -[node name="CollisionShape3D" parent="YSorted/ShovelGenericPickup/InteractionArea2/Area2D" index="0"] -shape = SubResource("CircleShape2D_ipqaa") +[node name="CollisionShape3D" parent="YSorted/ShovelGenericPickup/PickupInteractionArea/Area2D" index="0"] +shape = SubResource("CircleShape2D_l4wxt") [node name="Farm visuals" type="Node2D" parent="YSorted"] position = Vector2(-60, 122) @@ -1115,11 +1133,17 @@ collision_mask = 6 position = Vector2(-252.56, 231.32) polygon = PackedVector2Array(247.227, 43.5123, 44.7822, 43.5123, -87.2178, 45.123, -104.329, -55.2797, -154.107, -73.5347, -160.107, -380.38, -175.44, -400.783, -63.44, -512.461, 97.8934, -541.991, 261.671, -599.172, 374.782, -526.421, 502.338, -526.421, 637.893, -396.488, 598.56, -360.783, 596.338, -58.2327, 528.782, -58.2327, 501.449, 45.9283) -[node name="EnterHouseInteraction" parent="YSorted/Farm visuals/Static" instance=ExtResource("27_klb81")] +[node name="EnterHouseInteraction" parent="YSorted/Farm visuals/Static" node_paths=PackedStringArray("_spriteToOutline") instance=ExtResource("27_klb81")] position = Vector2(5839, 2349) scale = Vector2(2.425, 2.425) +_spriteToOutline = NodePath("DoorSprite") _id = 0 +[node name="DoorSprite" type="Sprite2D" parent="YSorted/Farm visuals/Static/EnterHouseInteraction"] +position = Vector2(0.412364, -33.1959) +scale = Vector2(1.8649, 1.54554) +texture = ExtResource("39_lbnqo") + [node name="greenery" type="Node2D" parent="YSorted/Farm visuals/Static"] [node name="left side" type="Node2D" parent="YSorted/Farm visuals/Static/greenery"] @@ -2071,10 +2095,12 @@ rotation = 1.5708 scale = Vector2(0.1, 10.8) texture = ExtResource("21_if5vh") -[node name="FieldParent" type="Node2D" parent="YSorted/Farm visuals"] +[node name="FieldParent" type="Node2D" parent="YSorted/Farm visuals" node_paths=PackedStringArray("fields", "_allowedArea")] position = Vector2(53, 20) scale = Vector2(1, 0.993819) script = ExtResource("25_0qu0h") +fields = {} +_allowedArea = NodePath("Area2D") metadata/_custom_type_script = "uid://dhxtdhfqx3bte" [node name="Area2D" type="Area2D" parent="YSorted/Farm visuals/FieldParent"] @@ -2123,34 +2149,48 @@ position = Vector2(-106.663, 182.891) shape = SubResource("RectangleShape2D_ycj14") [node name="ducks" type="Node2D" parent="YSorted"] +z_index = 1 +y_sort_enabled = true script = ExtResource("49_uxa2m") _goal = 6 [node name="Duck2" parent="YSorted/ducks" node_paths=PackedStringArray("_penTarget") instance=ExtResource("62_i36hd")] +z_index = 0 +y_sort_enabled = false position = Vector2(4374, 2652) _penTarget = NodePath("../../pen/penSlot1") [node name="Duck3" parent="YSorted/ducks" node_paths=PackedStringArray("_penTarget") instance=ExtResource("62_i36hd")] +z_index = 0 +y_sort_enabled = false position = Vector2(9259, 3194) _penTarget = NodePath("../../pen/penSlot2") [node name="Duck4" parent="YSorted/ducks" node_paths=PackedStringArray("_penTarget") instance=ExtResource("62_i36hd")] +z_index = 0 +y_sort_enabled = false position = Vector2(13441, 3612) rotation = 3.14159 scale = Vector2(1, -1) _penTarget = NodePath("../../pen/penSlot3") [node name="Duck5" parent="YSorted/ducks" node_paths=PackedStringArray("_penTarget") instance=ExtResource("62_i36hd")] +z_index = 0 +y_sort_enabled = false position = Vector2(15330, 2487) rotation = 3.14159 scale = Vector2(1, -1) _penTarget = NodePath("../../pen/penSlot4") [node name="Duck6" parent="YSorted/ducks" node_paths=PackedStringArray("_penTarget") instance=ExtResource("62_i36hd")] +z_index = 0 +y_sort_enabled = false position = Vector2(232, 2862) _penTarget = NodePath("../../pen/penSlot5") [node name="Duck7" parent="YSorted/ducks" node_paths=PackedStringArray("_penTarget") instance=ExtResource("62_i36hd")] +z_index = 0 +y_sort_enabled = false position = Vector2(2409, 3958) rotation = 3.14159 scale = Vector2(1, -1) @@ -2185,41 +2225,67 @@ position = Vector2(-4659, 2897) position = Vector2(-5016, 3361) [node name="trash" type="Node2D" parent="YSorted"] +z_index = 1 +y_sort_enabled = true [node name="trashObject" parent="YSorted/trash" instance=ExtResource("53_ycj14")] +z_index = 0 +y_sort_enabled = false position = Vector2(1269, 3170) [node name="trashObject2" parent="YSorted/trash" instance=ExtResource("53_ycj14")] +z_index = 0 +y_sort_enabled = false position = Vector2(3183, 2369) +offset = Vector2(1, -50) region_rect = Rect2(207, 1184, 149, 142) [node name="trashObject3" parent="YSorted/trash" instance=ExtResource("53_ycj14")] +z_index = 0 +y_sort_enabled = false position = Vector2(4724, 3519) +offset = Vector2(1, -50) region_rect = Rect2(400, 1053, 163, 141) [node name="trashObject4" parent="YSorted/trash" instance=ExtResource("53_ycj14")] +z_index = 0 +y_sort_enabled = false position = Vector2(5385, 3391) +offset = Vector2(1, -50) region_rect = Rect2(1048, 1092, 348, 106) [node name="trashObject5" parent="YSorted/trash" instance=ExtResource("53_ycj14")] +z_index = 0 +y_sort_enabled = false position = Vector2(8051, 2541) +offset = Vector2(1, -50) region_rect = Rect2(531, 1207, 176, 167) [node name="trashObject6" parent="YSorted/trash" instance=ExtResource("53_ycj14")] +z_index = 0 +y_sort_enabled = false position = Vector2(9629, 3312) +offset = Vector2(1, -50) region_rect = Rect2(207, 1184, 149, 142) [node name="trashObject7" parent="YSorted/trash" instance=ExtResource("53_ycj14")] +z_index = 0 +y_sort_enabled = false position = Vector2(12050, 3391) [node name="trashObject8" parent="YSorted/trash" instance=ExtResource("53_ycj14")] +z_index = 0 +y_sort_enabled = false position = Vector2(14589, 2505) rotation = 1.77025 region_rect = Rect2(629, 81, 227, 829) [node name="trashObject9" parent="YSorted/trash" instance=ExtResource("53_ycj14")] -position = Vector2(15197, 3447) +z_index = 0 +y_sort_enabled = false +position = Vector2(15322, 3472) rotation = 1.77025 +offset = Vector2(0, 0) region_rect = Rect2(1048, 1092, 348, 106) [node name="CanvasLayer" parent="." instance=ExtResource("32_2nee2")] @@ -2305,14 +2371,13 @@ script = ExtResource("40_w3jkj") [editable path="YSorted/Vesna"] [editable path="YSorted/Brünnen/InteractionArea"] [editable path="YSorted/HoeGenericPickup"] -[editable path="YSorted/HoeGenericPickup/InteractionArea2"] +[editable path="YSorted/HoeGenericPickup/PickupInteractionArea"] [editable path="YSorted/CanGenericPickup"] -[editable path="YSorted/CanGenericPickup/InteractionArea2"] +[editable path="YSorted/CanGenericPickup/PickupInteractionArea"] [editable path="YSorted/RakeGenericPickup"] -[editable path="YSorted/RakeGenericPickup/InteractionArea2"] +[editable path="YSorted/RakeGenericPickup/PickupInteractionArea"] [editable path="YSorted/ScytheGenericPickup"] -[editable path="YSorted/ScytheGenericPickup/InteractionArea2"] +[editable path="YSorted/ScytheGenericPickup/PickupInteractionArea"] [editable path="YSorted/ShovelGenericPickup"] -[editable path="YSorted/ShovelGenericPickup/InteractionArea2"] -[editable path="YSorted/trash/trashObject"] +[editable path="YSorted/ShovelGenericPickup/PickupInteractionArea"] [editable path="CanvasLayer"] diff --git a/scenes/Babushka_scene_farm_outside_2d_ducksCollected.tscn b/scenes/Babushka_scene_farm_outside_2d_ducksCollected.tscn index 7f158c4..a7e1dbc 100644 --- a/scenes/Babushka_scene_farm_outside_2d_ducksCollected.tscn +++ b/scenes/Babushka_scene_farm_outside_2d_ducksCollected.tscn @@ -1,4 +1,4 @@ -[gd_scene load_steps=100 format=3 uid="uid://cic8y0mdk3vd2"] +[gd_scene load_steps=103 format=3 uid="uid://cic8y0mdk3vd2"] [ext_resource type="Script" uid="uid://cssdu8viimwm6" path="res://scripts/CSharp/Common/SceneTransition.cs" id="1_gwe0p"] [ext_resource type="Script" uid="uid://bqomwxclsbhd3" path="res://scripts/CSharp/Common/Camera/CameraController.cs" id="2_1kqg8"] @@ -151,11 +151,23 @@ size = Vector2(1041, 368) resource_local_to_scene = true radius = 371.058 -[sub_resource type="CircleShape2D" id="CircleShape2D_2nee2"] +[sub_resource type="CircleShape2D" id="CircleShape2D_tkk2w"] resource_local_to_scene = true radius = 300.0 -[sub_resource type="CircleShape2D" id="CircleShape2D_ipqaa"] +[sub_resource type="CircleShape2D" id="CircleShape2D_gwe0p"] +resource_local_to_scene = true +radius = 300.0 + +[sub_resource type="CircleShape2D" id="CircleShape2D_1kqg8"] +resource_local_to_scene = true +radius = 300.0 + +[sub_resource type="CircleShape2D" id="CircleShape2D_6nf5r"] +resource_local_to_scene = true +radius = 300.0 + +[sub_resource type="CircleShape2D" id="CircleShape2D_2532c"] resource_local_to_scene = true radius = 300.0 @@ -1044,8 +1056,8 @@ position = Vector2(6095, 2087) [node name="SpawnWithItem" parent="YSorted/HoeGenericPickup" index="0"] _blueprint = ExtResource("34_n176s") -[node name="CollisionShape3D" parent="YSorted/HoeGenericPickup/InteractionArea2/Area2D" index="0"] -shape = SubResource("CircleShape2D_2nee2") +[node name="CollisionShape3D" parent="YSorted/HoeGenericPickup/PickupInteractionArea/Area2D" index="0"] +shape = SubResource("CircleShape2D_tkk2w") [node name="CanGenericPickup" parent="YSorted" instance=ExtResource("33_tml8r")] position = Vector2(8192, 3507) @@ -1053,11 +1065,8 @@ position = Vector2(8192, 3507) [node name="SpawnWithItem" parent="YSorted/CanGenericPickup" index="0"] _blueprint = ExtResource("30_te7n5") -[node name="InteractionArea2" parent="YSorted/CanGenericPickup" index="3"] -position = Vector2(0, -159) - -[node name="CollisionShape3D" parent="YSorted/CanGenericPickup/InteractionArea2/Area2D" index="0"] -shape = SubResource("CircleShape2D_ipqaa") +[node name="CollisionShape3D" parent="YSorted/CanGenericPickup/PickupInteractionArea/Area2D" index="0"] +shape = SubResource("CircleShape2D_gwe0p") [node name="RakeGenericPickup" parent="YSorted" instance=ExtResource("33_tml8r")] position = Vector2(8391, 2060) @@ -1065,8 +1074,8 @@ position = Vector2(8391, 2060) [node name="SpawnWithItem" parent="YSorted/RakeGenericPickup" index="0"] _blueprint = ExtResource("29_36k8l") -[node name="CollisionShape3D" parent="YSorted/RakeGenericPickup/InteractionArea2/Area2D" index="0"] -shape = SubResource("CircleShape2D_ipqaa") +[node name="CollisionShape3D" parent="YSorted/RakeGenericPickup/PickupInteractionArea/Area2D" index="0"] +shape = SubResource("CircleShape2D_1kqg8") [node name="ScytheGenericPickup" parent="YSorted" instance=ExtResource("33_tml8r")] visible = false @@ -1075,8 +1084,8 @@ position = Vector2(15642, 2158) [node name="SpawnWithItem" parent="YSorted/ScytheGenericPickup" index="0"] _blueprint = ExtResource("35_p4sr7") -[node name="CollisionShape3D" parent="YSorted/ScytheGenericPickup/InteractionArea2/Area2D" index="0"] -shape = SubResource("CircleShape2D_ipqaa") +[node name="CollisionShape3D" parent="YSorted/ScytheGenericPickup/PickupInteractionArea/Area2D" index="0"] +shape = SubResource("CircleShape2D_6nf5r") [node name="ShovelGenericPickup" parent="YSorted" instance=ExtResource("33_tml8r")] visible = false @@ -1085,8 +1094,8 @@ position = Vector2(5454, 2049) [node name="SpawnWithItem" parent="YSorted/ShovelGenericPickup" index="0"] _blueprint = ExtResource("36_vri5g") -[node name="CollisionShape3D" parent="YSorted/ShovelGenericPickup/InteractionArea2/Area2D" index="0"] -shape = SubResource("CircleShape2D_ipqaa") +[node name="CollisionShape3D" parent="YSorted/ShovelGenericPickup/PickupInteractionArea/Area2D" index="0"] +shape = SubResource("CircleShape2D_2532c") [node name="Farm visuals" type="Node2D" parent="YSorted"] position = Vector2(-60, 122) @@ -2259,13 +2268,13 @@ script = ExtResource("59_0knno") [editable path="YSorted/Vesna"] [editable path="YSorted/Brünnen/InteractionArea"] [editable path="YSorted/HoeGenericPickup"] -[editable path="YSorted/HoeGenericPickup/InteractionArea2"] +[editable path="YSorted/HoeGenericPickup/PickupInteractionArea"] [editable path="YSorted/CanGenericPickup"] -[editable path="YSorted/CanGenericPickup/InteractionArea2"] +[editable path="YSorted/CanGenericPickup/PickupInteractionArea"] [editable path="YSorted/RakeGenericPickup"] -[editable path="YSorted/RakeGenericPickup/InteractionArea2"] +[editable path="YSorted/RakeGenericPickup/PickupInteractionArea"] [editable path="YSorted/ScytheGenericPickup"] -[editable path="YSorted/ScytheGenericPickup/InteractionArea2"] +[editable path="YSorted/ScytheGenericPickup/PickupInteractionArea"] [editable path="YSorted/ShovelGenericPickup"] -[editable path="YSorted/ShovelGenericPickup/InteractionArea2"] +[editable path="YSorted/ShovelGenericPickup/PickupInteractionArea"] [editable path="CanvasLayer"] diff --git a/scenes/Babushka_scene_indoor_common_room.tscn b/scenes/Babushka_scene_indoor_common_room.tscn index ed67eef..fe20862 100644 --- a/scenes/Babushka_scene_indoor_common_room.tscn +++ b/scenes/Babushka_scene_indoor_common_room.tscn @@ -1,4 +1,4 @@ -[gd_scene load_steps=40 format=3 uid="uid://bm21nqepnwaik"] +[gd_scene load_steps=41 format=3 uid="uid://bm21nqepnwaik"] [ext_resource type="Script" uid="uid://cssdu8viimwm6" path="res://scripts/CSharp/Common/SceneTransition.cs" id="1_3vr4f"] [ext_resource type="Texture2D" uid="uid://cnhsxxps2cw5" path="res://art/indoor/room export/Room_01_table.png" id="2_ubg3a"] @@ -7,6 +7,7 @@ [ext_resource type="Texture2D" uid="uid://waqmjrxduxfq" path="res://art/indoor/room export/Room_01_walls.png" id="5_sndxu"] [ext_resource type="Texture2D" uid="uid://bqwhptcgg5ons" path="res://art/indoor/room export/Room_01_dorr_R.png" id="6_blyw3"] [ext_resource type="Texture2D" uid="uid://vyk63d0pgqm5" path="res://art/indoor/room export/Room_01_dioor L.png" id="7_yd2gv"] +[ext_resource type="Material" uid="uid://blch5kdhkbj75" path="res://art/materials/simple_interactable_outline.tres" id="8_7a68a"] [ext_resource type="Texture2D" uid="uid://b2rj7wkyu6ehy" path="res://art/indoor/room export/Room_01_pechka.png" id="8_ofqcg"] [ext_resource type="Texture2D" uid="uid://dhvi5404cqioa" path="res://art/indoor/room export/Room_01_window.png" id="9_aoesu"] [ext_resource type="Texture2D" uid="uid://bpi35nxbhput8" path="res://art/indoor/room export/Room_01_pechkaDoor.png" id="10_xcryd"] @@ -36,6 +37,10 @@ resource_local_to_scene = true size = Vector2(3836, 1086) +[sub_resource type="CircleShape2D" id="CircleShape2D_yd2gv"] +resource_local_to_scene = true +radius = 472.086 + [sub_resource type="CircleShape2D" id="CircleShape2D_gpagp"] resource_local_to_scene = true radius = 300.0 @@ -210,11 +215,8 @@ _data = { resource_local_to_scene = true radius = 209.703 -[sub_resource type="CircleShape2D" id="CircleShape2D_yd2gv"] -resource_local_to_scene = true -radius = 472.086 - [node name="IndoorTest" type="Node2D"] +z_index = 1 y_sort_enabled = true script = ExtResource("1_3vr4f") _sceneNamesToLoad = PackedStringArray("res://scenes/Babushka_scene_indoor_vesnas_room.tscn", "res://scenes/Babushka_scene_farm_outside_2d_ducksCollected.tscn") @@ -308,13 +310,28 @@ texture = ExtResource("6_blyw3") region_enabled = true region_rect = Rect2(3161, 313, 679, 1050) -[node name="Room01DioorL" type="Sprite2D" parent="BackWall"] +[node name="OutsideDoor" parent="BackWall/Room01DorrR" node_paths=PackedStringArray("_spriteToOutline") instance=ExtResource("11_gpagp")] +position = Vector2(-7, 248) +_outlineMaterial = ExtResource("8_7a68a") +_spriteToOutline = NodePath("..") +_id = 1 + +[node name="Room01DoorL" type="Sprite2D" parent="BackWall"] z_index = -50 position = Vector2(-3296, 48) texture = ExtResource("7_yd2gv") region_enabled = true region_rect = Rect2(0, 0, 3840, 2160) +[node name="VesnasRoomDoor" parent="BackWall/Room01DoorL" node_paths=PackedStringArray("_spriteToOutline") instance=ExtResource("11_gpagp")] +position = Vector2(-1559, -16) +_outlineMaterial = ExtResource("8_7a68a") +_spriteToOutline = NodePath("..") +_id = 0 + +[node name="CollisionShape3D" parent="BackWall/Room01DoorL/VesnasRoomDoor/Area2D" index="0"] +shape = SubResource("CircleShape2D_yd2gv") + [node name="Room01Pechka" type="Sprite2D" parent="BackWall"] z_index = -80 position = Vector2(-224, -392) @@ -343,8 +360,10 @@ texture = ExtResource("10_xcryd") region_enabled = true region_rect = Rect2(2360, 864, 356, 251) -[node name="InteractionArea" parent="BackWall/Room01PechkaDoor" instance=ExtResource("11_gpagp")] +[node name="InteractionArea" parent="BackWall/Room01PechkaDoor" node_paths=PackedStringArray("_spriteToOutline") instance=ExtResource("11_gpagp")] scale = Vector2(1.8, 1.96) +_outlineMaterial = ExtResource("8_7a68a") +_spriteToOutline = NodePath("..") [node name="CollisionShape3D" parent="BackWall/Room01PechkaDoor/InteractionArea/Area2D" index="0"] shape = SubResource("CircleShape2D_gpagp") @@ -391,6 +410,12 @@ stream = SubResource("AudioStreamRandomizer_b6vf7") bus = &"SFX" script = ExtResource("22_tggq2") +[node name="InteractionArea" parent="BackWall/Katze" node_paths=PackedStringArray("_spriteToOutline") instance=ExtResource("11_gpagp")] +position = Vector2(-6.5, -44) +scale = Vector2(0.5, 0.5) +_outlineMaterial = ExtResource("8_7a68a") +_spriteToOutline = NodePath("..") + [node name="Room assets" type="Node" parent="BackWall"] [node name="wood" type="Sprite2D" parent="BackWall/Room assets"] @@ -511,13 +536,13 @@ offset = Vector2(0, -296) region_enabled = true region_rect = Rect2(2576, 802, 219, 64) -[node name="InteractionArea" parent="BackWall" instance=ExtResource("11_gpagp")] -position = Vector2(-4064, 244) - [node name="Vesna" parent="." instance=ExtResource("15_7a68a")] +y_sort_enabled = false position = Vector2(-920, 319) [node name="Yeli" parent="." instance=ExtResource("16_dhsxs")] +z_index = 0 +y_sort_enabled = false position = Vector2(-1395, 16) _timelinesToPlay = PackedStringArray("yeli_intro_05") @@ -525,12 +550,6 @@ _timelinesToPlay = PackedStringArray("yeli_intro_05") position = Vector2(-207.487, 136.185) shape = SubResource("CircleShape2D_wuntg") -[node name="Label" parent="Yeli/InteractionArea" index="1"] -offset_left = -332.62 -offset_top = -99.8217 -offset_right = -85.6204 -offset_bottom = 3.17825 - [node name="AnimatedSprite" parent="Yeli/TalkingControl" index="0"] position = Vector2(-576, 368) @@ -561,26 +580,15 @@ _followNode = NodePath("../Vesna/CharacterBody2D") [node name="CanvasLayer" parent="." instance=ExtResource("24_yd2gv")] -[node name="VesnasRoomDoor" parent="." instance=ExtResource("11_gpagp")] -position = Vector2(-4855, 32) -_id = 0 - -[node name="CollisionShape3D" parent="VesnasRoomDoor/Area2D" index="0"] -shape = SubResource("CircleShape2D_yd2gv") - -[node name="OutsideDoor" parent="." instance=ExtResource("11_gpagp")] -position = Vector2(929, 32) -_id = 1 - +[connection signal="InteractedTool" from="BackWall/Room01DorrR/OutsideDoor" to="." method="LoadSceneAtIndex"] +[connection signal="InteractedTool" from="BackWall/Room01DoorL/VesnasRoomDoor" to="." method="LoadSceneAtIndex"] [connection signal="Interacted" from="BackWall/Room01PechkaDoor/InteractionArea" to="BackWall/Room01PechkaDoor/InteractionArea" method="ToggleActive"] [connection signal="Interacted" from="BackWall/Room01PechkaDoor/InteractionArea" to="BackWall/Room assets/hand" method="PlayAnimation"] -[connection signal="Interacted" from="BackWall/InteractionArea" to="BackWall/Katze/AudioStreamPlayer2D" method="PlayOneShot"] +[connection signal="Interacted" from="BackWall/Katze/InteractionArea" to="BackWall/Katze/AudioStreamPlayer2D" method="PlayOneShot"] [connection signal="timelineEnded" from="Yeli/dialogic_toggle" to="Yeli/Beetroot Quest trigger" method="Trigger"] -[connection signal="InteractedTool" from="VesnasRoomDoor" to="." method="LoadSceneAtIndex"] -[connection signal="InteractedTool" from="OutsideDoor" to="." method="LoadSceneAtIndex"] +[editable path="BackWall/Room01DoorL/VesnasRoomDoor"] [editable path="BackWall/Room01PechkaDoor/InteractionArea"] [editable path="Vesna"] [editable path="Yeli"] [editable path="Yeli/InteractionArea"] -[editable path="VesnasRoomDoor"] diff --git a/scenes/Babushka_scene_indoor_vesnas_room.tscn b/scenes/Babushka_scene_indoor_vesnas_room.tscn index 3a5bed7..685d0e5 100644 --- a/scenes/Babushka_scene_indoor_vesnas_room.tscn +++ b/scenes/Babushka_scene_indoor_vesnas_room.tscn @@ -96,10 +96,14 @@ _followNode = NodePath("../Vesna/CharacterBody2D") [node name="BedInteraction" parent="." instance=ExtResource("8_phqdf")] position = Vector2(-1429, 487) +_useOutline = false +_useSprite = false _id = 1 [node name="DoorInteraction" parent="." instance=ExtResource("8_phqdf")] position = Vector2(777, 201) +_useOutline = false +_useSprite = false _id = 0 [node name="CollisionShape3D" parent="DoorInteraction/Area2D" index="0"] diff --git a/scripts/CSharp/Common/Animation/AnimationStarter.cs b/scripts/CSharp/Common/Animation/AnimationStarter.cs index e3d8974..7b53485 100644 --- a/scripts/CSharp/Common/Animation/AnimationStarter.cs +++ b/scripts/CSharp/Common/Animation/AnimationStarter.cs @@ -1,5 +1,6 @@ using Godot; -using System; + +namespace Babushka.scripts.CSharp.Common.Animation; public partial class AnimationStarter : Node2D { @@ -21,4 +22,4 @@ public partial class AnimationStarter : Node2D _played = true; } -} +} \ No newline at end of file diff --git a/scripts/CSharp/Common/CharacterControls/Player2D.cs b/scripts/CSharp/Common/Animation/VesnaAnimations.cs similarity index 67% rename from scripts/CSharp/Common/CharacterControls/Player2D.cs rename to scripts/CSharp/Common/Animation/VesnaAnimations.cs index 0cb236e..2af720f 100644 --- a/scripts/CSharp/Common/CharacterControls/Player2D.cs +++ b/scripts/CSharp/Common/Animation/VesnaAnimations.cs @@ -1,48 +1,36 @@ - using System.Threading.Tasks; using Babushka.scripts.CSharp.Common.Inventory; +using Babushka.scripts.CSharp.Common.Services; using Godot; -namespace Babushka.scripts.CSharp.Common.CharacterControls; +namespace Babushka.scripts.CSharp.Common.Animation; -public partial class Player2D : CharacterBody2D +public partial class VesnaAnimations : Node { - [Export] private float _speed = 100f; - [Export] private AnimatedSprite2D _sprite; - [Export] private SceneTree.GroupCallFlags _fieldFlags; - [Export] private CpuParticles2D _wateringParticles; - - // -1 means no tool. - private int _toolID = -1; - private string _toolString; - private bool anyActionPressed; - private bool _canHandleInput = true; - private Vector2 _lastDirection = Vector2.Zero; - private InventoryManager _inventoryManager; - - public bool InputEnabled - { - get => _canHandleInput; - set => _canHandleInput = value; - } - - public override void _Ready() - { - InventoryManager.Instance.playerInventory.InventoryContentsChanged += HandleNewItemInInventory; - } - - private void HandleNewItemInInventory() - { - // for future Kathi: this does not, in fact, check if an item has been added only, but triggers on every content change! - PlayPickUpAnimation(); - } - - - public override void _Process(double delta) + [Export] private AnimatedSprite2D _sprite; + [Export] private CpuParticles2D _wateringParticles; + + private bool anyActionPressed; + private string _toolString; + private int _toolID = -1; // -1 means no tool. + private Vector2 _lastDirection = Vector2.Zero; + + public override void _Ready() + { + InventoryManager.Instance.playerInventory.InventoryContentsChanged += HandleNewItemInInventory; + } + + private void HandleNewItemInInventory() + { + // for future Kathi: this does not, in fact, check if an item has been added only, but triggers on every content change! + PlayPickUpAnimation(); + } + + public override void _Process(double delta) { anyActionPressed = false; - if (!_canHandleInput) + if (!InputService.Instance.InputEnabled) return; bool right = Input.IsActionPressed("move_right"); @@ -53,8 +41,6 @@ public partial class Player2D : CharacterBody2D if (up) { - Velocity = new Vector2(0, -_speed); - MoveAndSlide(); _sprite.Animation = "back walking" + _toolString; anyActionPressed = true; _lastDirection = Vector2.Up; @@ -63,8 +49,6 @@ public partial class Player2D : CharacterBody2D if (down && !walkingAnimationPicked) { - Velocity = new Vector2(0, _speed); - MoveAndSlide(); _sprite.Animation = "front walking" + _toolString; anyActionPressed = true; _lastDirection = Vector2.Down; @@ -73,8 +57,6 @@ public partial class Player2D : CharacterBody2D if (right && !walkingAnimationPicked) { - Velocity = new Vector2(_speed, 0); - MoveAndSlide(); _sprite.FlipH = false; _sprite.Animation = "side walking" + _toolString; anyActionPressed = true; @@ -84,8 +66,6 @@ public partial class Player2D : CharacterBody2D if (left && !walkingAnimationPicked) { - Velocity = new Vector2(-_speed, 0); - MoveAndSlide(); _sprite.FlipH = true; _sprite.Animation = "side walking" + _toolString; anyActionPressed = true; @@ -124,7 +104,7 @@ public partial class Player2D : CharacterBody2D _sprite.Animation = "back idle" + _toolString; } } - + public void ActivateTool(bool success, int id) { if (success) @@ -146,17 +126,17 @@ public partial class Player2D : CharacterBody2D break; } } - + /// /// Called by FarmingControls Signal. /// public void PlayWateringAnimation() { - if (_toolID == 1 && _canHandleInput) + if (_toolID == 1 && InputService.Instance.InputEnabled) { _sprite.Animation = "diagonal wateringcan"; _sprite.Play(); - _canHandleInput = false; + InputService.Instance.InputEnabled = false; _wateringParticles.Emitting = true; Task.Run(DelayedInputHandlerReset); } @@ -166,14 +146,14 @@ public partial class Player2D : CharacterBody2D { await Task.Delay(1000); _wateringParticles.Emitting = false; - _canHandleInput = true; + InputService.Instance.InputEnabled = true; } public void PlayPickUpAnimation() { _sprite.Animation = "side pickup"; _sprite.Play(); - _canHandleInput = false; + InputService.Instance.InputEnabled = false; Task.Run(DelayedInputHandlerReset); } @@ -181,7 +161,7 @@ public partial class Player2D : CharacterBody2D { _sprite.Animation = "diagonal farming"; _sprite.Play(); - _canHandleInput = false; + InputService.Instance.InputEnabled = false; Task.Run(DelayedInputHandlerReset); } @@ -190,10 +170,9 @@ public partial class Player2D : CharacterBody2D { _sprite.Animation = "back interact"; _sprite.Play(); - _canHandleInput = false; _lastDirection = Vector2.Up; + InputService.Instance.InputEnabled = false; Task.Run(DelayedInputHandlerReset); } - - -} + +} \ No newline at end of file diff --git a/scripts/CSharp/Common/Animation/VesnaAnimations.cs.uid b/scripts/CSharp/Common/Animation/VesnaAnimations.cs.uid new file mode 100644 index 0000000..6e46eab --- /dev/null +++ b/scripts/CSharp/Common/Animation/VesnaAnimations.cs.uid @@ -0,0 +1 @@ +uid://n7oihifvqp23 diff --git a/scripts/CSharp/Common/CharacterControls/InteractionArea2D.cs b/scripts/CSharp/Common/CharacterControls/InteractionArea2D.cs index 5c741fe..72ea54b 100644 --- a/scripts/CSharp/Common/CharacterControls/InteractionArea2D.cs +++ b/scripts/CSharp/Common/CharacterControls/InteractionArea2D.cs @@ -1,3 +1,4 @@ +using System; using Godot; namespace Babushka.scripts.CSharp.Common.CharacterControls; @@ -6,59 +7,99 @@ public partial class InteractionArea2D : Node2D { [Export] private Area2D _area; [Export] private Label _label; - [Export] private SpriteSwitcher2D _sprites; // TODO: remove + [Export] private bool _active = true; + [Export] private bool _useOutline = true; + [Export] private ShaderMaterial _outlineMaterial; + [Export] private bool _useSprite = true; + [Export] private CanvasItem _spriteToOutline; [Export] private bool _showLabel = true; [Export] private int _id = -1; // TODO: remove + private Material _backupMaterial; [Signal] public delegate void InteractedToolEventHandler(int id); // TODO: remove [Signal] public delegate void InteractedEventHandler(); - public bool IsActive { get; set; } = true; + public bool IsActive + { + get => _active; + set => _active = value; + } + + public override void _Ready() + { + + if (_useSprite && _useOutline) + { + try + { + _backupMaterial = _spriteToOutline.Material; + } + catch(Exception exception) + { + GD.PrintErr($"No sprite to outline found on: {GetParent().Name}" + exception.Message); + } + } + + } + public void OnPlayerEntered(Node2D player) { - if (!IsActive) + if (!_active) return; if(_showLabel) _label.Show(); + + if (!_useSprite || !_useOutline) + return; + + _spriteToOutline.Material = _outlineMaterial; } public void OnPlayerExited(Node2D player) { - if (!IsActive) + if (!_active) return; _label.Hide(); + + if (!_useSprite || !_useOutline) + return; + + _spriteToOutline.Material = _backupMaterial; } public override void _Input(InputEvent @event) { - if (!IsActive) + if (!_active) return; - if (@event.IsAction("interact") && @event.IsPressed() && _area.HasOverlappingBodies()) + if (@event.IsAction("interact") && @event.IsPressed()) { - _label.Hide(); - EmitSignal(SignalName.InteractedTool, _id); - EmitSignal(SignalName.Interacted); + if (_area.HasOverlappingBodies()) + { + _label.Hide(); + + if (_useSprite && _useOutline) + _spriteToOutline.Material = _backupMaterial; + + EmitSignal(SignalName.InteractedTool, _id); + EmitSignal(SignalName.Interacted); + } } } public void SetSpriteActiveState(bool success, int id) // TODO: remove { - if(!IsActive) + GD.PrintErr("SetSpriteActiveState is being called."); + if(!_active) return; - - if (_id == id) - { - _sprites.SwitchState(!success); - } } public void ToggleActive() { - IsActive = !IsActive; + _active = !_active; _label.Hide(); } } \ No newline at end of file diff --git a/scripts/CSharp/Common/CharacterControls/PlayerMovement.cs b/scripts/CSharp/Common/CharacterControls/PlayerMovement.cs new file mode 100644 index 0000000..b021209 --- /dev/null +++ b/scripts/CSharp/Common/CharacterControls/PlayerMovement.cs @@ -0,0 +1,65 @@ + +using System.Threading.Tasks; +using Babushka.scripts.CSharp.Common.Inventory; +using Babushka.scripts.CSharp.Common.Services; +using Godot; + +namespace Babushka.scripts.CSharp.Common.CharacterControls; + +public partial class PlayerMovement : CharacterBody2D +{ + [Export] private float _speed = 1000f; + + private InventoryManager _inventoryManager; + + public override void _Process(double delta) + { + bool anyActionPressed = false; + Vector2 currentVelocity = Vector2.Zero; + + if (!InputService.Instance.InputEnabled) + return; + + bool right = Input.IsActionPressed("move_right"); + bool left = Input.IsActionPressed("move_left"); + bool up = Input.IsActionPressed("move_up"); + bool down = Input.IsActionPressed("move_down"); + + if (up) + { + currentVelocity += new Vector2(0, -_speed); + anyActionPressed = true; + } + + if (down) + { + currentVelocity += new Vector2(0, _speed); + anyActionPressed = true; + } + + if (right) + { + currentVelocity += new Vector2(_speed, 0); + + anyActionPressed = true; + } + + if (left) + { + currentVelocity += new Vector2(-_speed, 0); + + anyActionPressed = true; + } + + if (anyActionPressed) + { + if (currentVelocity.X != 0 && currentVelocity.Y != 0) + { + currentVelocity *= 0.7f; + } + + Velocity = currentVelocity; + MoveAndSlide(); + } + } +} diff --git a/scripts/CSharp/Common/CharacterControls/Player2D.cs.uid b/scripts/CSharp/Common/CharacterControls/PlayerMovement.cs.uid similarity index 100% rename from scripts/CSharp/Common/CharacterControls/Player2D.cs.uid rename to scripts/CSharp/Common/CharacterControls/PlayerMovement.cs.uid diff --git a/scripts/CSharp/Common/Farming/FieldBehaviour2D.cs b/scripts/CSharp/Common/Farming/FieldBehaviour2D.cs index 606d981..b747ebf 100644 --- a/scripts/CSharp/Common/Farming/FieldBehaviour2D.cs +++ b/scripts/CSharp/Common/Farming/FieldBehaviour2D.cs @@ -4,15 +4,6 @@ using Godot; namespace Babushka.scripts.CSharp.Common.Farming; -public enum FieldState -{ - Empty = 0, - Tilled = 1, - Planted = 2, - Watered = 3, - NotFound = 99 -} - [GlobalClass] public partial class FieldBehaviour2D : Sprite2D { @@ -40,27 +31,22 @@ public partial class FieldBehaviour2D : Sprite2D { case FieldState.Empty: FieldState = FieldState.Empty; - GD.Print("FieldState is Empty."); break; case FieldState.Tilled: FieldState = FieldState.Tilled; _fieldSprite.Texture = Tilled; _growingCollider.Visible = false; - GD.Print("FieldState is Tilled."); break; case FieldState.Watered: FieldState = FieldState.Watered; _fieldSprite.Texture = Watered; _growingCollider.Visible = true; - GD.Print("FieldState is Watered."); break; case FieldState.Planted: FieldState = FieldState.Planted; - GD.Print("FieldState is Planted."); break; default: FieldState = FieldState.NotFound; - GD.Print("FieldState is NotFound."); break; } } diff --git a/scripts/CSharp/Common/Farming/FieldService2D.cs b/scripts/CSharp/Common/Farming/FieldService2D.cs index 5b36976..0583dbd 100644 --- a/scripts/CSharp/Common/Farming/FieldService2D.cs +++ b/scripts/CSharp/Common/Farming/FieldService2D.cs @@ -6,7 +6,7 @@ namespace Babushka.scripts.CSharp.Common.Farming; [GlobalClass] public partial class FieldService2D : Node2D { - [Export] private Dictionary fields = new Dictionary(); + [Export] private Dictionary fields; [Export] private Area2D _allowedArea; diff --git a/scripts/CSharp/Common/Farming/FieldState.cs b/scripts/CSharp/Common/Farming/FieldState.cs new file mode 100644 index 0000000..b489bb8 --- /dev/null +++ b/scripts/CSharp/Common/Farming/FieldState.cs @@ -0,0 +1,13 @@ +namespace Babushka.scripts.CSharp.Common.Farming; + +/// +/// State of a farm field. +/// +public enum FieldState +{ + Empty = 0, + Tilled = 1, + Planted = 2, + Watered = 3, + NotFound = 99 +} \ No newline at end of file diff --git a/scripts/CSharp/Common/Farming/FieldState.cs.uid b/scripts/CSharp/Common/Farming/FieldState.cs.uid new file mode 100644 index 0000000..2f0fe65 --- /dev/null +++ b/scripts/CSharp/Common/Farming/FieldState.cs.uid @@ -0,0 +1 @@ +uid://cqtlic8xxtvkc diff --git a/scripts/CSharp/Common/Farming/PlantBehaviour2D.cs b/scripts/CSharp/Common/Farming/PlantBehaviour2D.cs index e386ba4..d078b19 100644 --- a/scripts/CSharp/Common/Farming/PlantBehaviour2D.cs +++ b/scripts/CSharp/Common/Farming/PlantBehaviour2D.cs @@ -5,14 +5,7 @@ using Godot; namespace Babushka.scripts.CSharp.Common.Farming; -public enum PlantState -{ - None = 0, - Planted = 1, - SmallPlant = 2, - BigPlant = 3, - Ready = 4 -} + /// /// Determines the behaviour of a plant in Babushka. @@ -27,10 +20,11 @@ public partial class PlantBehaviour2D : Node2D [Export] private FieldBehaviour2D _field; [Export] private ItemOnGround2D _harvestablePlant; [Export] private CpuParticles2D _magicEffect; + [Export] private bool _magicWordNeeded = true; private string _magicWordDialogicEventName = "MagicWord"; private Sprite2D _currentPlantSprite = null; - private bool _magicWordSaid; + private bool _magicWordSaid = false; /// @@ -38,46 +32,43 @@ public partial class PlantBehaviour2D : Node2D /// public void Grow() { - if (_field.FieldState != FieldState.Watered || !_magicWordSaid) + if (_field.FieldState != FieldState.Watered || _magicWordSaid != _magicWordNeeded) return; - GD.Print("Trying to grow something here."); - GetTree().CallGroup("PlantGrowing", Player2D.MethodName.PlayFarmingAnimation); - + //GetTree().CallGroup("PlantGrowing", PlayerMovement.MethodName.PlayFarmingAnimation); + // todo: + // find out why the last plant stage is being skipped the second time around switch (_state) { case PlantState.None: _state = PlantState.Planted; _currentPlantSprite = GetRandomSprite(_seeds); _currentPlantSprite.Visible = true; - GD.Print("PlantState is none."); break; case PlantState.Planted: _state = PlantState.SmallPlant; _currentPlantSprite.Visible = false; _currentPlantSprite = GetRandomSprite(_smallPlants); _currentPlantSprite.Visible = true; - GD.Print("PlantState is planted."); break; case PlantState.SmallPlant: _state = PlantState.BigPlant; _currentPlantSprite.Visible = false; _currentPlantSprite = GetRandomSprite(_bigPlants); _currentPlantSprite.Visible = true; - GD.Print("PlantState is Smallplant."); break; case PlantState.BigPlant: _state = PlantState.Ready; _currentPlantSprite.Visible = false; _currentPlantSprite = GetRandomSprite(_readyPlants); - _harvestablePlant.IsActive = true; _currentPlantSprite.Visible = true; - GD.Print("PlantState is BigPlant."); + ActivatePickupAfterDelay(true); break; case PlantState.Ready: _state = PlantState.None; _currentPlantSprite.Visible = false; _currentPlantSprite = null; + ActivatePickupAfterDelay(false); break; default: break; @@ -92,10 +83,21 @@ public partial class PlantBehaviour2D : Node2D Random rand = new Random(); return sprites[rand.Next(sprites.Length)]; } - + + public async void ActivatePickupAfterDelay(bool activate) + { + await ToSignal(GetTree().CreateTimer(1.0f), "timeout"); + SetActiveHarvestablePlant(activate); + } + + private void SetActiveHarvestablePlant(bool active) + { + _harvestablePlant.IsActive = active; + _harvestablePlant.UpdateVisuals(); + } + public void SayMagicWord(string wordEvent) { - GD.Print("Calling Dialogic event: " + wordEvent); if (_magicWordDialogicEventName != wordEvent) return; diff --git a/scripts/CSharp/Common/Farming/PlantState.cs b/scripts/CSharp/Common/Farming/PlantState.cs new file mode 100644 index 0000000..7019625 --- /dev/null +++ b/scripts/CSharp/Common/Farming/PlantState.cs @@ -0,0 +1,13 @@ +namespace Babushka.scripts.CSharp.Common.Farming; + +/// +/// State of a harvestable plant. Used in farming. +/// +public enum PlantState +{ + None = 0, + Planted = 1, + SmallPlant = 2, + BigPlant = 3, + Ready = 4 +} \ No newline at end of file diff --git a/scripts/CSharp/Common/Farming/PlantState.cs.uid b/scripts/CSharp/Common/Farming/PlantState.cs.uid new file mode 100644 index 0000000..714ae0d --- /dev/null +++ b/scripts/CSharp/Common/Farming/PlantState.cs.uid @@ -0,0 +1 @@ +uid://dw5dl5yscbyaw diff --git a/scripts/CSharp/Common/Farming/VesnaBehaviour2D.cs b/scripts/CSharp/Common/Farming/VesnaBehaviour2D.cs index da3be73..13df0bf 100644 --- a/scripts/CSharp/Common/Farming/VesnaBehaviour2D.cs +++ b/scripts/CSharp/Common/Farming/VesnaBehaviour2D.cs @@ -1,5 +1,7 @@ +using Babushka.scripts.CSharp.Common.Animation; using Babushka.scripts.CSharp.Common.CharacterControls; using Babushka.scripts.CSharp.Common.Inventory; +using Babushka.scripts.CSharp.Common.Services; using Godot; namespace Babushka.scripts.CSharp.Common.Farming; @@ -9,7 +11,8 @@ public partial class VesnaBehaviour2D : Node [ExportGroup("Farming")] [Export] private FieldService2D _fieldParent; [Export] private FarmingControls2D _farmingControls; - [Export] private Player2D _player2d; + [Export] private PlayerMovement _player2d; + [Export] private VesnaAnimations _vesnaAnimations; [Export] private ItemResource _hoe; [Export] private ItemResource _wateringCan; @@ -77,7 +80,7 @@ public partial class VesnaBehaviour2D : Node if (toolId == 1) { _farmingControls.FillWateringCan(); - _player2d.PlayWateringCanFillupAnimation(); + _vesnaAnimations.PlayWateringCanFillupAnimation(); EmitSignal(SignalName.FilledWateringCan); } } @@ -85,18 +88,18 @@ public partial class VesnaBehaviour2D : Node #endregion /// - /// Enables the character movement in the Player2D script. + /// Enables the input. /// public void EnableMovement() { - _player2d.InputEnabled = true; + InputService.Instance.InputEnabled = true; } /// - /// Disables the character movement in the Player2D script. + /// Disables the input. /// public void DisableMovement() { - _player2d.InputEnabled = false; + InputService.Instance.InputEnabled = false; } } \ No newline at end of file diff --git a/scripts/CSharp/Common/Farming/WateringCanState.cs b/scripts/CSharp/Common/Farming/WateringCanState.cs index 8e4e89c..333a44d 100644 --- a/scripts/CSharp/Common/Farming/WateringCanState.cs +++ b/scripts/CSharp/Common/Farming/WateringCanState.cs @@ -23,6 +23,10 @@ public static class WateringCanState /// Triggers animations and ui. /// public static bool Active = false; + + public delegate void WateringCanDelegate(bool state); + public static event WateringCanDelegate WateringCanActiveStateChanged; + /// @@ -65,6 +69,8 @@ public static class WateringCanState /// public static void SetActive(bool active) { + if(active != Active) + WateringCanActiveStateChanged?.Invoke(active); Active = active; } } \ No newline at end of file diff --git a/scripts/CSharp/Common/Farming/WellBehaviour.cs b/scripts/CSharp/Common/Farming/WellBehaviour.cs new file mode 100644 index 0000000..51b2958 --- /dev/null +++ b/scripts/CSharp/Common/Farming/WellBehaviour.cs @@ -0,0 +1,19 @@ +using Babushka.scripts.CSharp.Common.CharacterControls; +using Godot; + +namespace Babushka.scripts.CSharp.Common.Farming; + +public partial class WellBehaviour : Node2D +{ + [Export] private InteractionArea2D _interactionArea; + + public override void _Ready() + { + WateringCanState.WateringCanActiveStateChanged += OnWateringCanStateChanged; + } + + private void OnWateringCanStateChanged(bool state) + { + _interactionArea.IsActive = state; + } +} \ No newline at end of file diff --git a/scripts/CSharp/Common/Farming/WellBehaviour.cs.uid b/scripts/CSharp/Common/Farming/WellBehaviour.cs.uid new file mode 100644 index 0000000..cec2b49 --- /dev/null +++ b/scripts/CSharp/Common/Farming/WellBehaviour.cs.uid @@ -0,0 +1 @@ +uid://boehox1ydbcnx diff --git a/scripts/CSharp/Common/Fight/FightAttack.cs b/scripts/CSharp/Common/Fight/FightAttack.cs new file mode 100644 index 0000000..0c1248f --- /dev/null +++ b/scripts/CSharp/Common/Fight/FightAttack.cs @@ -0,0 +1,9 @@ +namespace Babushka.scripts.CSharp.Common.Fight; + +public class FightAttack +{ + public int damage; + public bool needsSelectedTarget; + public Fighter? target; + public Fighter attacker; +} \ No newline at end of file diff --git a/scripts/CSharp/Common/Fight/FightAttack.cs.uid b/scripts/CSharp/Common/Fight/FightAttack.cs.uid new file mode 100644 index 0000000..5744876 --- /dev/null +++ b/scripts/CSharp/Common/Fight/FightAttack.cs.uid @@ -0,0 +1 @@ +uid://cnggo5jyimosu diff --git a/scripts/CSharp/Common/Fight/FightInstance.cs b/scripts/CSharp/Common/Fight/FightInstance.cs index ff5eb89..28d608f 100644 --- a/scripts/CSharp/Common/Fight/FightInstance.cs +++ b/scripts/CSharp/Common/Fight/FightInstance.cs @@ -348,10 +348,4 @@ public partial class FightInstance : Node2D //TODO: remake return false; } } -public class FightAttack -{ - public int damage; - public bool needsSelectedTarget; - public Fighter? target; - public Fighter attacker; -} + diff --git a/scripts/CSharp/Common/Inventory/ItemOnGround2D.cs b/scripts/CSharp/Common/Inventory/ItemOnGround2D.cs index bba4bb7..b313dae 100644 --- a/scripts/CSharp/Common/Inventory/ItemOnGround2D.cs +++ b/scripts/CSharp/Common/Inventory/ItemOnGround2D.cs @@ -6,9 +6,9 @@ public partial class ItemOnGround2D : Node { private ItemInstance _itemInstance; + [Export] public bool IsActive = true; [Export] private bool _infiniteSupply = false; [Export] private int _finiteSupply = 1; - [Export] public bool IsActive = true; private int pickUpCounter = 0; diff --git a/scripts/CSharp/Common/Quest/QuestMessagePopup.cs b/scripts/CSharp/Common/Quest/QuestMessagePopup.cs index 5999c41..4f0e76a 100644 --- a/scripts/CSharp/Common/Quest/QuestMessagePopup.cs +++ b/scripts/CSharp/Common/Quest/QuestMessagePopup.cs @@ -5,7 +5,6 @@ using Babushka.scripts.CSharp.Common.Quest; public partial class QuestMessagePopup : Control { - private Label Text => GetNode