Compare commits
18 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| f6e0c4e615 | |||
| 6ae877f2ab | |||
| 3913143892 | |||
| 4734ae953c | |||
| 5992c390ee | |||
| 283caf282b | |||
| 7c03964d33 | |||
| 36c948f116 | |||
| d0ba4076b3 | |||
| 7fd26ffed3 | |||
| ce2d7eb773 | |||
| 41365fb5d4 | |||
| 96c7d35aa7 | |||
| c2f5359d0c | |||
| 9bebe1a44d | |||
| 06a270e916 | |||
| b621df5435 | |||
| 03dbc08293 |
@@ -1,6 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project version="4">
|
||||
<component name="AndroidProjectSystem">
|
||||
<option name="providerId" value="RiderAndroidProjectSystem" />
|
||||
</component>
|
||||
</project>
|
||||
@@ -1,6 +1,7 @@
|
||||
<wpf:ResourceDictionary xml:space="preserve" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:s="clr-namespace:System;assembly=mscorlib" xmlns:ss="urn:shemas-jetbrains-com:settings-storage-xaml" xmlns:wpf="http://schemas.microsoft.com/winfx/2006/xaml/presentation">
|
||||
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003AArea3D_002Ecs_002Fl_003A_002E_002E_003F_002E_002E_003F_002E_002E_003F_002E_002E_003F_002Econfig_003FJetBrains_003FRider2024_002E3_003Fresharper_002Dhost_003FSourcesCache_003F8a54226fa2e1c9371a8091f24cfd744aef11fe6869527dc23b9b837623a29b9_003FArea3D_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
|
||||
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003AAudioStreamPlayer2D_002Ecs_002Fl_003A_002E_002E_003F_002E_002E_003F_002E_002E_003F_002E_002E_003F_002Econfig_003FJetBrains_003FRider2025_002E1_003Fresharper_002Dhost_003FSourcesCache_003F848324b1c23114c3f5e8bbb5a42c4ade394c59a7a7a133a66b76581ca571_003FAudioStreamPlayer2D_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
|
||||
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003ABabushka_002Escripts_002ECSharp_002ECommon_002EFarming_002EFieldBehaviour2D_005FScriptMethods_002Egenerated_002Ecs_002Fl_003A_002E_002E_003F_002E_002E_003F_002E_002E_003F_002E_002E_003F_002Econfig_003FJetBrains_003FRider2025_002E2_003Fresharper_002Dhost_003FSourcesCache_003F75d11718f1abbc2572fd32e4b83acbec9d79ac_003FBabushka_002Escripts_002ECSharp_002ECommon_002EFarming_002EFieldBehaviour2D_005FScriptMethods_002Egenerated_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
|
||||
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003ABabushka_002Escripts_002ECSharp_002ECommon_002EFarming_002EVesnaBehaviour2D_005FScriptProperties_002Egenerated_002Ecs_002Fl_003AC_0021_003FUsers_003FJonathan_003FAppData_003FRoaming_003FJetBrains_003FRider2025_002E1_003Fresharper_002Dhost_003FSourcesCache_003F4298b0f293f987511fc1b7956ee691fd778f8378_003FBabushka_002Escripts_002ECSharp_002ECommon_002EFarming_002EVesnaBehaviour2D_005FScriptProperties_002Egenerated_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
|
||||
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003ABabushka_002Escripts_002ECSharp_002ECommon_002EQuest_002EQuestListItemUi_005FScriptMethods_002Egenerated_002Ecs_002Fl_003AC_0021_003FUsers_003FJonathan_003FAppData_003FRoaming_003FJetBrains_003FRider2025_002E1_003Fresharper_002Dhost_003FSourcesCache_003F48fad7e7f3c9e292b3fdbddf9d363f0d1752aa_003FBabushka_002Escripts_002ECSharp_002ECommon_002EQuest_002EQuestListItemUi_005FScriptMethods_002Egenerated_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
|
||||
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003ACastHelpers_002Ecs_002Fl_003AC_0021_003FUsers_003FJonathan_003FAppData_003FRoaming_003FJetBrains_003FRider2025_002E1_003Fresharper_002Dhost_003FSourcesCache_003F3c92637ae2e83da0a63791071c41eae291d594156062866d8621b7ed7245c_003FCastHelpers_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
|
||||
|
||||
@@ -9,7 +9,7 @@ var quest_resource: String
|
||||
func _execute() -> void:
|
||||
var resource = ResourceLoader.load(quest_resource)
|
||||
QuestManager.ChangeQuestStatus(resource,QuestEventUtils.QuestStatus.AVAILABLE)
|
||||
QuestManager.SetFollowQuest(resource)
|
||||
QuestManager.SetActiveQuest(resource)
|
||||
finish() # called to continue with the next event
|
||||
|
||||
|
||||
|
||||
@@ -9,7 +9,7 @@ var quest_resource: String
|
||||
func _execute() -> void:
|
||||
var resource = ResourceLoader.load(quest_resource)
|
||||
QuestManager.ChangeQuestStatus(resource,QuestEventUtils.QuestStatus.DONE)
|
||||
QuestManager.SetFollowQuest(null)
|
||||
QuestManager.SetActiveQuest(null)
|
||||
finish() # called to continue with the next event
|
||||
|
||||
|
||||
|
||||
@@ -23,9 +23,9 @@ func _execute() -> void:
|
||||
|
||||
var result: bool
|
||||
if compare_status == QuestEventUtils.QuestStatusOrActive.ACTIVE:
|
||||
result = QuestManager.GetFollowQuest() == resource
|
||||
result = QuestManager.GetActiveQuest() == resource
|
||||
elif compare_status == QuestEventUtils.QuestStatusOrActive.NOT_ACTIVE:
|
||||
result = QuestManager.GetFollowQuest() != resource
|
||||
result = QuestManager.GetActiveQuest() != resource
|
||||
else:
|
||||
result = QuestManager.GetQuestStatus(resource).status == compare_status
|
||||
|
||||
|
||||
@@ -0,0 +1,19 @@
|
||||
[gd_scene load_steps=5 format=3 uid="uid://bs4t0t7o4jmam"]
|
||||
|
||||
[ext_resource type="Script" uid="uid://doxr432r22dd0" path="res://scripts/CSharp/Common/Items/InventoryDependentInteractable.cs" id="1_cu47d"]
|
||||
[ext_resource type="Resource" uid="uid://cndd64batns31" path="res://resources/items/wateringcan.tres" id="2_s5peo"]
|
||||
[ext_resource type="PackedScene" uid="uid://cqc72e4hq6bcd" path="res://prefabs/interactions/interaction_area_2d.tscn" id="3_wsetd"]
|
||||
[ext_resource type="Texture2D" uid="uid://bleimj6jr1jka" path="res://art/general/rectangle.png" id="4_1dub8"]
|
||||
|
||||
[node name="InventoryDependentInteractableTest" type="Node2D" node_paths=PackedStringArray("_interactionArea")]
|
||||
script = ExtResource("1_cu47d")
|
||||
_interactionArea = NodePath("InteractionArea")
|
||||
_itemsToReactTo = Array[Object]([ExtResource("2_s5peo")])
|
||||
|
||||
[node name="InteractionArea" parent="." node_paths=PackedStringArray("_spriteToOutline") instance=ExtResource("3_wsetd")]
|
||||
_active = false
|
||||
_spriteToOutline = NodePath("../Sprite2D")
|
||||
|
||||
[node name="Sprite2D" type="Sprite2D" parent="."]
|
||||
scale = Vector2(0.5, 0.5)
|
||||
texture = ExtResource("4_1dub8")
|
||||
@@ -1,7 +1,8 @@
|
||||
[gd_scene load_steps=15 format=3 uid="uid://sbf12hin4kes"]
|
||||
[gd_scene load_steps=16 format=3 uid="uid://sbf12hin4kes"]
|
||||
|
||||
[ext_resource type="Texture2D" uid="uid://bylgmr0skwtrs" path="res://art/farm/farming/farmobjekte/broken tools atlas.png" id="1_k4ca3"]
|
||||
[ext_resource type="PackedScene" uid="uid://cqc72e4hq6bcd" path="res://prefabs/interactions/interaction_area_2d.tscn" id="2_gcgfd"]
|
||||
[ext_resource type="Script" uid="uid://dkk1vjijvgrd7" path="res://scripts/CSharp/Common/Items/NonInventoryPickup.cs" id="2_ic616"]
|
||||
[ext_resource type="AudioStream" uid="uid://be6g8b3v3u1ai" path="res://audio/sfx/Kitchen/SFX_Cooking_Knife_PickUp_01.wav" id="3_ktmp7"]
|
||||
[ext_resource type="AudioStream" uid="uid://cgjsajsdrrn0j" path="res://audio/sfx/Kitchen/SFX_Cooking_Knife_PutDown_01.wav" id="4_ic616"]
|
||||
[ext_resource type="AudioStream" uid="uid://br4drgupled6c" path="res://audio/sfx/Kitchen/SFX_Cooking_Pot_01.wav" id="5_dx175"]
|
||||
@@ -34,6 +35,7 @@ texture = ExtResource("1_k4ca3")
|
||||
offset = Vector2(1, -215)
|
||||
region_enabled = true
|
||||
region_rect = Rect2(44, 479, 356, 503)
|
||||
script = ExtResource("2_ic616")
|
||||
|
||||
[node name="InteractionArea" parent="." node_paths=PackedStringArray("_spriteToOutline") instance=ExtResource("2_gcgfd")]
|
||||
position = Vector2(0, -172)
|
||||
@@ -46,4 +48,5 @@ playback_type = 2
|
||||
script = ExtResource("13_wswkg")
|
||||
|
||||
[connection signal="Interacted" from="InteractionArea" to="." method="queue_free"]
|
||||
[connection signal="Interacted" from="InteractionArea" to="." method="PlayPickupAnimation"]
|
||||
[connection signal="Interacted" from="InteractionArea" to="AudioStreamPlayer2D" method="PlayOneShot"]
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
[gd_scene load_steps=11 format=3 uid="uid://cgjc4wurbgimy"]
|
||||
[gd_scene load_steps=12 format=3 uid="uid://cgjc4wurbgimy"]
|
||||
|
||||
[ext_resource type="Script" uid="uid://hg7jay2kt441" path="res://scripts/CSharp/Common/Inventory/InventoryUi.cs" id="1_6wusm"]
|
||||
[ext_resource type="Script" path="res://scripts/GdScript/dialogic_toggle.gd" id="1_l3npx"]
|
||||
[ext_resource type="Script" uid="uid://cvkw4qd2hxksi" path="res://scripts/GdScript/dialogic_toggle.gd" id="1_l3npx"]
|
||||
[ext_resource type="Texture2D" uid="uid://3ln8aleyxgp1" path="res://art/ui/UI/UI_bag_export_01.png" id="3_vvo7l"]
|
||||
[ext_resource type="Texture2D" uid="uid://u0dku75l17re" path="res://art/ui/UI/UI_bag_export_highlight_01.png" id="5_df8i8"]
|
||||
[ext_resource type="PackedScene" uid="uid://c0kmdjeqkqrwv" path="res://prefabs/UI/Inventory/Slot.tscn" id="5_u7kje"]
|
||||
@@ -11,6 +11,9 @@
|
||||
[ext_resource type="PackedScene" uid="uid://2q1n6g2kj5er" path="res://prefabs/UI/Quest/QuestLog.tscn" id="7_vvo7l"]
|
||||
[ext_resource type="Texture2D" uid="uid://qwia360i1ir1" path="res://art/ui/UI/inventory_active.png" id="8_df8i8"]
|
||||
|
||||
[sub_resource type="LabelSettings" id="LabelSettings_l3npx"]
|
||||
font_size = 50
|
||||
|
||||
[node name="CanvasLayer" type="CanvasLayer"]
|
||||
layer = 90
|
||||
|
||||
@@ -455,6 +458,22 @@ offset_bottom = 100.0
|
||||
texture = ExtResource("8_df8i8")
|
||||
expand_mode = 1
|
||||
|
||||
[node name="Label" type="Label" parent="Inventory/SlotsContainer/SlotsMover"]
|
||||
layout_mode = 1
|
||||
anchors_preset = 6
|
||||
anchor_left = 1.0
|
||||
anchor_top = 0.5
|
||||
anchor_right = 1.0
|
||||
anchor_bottom = 0.5
|
||||
offset_left = 14.4142
|
||||
offset_top = 184.286
|
||||
offset_right = 54.4142
|
||||
offset_bottom = 207.286
|
||||
grow_horizontal = 0
|
||||
grow_vertical = 2
|
||||
text = "[I]"
|
||||
label_settings = SubResource("LabelSettings_l3npx")
|
||||
|
||||
[node name="QuestLogRoot" parent="." instance=ExtResource("7_vvo7l")]
|
||||
|
||||
[node name="Control" type="Control" parent="."]
|
||||
@@ -488,6 +507,7 @@ offset_bottom = -20.0
|
||||
grow_horizontal = 2
|
||||
grow_vertical = 2
|
||||
theme_override_colors/font_color = Color(0, 0, 0, 1)
|
||||
text = "Switch to Unity"
|
||||
text = "[Hier könnte Ihre Werbung stehen]"
|
||||
horizontal_alignment = 1
|
||||
vertical_alignment = 1
|
||||
autowrap_mode = 2
|
||||
|
||||
@@ -50,7 +50,7 @@ size_flags_horizontal = 3
|
||||
size_flags_vertical = 1
|
||||
theme_override_colors/font_color = Color(0, 0, 0, 1)
|
||||
theme_override_font_sizes/font_size = 17
|
||||
text = "Switch to Unity"
|
||||
text = "[ Hier könnte ihre Werbung stehen]"
|
||||
vertical_alignment = 1
|
||||
autowrap_mode = 2
|
||||
|
||||
|
||||
@@ -1,7 +1,9 @@
|
||||
[gd_scene load_steps=477 format=3 uid="uid://c25udixd5m6l0"]
|
||||
[gd_scene load_steps=475 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/PlayerMovement.cs" id="2_1vqmv"]
|
||||
[ext_resource type="Resource" uid="uid://c5yg3lx756v4v" path="res://resources/items/hoe.tres" id="2_dnm27"]
|
||||
[ext_resource type="Resource" uid="uid://cndd64batns31" path="res://resources/items/wateringcan.tres" id="3_e04c3"]
|
||||
[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"]
|
||||
@@ -271,15 +273,11 @@
|
||||
[ext_resource type="Texture2D" uid="uid://b37lpqrsjjuc0" path="res://art/animation/Vesna2D/Vesna Anims Tools/F01-Idle-Gießkanne/0010.png" id="466_pw1ip"]
|
||||
[ext_resource type="Script" uid="uid://er03dkj8axlr" path="res://scripts/CSharp/Common/UI/WateringCanUi.cs" id="467_j4m0f"]
|
||||
[ext_resource type="Texture2D" uid="uid://oi11ax6tml6j" path="res://art/animation/Vesna2D/Vesna Anims Tools/F01-Idle-Gießkanne/0012.png" id="468_08021"]
|
||||
[ext_resource type="Texture2D" uid="uid://l0k3vh3kdprp" path="res://art/ui/UI/Watercan-ui/Tropfen-ui-1.png" id="468_f6xmn"]
|
||||
[ext_resource type="Texture2D" uid="uid://t4w7axbof7bq" path="res://art/ui/UI/Watercan-ui/Tropfen-ui-2.png" id="469_nxglm"]
|
||||
[ext_resource type="Texture2D" uid="uid://di2npqkvvst6x" path="res://art/ui/UI/Watercan-ui/Tropfen-ui-3.png" id="470_8fyd7"]
|
||||
[ext_resource type="Texture2D" uid="uid://dsjj23763pej5" path="res://art/animation/Vesna2D/Vesna Anims Tools/F01-Idle-Gießkanne/0014.png" id="470_bmmei"]
|
||||
[ext_resource type="Texture2D" uid="uid://clti3basli30" path="res://art/ui/UI/Watercan-ui/Tropfen-ui-4.png" id="471_dnm27"]
|
||||
[ext_resource type="Texture2D" uid="uid://n1v4hgd467wp" path="res://art/ui/UI/Watercan-ui/Tropfen-ui-5.png" id="472_e04c3"]
|
||||
[ext_resource type="Texture2D" uid="uid://blh0t2ofqj2uq" path="res://art/animation/Vesna2D/Vesna Anims Tools/F01-Idle-Gießkanne/0016.png" id="472_wdxsr"]
|
||||
[ext_resource type="Texture2D" uid="uid://l5ym7gi82l1b" path="res://art/ui/UI/Watercan-ui/Tropfen-ui-6.png" id="473_g32y8"]
|
||||
[ext_resource type="Texture2D" uid="uid://3t1m2xi4ks75" path="res://art/animation/Vesna2D/Vesna Anims Tools/F01-Idle-Gießkanne/0018.png" id="474_tu801"]
|
||||
[ext_resource type="Script" uid="uid://cfnrd5k1k0gxw" path="res://scripts/CSharp/Common/AudioPlayer.cs" id="475_nxglm"]
|
||||
[ext_resource type="Texture2D" uid="uid://drtgi1qyq7fji" path="res://art/animation/Vesna2D/Vesna Anims Tools/F01-Idle-Gießkanne/0020.png" id="476_g4jjd"]
|
||||
[ext_resource type="Texture2D" uid="uid://d3rdsclnqbx7" path="res://art/animation/Vesna2D/Vesna Anims Sequences/F02-Walk/0001.png" id="477_qko58"]
|
||||
[ext_resource type="Texture2D" uid="uid://dqubvx1a08kn4" path="res://art/animation/Vesna2D/Vesna Anims Sequences/F02-Walk/0002.png" id="478_5myrm"]
|
||||
@@ -469,11 +467,9 @@
|
||||
[ext_resource type="Texture2D" uid="uid://ds2y033vahyi5" path="res://art/animation/Vesna2D/Vesna Anims Tools/S02-Walk-Gießkanne/0016.png" id="810_224qh"]
|
||||
[ext_resource type="Texture2D" uid="uid://b0v61all3tsny" path="res://art/animation/Vesna2D/Vesna Anims Tools/S02-Walk-Gießkanne/0018.png" id="812_sf8kv"]
|
||||
[ext_resource type="Texture2D" uid="uid://cao7vqax8cblo" path="res://art/animation/Vesna2D/Vesna Anims Tools/S02-Walk-Gießkanne/0020.png" id="814_3uq4g"]
|
||||
[ext_resource type="Texture2D" uid="uid://3pj2q7wtuion" path="res://art/farm/farming/farmobjekte/hoe.png" id="815_1ia2b"]
|
||||
[ext_resource type="Texture2D" uid="uid://x8hr8287ff2n" path="res://art/farm/farming/farmobjekte/tools atlas.png" id="816_1a3c1"]
|
||||
[ext_resource type="Script" uid="uid://bcskt5ckh3rqa" path="res://scripts/CSharp/Common/Farming/FarmingControls2D.cs" id="817_6nrw3"]
|
||||
[ext_resource type="PackedScene" uid="uid://b1d2e7ely6hyw" path="res://prefabs/farm/tomato_field.tscn" id="818_16w6h"]
|
||||
[ext_resource type="Script" path="res://scripts/GdScript/dialogic_toggle.gd" id="819_4na52"]
|
||||
[ext_resource type="PackedScene" uid="uid://b1d2e7ely6hyw" path="res://prefabs/farm/base_field.tscn" id="818_16w6h"]
|
||||
[ext_resource type="Script" uid="uid://cvkw4qd2hxksi" path="res://scripts/GdScript/dialogic_toggle.gd" id="819_4na52"]
|
||||
|
||||
[sub_resource type="CircleShape2D" id="CircleShape2D_ssqtd"]
|
||||
radius = 110.018
|
||||
@@ -2066,14 +2062,22 @@ animations = [{
|
||||
"speed": 16.0
|
||||
}]
|
||||
|
||||
[sub_resource type="AudioStream" id="AudioStream_8fyd7"]
|
||||
|
||||
[sub_resource type="AudioStreamRandomizer" id="AudioStreamRandomizer_dnm27"]
|
||||
streams_count = 1
|
||||
stream_0/stream = SubResource("AudioStream_8fyd7")
|
||||
|
||||
[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")
|
||||
_hoe = ExtResource("2_dnm27")
|
||||
_wateringCan = ExtResource("3_e04c3")
|
||||
|
||||
[node name="CharacterBody2D" type="CharacterBody2D" parent="." groups=["PlantGrowing"]]
|
||||
[node name="CharacterBody2D" type="CharacterBody2D" parent="."]
|
||||
position = Vector2(0, 374)
|
||||
collision_layer = 4
|
||||
collision_mask = 3
|
||||
@@ -2087,7 +2091,7 @@ 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_paths=PackedStringArray("_sprite", "_wateringParticles")]
|
||||
[node name="visuals" type="Node2D" parent="CharacterBody2D" node_paths=PackedStringArray("_sprite", "_wateringParticles") groups=["Pickup", "PlantGrowing"]]
|
||||
position = Vector2(0, -374)
|
||||
script = ExtResource("3_f6xmn")
|
||||
_sprite = NodePath("Animated Sprites")
|
||||
@@ -2097,75 +2101,31 @@ _wateringParticles = NodePath("../../pouring water vfx")
|
||||
position = Vector2(0, 450)
|
||||
sprite_frames = SubResource("SpriteFrames_4yiyq")
|
||||
animation = &"side walking wateringcan"
|
||||
frame_progress = 0.130831
|
||||
frame = 7
|
||||
frame_progress = 0.229832
|
||||
offset = Vector2(0, -450)
|
||||
|
||||
[node name="Hoe" type="Sprite2D" parent="CharacterBody2D/visuals"]
|
||||
visible = false
|
||||
position = Vector2(-35, -596)
|
||||
rotation = 0.74351
|
||||
scale = Vector2(0.24, 0.24)
|
||||
texture = ExtResource("815_1ia2b")
|
||||
region_enabled = true
|
||||
region_rect = Rect2(980, 179, 374, 1233)
|
||||
|
||||
[node name="WateringCanEmpty" type="Sprite2D" parent="CharacterBody2D/visuals"]
|
||||
visible = false
|
||||
position = Vector2(-38, -603)
|
||||
scale = Vector2(0.5, 0.5)
|
||||
texture = ExtResource("816_1a3c1")
|
||||
region_enabled = true
|
||||
region_rect = Rect2(-1, 1128, 417, 299)
|
||||
|
||||
[node name="WateringCanFull" type="Sprite2D" parent="CharacterBody2D/visuals"]
|
||||
visible = false
|
||||
modulate = Color(0.286, 0.16, 1, 1)
|
||||
position = Vector2(-38, -603)
|
||||
scale = Vector2(0.5, 0.5)
|
||||
texture = ExtResource("816_1a3c1")
|
||||
region_enabled = true
|
||||
region_rect = Rect2(-1, 1128, 417, 299)
|
||||
|
||||
[node name="WateringCanUI" type="Node2D" parent="CharacterBody2D" node_paths=PackedStringArray("_stages")]
|
||||
[node name="WateringCanUI" type="Node2D" parent="CharacterBody2D" node_paths=PackedStringArray("_slider")]
|
||||
position = Vector2(0, -929)
|
||||
scale = Vector2(2, 2)
|
||||
script = ExtResource("467_j4m0f")
|
||||
_stages = [NodePath("6"), NodePath("5"), NodePath("4"), NodePath("3"), NodePath("2"), NodePath("1")]
|
||||
_slider = NodePath("HSlider")
|
||||
|
||||
[node name="1" type="Sprite2D" parent="CharacterBody2D/WateringCanUI"]
|
||||
[node name="HSlider" type="HSlider" parent="CharacterBody2D/WateringCanUI"]
|
||||
visible = false
|
||||
position = Vector2(1, 0)
|
||||
scale = Vector2(1.8, 1.8)
|
||||
texture = ExtResource("468_f6xmn")
|
||||
|
||||
[node name="2" type="Sprite2D" parent="CharacterBody2D/WateringCanUI"]
|
||||
visible = false
|
||||
position = Vector2(2, 2)
|
||||
scale = Vector2(1.6, 1.6)
|
||||
texture = ExtResource("469_nxglm")
|
||||
|
||||
[node name="3" type="Sprite2D" parent="CharacterBody2D/WateringCanUI"]
|
||||
visible = false
|
||||
position = Vector2(3, 5)
|
||||
scale = Vector2(1.4, 1.4)
|
||||
texture = ExtResource("470_8fyd7")
|
||||
|
||||
[node name="4" type="Sprite2D" parent="CharacterBody2D/WateringCanUI"]
|
||||
visible = false
|
||||
position = Vector2(3, 7)
|
||||
scale = Vector2(1.2, 1.2)
|
||||
texture = ExtResource("471_dnm27")
|
||||
|
||||
[node name="5" type="Sprite2D" parent="CharacterBody2D/WateringCanUI"]
|
||||
visible = false
|
||||
position = Vector2(2, 7)
|
||||
scale = Vector2(1.1, 1.1)
|
||||
texture = ExtResource("472_e04c3")
|
||||
|
||||
[node name="6" type="Sprite2D" parent="CharacterBody2D/WateringCanUI"]
|
||||
visible = false
|
||||
position = Vector2(3, 12)
|
||||
texture = ExtResource("473_g32y8")
|
||||
modulate = Color(0.3515, 0.780425, 0.95, 1)
|
||||
custom_minimum_size = Vector2(150, 50)
|
||||
anchors_preset = 5
|
||||
anchor_left = 0.5
|
||||
anchor_right = 0.5
|
||||
offset_left = -43.0
|
||||
offset_right = 57.0
|
||||
offset_bottom = 64.0
|
||||
grow_horizontal = 2
|
||||
max_value = 1.0
|
||||
step = 0.0
|
||||
editable = false
|
||||
scrollable = false
|
||||
|
||||
[node name="FarmingControls" type="Node2D" parent="." node_paths=PackedStringArray("_movingPlayer", "_wateringParticles")]
|
||||
script = ExtResource("817_6nrw3")
|
||||
@@ -2202,11 +2162,18 @@ scale = Vector2(0.7, 0.7)
|
||||
script = ExtResource("819_4na52")
|
||||
itemToToggle = NodePath("../CharacterBody2D/visuals/Animated Sprites")
|
||||
|
||||
[node name="SFX" type="Node" parent="."]
|
||||
|
||||
[node name="AudioStreamPlayer2D" type="AudioStreamPlayer2D" parent="SFX"]
|
||||
stream = SubResource("AudioStreamRandomizer_dnm27")
|
||||
script = ExtResource("475_nxglm")
|
||||
|
||||
[connection signal="FilledWateringCan" from="." to="CharacterBody2D/WateringCanUI" method="Refill"]
|
||||
[connection signal="InventorySelectionChanged" from="." to="CharacterBody2D/WateringCanUI" method="IsWateringCanActive"]
|
||||
[connection signal="PickedUpTool" from="." to="CharacterBody2D" method="ActivateTool"]
|
||||
[connection signal="PickedUpTool" from="." to="CharacterBody2D/visuals" method="ActivateTool"]
|
||||
[connection signal="PickedUpTool" from="." to="CharacterBody2D/WateringCanUI" method="IsWateringCanActive"]
|
||||
[connection signal="WateringField" from="FarmingControls" to="CharacterBody2D" method="PlayWateringAnimation"]
|
||||
[connection signal="WateringField" from="FarmingControls" to="CharacterBody2D/visuals" method="PlayWateringAnimation"]
|
||||
[connection signal="WateringField" from="FarmingControls" to="CharacterBody2D/WateringCanUI" method="Water"]
|
||||
[connection signal="timelineEnded" from="dialogic toggle" to="." method="EnableMovement"]
|
||||
[connection signal="timelineStarted" from="dialogic toggle" to="." method="DisableMovement"]
|
||||
|
||||
@@ -43,7 +43,7 @@
|
||||
[ext_resource type="Texture2D" uid="uid://droj8w1mbm5k3" path="res://art/animation/Yeli2D/F02-Yeli_Talk/0019.png" id="39_vg7xi"]
|
||||
[ext_resource type="Texture2D" uid="uid://by5vtadhdwwag" path="res://art/animation/Yeli2D/F02-Yeli_Talk/0020.png" id="40_ipyxb"]
|
||||
[ext_resource type="PackedScene" uid="uid://cqc72e4hq6bcd" path="res://prefabs/interactions/interaction_area_2d.tscn" id="42_ahrat"]
|
||||
[ext_resource type="Script" path="res://scripts/GdScript/dialogic_toggle.gd" id="44_aqu1t"]
|
||||
[ext_resource type="Script" uid="uid://cvkw4qd2hxksi" path="res://scripts/GdScript/dialogic_toggle.gd" id="44_aqu1t"]
|
||||
|
||||
[sub_resource type="CircleShape2D" id="CircleShape2D_at1n1"]
|
||||
resource_local_to_scene = true
|
||||
|
||||
@@ -0,0 +1,40 @@
|
||||
[gd_scene load_steps=8 format=3 uid="uid://b1d2e7ely6hyw"]
|
||||
|
||||
[ext_resource type="Script" uid="uid://bdffon388rkty" path="res://scripts/CSharp/Common/Farming/FieldBehaviour2D.cs" id="1_qa01x"]
|
||||
[ext_resource type="Texture2D" uid="uid://cgmu3qlovdr22" path="res://art/masks/field_outline_1.png" id="2_w8caw"]
|
||||
[ext_resource type="Texture2D" uid="uid://eg5ej0mtuac" path="res://art/masks/field_outline_2.png" id="3_c014y"]
|
||||
[ext_resource type="Texture2D" uid="uid://djpigvoyadvjs" path="res://art/masks/field_outline_3.png" id="4_teirr"]
|
||||
[ext_resource type="Texture2D" uid="uid://c2pirgay3jfnn" path="res://art/farm/tilable grounds/böden/trockene farming erde.png" id="5_wx561"]
|
||||
[ext_resource type="Texture2D" uid="uid://ctvdxwgmfaj5c" path="res://art/farm/tilable grounds/böden/nasse farming erde.png" id="6_7m4xq"]
|
||||
[ext_resource type="PackedScene" uid="uid://cqc72e4hq6bcd" path="res://prefabs/interactions/interaction_area_2d.tscn" id="7_2eegd"]
|
||||
|
||||
[node name="BaseField" type="Node2D"]
|
||||
|
||||
[node name="FieldBehaviour" type="Sprite2D" parent="." node_paths=PackedStringArray("_fieldSprite", "_maskSprite", "PlantingInteraction", "PlantingPlaceholder")]
|
||||
z_index = -1
|
||||
scale = Vector2(0.9, 1)
|
||||
script = ExtResource("1_qa01x")
|
||||
_fieldSprite = NodePath("MaskedField/FieldTexture")
|
||||
_maskSprite = NodePath("MaskedField")
|
||||
_maskTexture = Array[Texture2D]([ExtResource("2_w8caw"), ExtResource("3_c014y"), ExtResource("4_teirr")])
|
||||
Tilled = ExtResource("5_wx561")
|
||||
Watered = ExtResource("6_7m4xq")
|
||||
PlantingInteraction = NodePath("../InteractionArea")
|
||||
PlantingPlaceholder = NodePath("PlantPlaceholder")
|
||||
|
||||
[node name="MaskedField" type="Sprite2D" parent="FieldBehaviour"]
|
||||
clip_children = 1
|
||||
scale = Vector2(1.5, 1.5)
|
||||
texture = ExtResource("3_c014y")
|
||||
|
||||
[node name="FieldTexture" type="Sprite2D" parent="FieldBehaviour/MaskedField"]
|
||||
texture = ExtResource("5_wx561")
|
||||
|
||||
[node name="PlantPlaceholder" type="Node2D" parent="FieldBehaviour"]
|
||||
|
||||
[node name="InteractionArea" parent="." node_paths=PackedStringArray("_spriteToOutline") instance=ExtResource("7_2eegd")]
|
||||
position = Vector2(-16, -54)
|
||||
_active = false
|
||||
_spriteToOutline = NodePath("../FieldBehaviour/MaskedField/FieldTexture")
|
||||
|
||||
[connection signal="Interacted" from="InteractionArea" to="FieldBehaviour" method="Farm"]
|
||||
@@ -1,54 +0,0 @@
|
||||
[gd_scene load_steps=10 format=3 uid="uid://b1d2e7ely6hyw"]
|
||||
|
||||
[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"]
|
||||
[ext_resource type="Texture2D" uid="uid://djpigvoyadvjs" path="res://art/masks/field_outline_3.png" id="5_4a8nv"]
|
||||
[ext_resource type="Texture2D" uid="uid://c2pirgay3jfnn" path="res://art/farm/tilable grounds/böden/trockene farming erde.png" id="6_l7j4c"]
|
||||
[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_jrdc4"]
|
||||
resource_local_to_scene = true
|
||||
radius = 300.0
|
||||
|
||||
[sub_resource type="CircleShape2D" id="CircleShape2D_l0vvv"]
|
||||
resource_local_to_scene = true
|
||||
radius = 300.0
|
||||
|
||||
[node name="BaseField" type="Node2D"]
|
||||
|
||||
[node name="FieldBehaviour" type="Sprite2D" parent="." node_paths=PackedStringArray("_fieldSprite", "_maskSprite", "_growingCollider")]
|
||||
z_index = -1
|
||||
scale = Vector2(0.9, 1)
|
||||
script = ExtResource("2_vl3uw")
|
||||
_fieldSprite = NodePath("MaskedField/FieldTexture")
|
||||
_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/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/PickupInteractionArea/Area2D" index="0"]
|
||||
shape = SubResource("CircleShape2D_l0vvv")
|
||||
|
||||
[node name="MaskedField" type="Sprite2D" parent="FieldBehaviour"]
|
||||
clip_children = 1
|
||||
scale = Vector2(1.5, 1.5)
|
||||
texture = ExtResource("4_di17a")
|
||||
|
||||
[node name="FieldTexture" type="Sprite2D" parent="FieldBehaviour/MaskedField"]
|
||||
texture = ExtResource("6_l7j4c")
|
||||
|
||||
[editable path="FieldBehaviour/BasePlant2"]
|
||||
[editable path="FieldBehaviour/BasePlant2/GrowingInteractionArea"]
|
||||
[editable path="FieldBehaviour/BasePlant2/ReadyPlantInventoryItem"]
|
||||
[editable path="FieldBehaviour/BasePlant2/ReadyPlantInventoryItem/PickupInteractionArea"]
|
||||
@@ -40,6 +40,7 @@ _bigPlants = [NodePath("BigPlant/01"), NodePath("BigPlant/02"), NodePath("BigPla
|
||||
_readyPlants = [NodePath("ReadyPlantInventoryItem/ReadyPlant/01"), NodePath("ReadyPlantInventoryItem/ReadyPlant/02"), NodePath("ReadyPlantInventoryItem/ReadyPlant/03"), NodePath("ReadyPlantInventoryItem/ReadyPlant/04")]
|
||||
_harvestablePlant = NodePath("ReadyPlantInventoryItem")
|
||||
_magicEffect = NodePath("magic vfx")
|
||||
_magicWordNeeded = false
|
||||
|
||||
[node name="Seeds" type="Node2D" parent="."]
|
||||
position = Vector2(0, 0.5)
|
||||
@@ -225,6 +226,7 @@ color = Color(0.400601, 0.62444, 0.791217, 1)
|
||||
hue_variation_max = 0.4
|
||||
|
||||
[connection signal="Interacted" from="GrowingInteractionArea" to="." method="Grow"]
|
||||
[connection signal="SuccessfulPickUp" from="ReadyPlantInventoryItem" to="." method="queue_free"]
|
||||
|
||||
[editable path="GrowingInteractionArea"]
|
||||
[editable path="ReadyPlantInventoryItem"]
|
||||
|
||||
+2
-1
@@ -28,9 +28,9 @@ buses/default_bus_layout="uid://b6dwkmkyb0axk"
|
||||
SceneTransition="*res://scenes/SceneTransition.tscn"
|
||||
Dialogic="*res://addons/dialogic/Core/DialogicGameHandler.gd"
|
||||
InventoryManager="*res://scripts/CSharp/Common/Inventory/InventoryManager.cs"
|
||||
QuestManager="*res://prefabs/quests/quest_manager_autoload.tscn"
|
||||
FightManagerAutoload="*res://prefabs/fight/fight_manager_autoload.tscn"
|
||||
InputService="*res://scripts/CSharp/Common/Services/InputService.cs"
|
||||
QuestManager="*res://prefabs/quests/quest_manager_autoload.tscn"
|
||||
Signal_Debugger="*res://addons/SignalVisualizer/Debugger/SignalDebugger.gd"
|
||||
|
||||
[dialogic]
|
||||
@@ -207,6 +207,7 @@ folder_colors={
|
||||
[global_group]
|
||||
|
||||
PlantGrowing=""
|
||||
Pickup=""
|
||||
|
||||
[input]
|
||||
|
||||
|
||||
@@ -1,7 +1,8 @@
|
||||
[gd_resource type="Resource" script_class="ItemResource" load_steps=3 format=3 uid="uid://d1uuxp1lp4aro"]
|
||||
[gd_resource type="Resource" script_class="ItemResource" load_steps=4 format=3 uid="uid://d1uuxp1lp4aro"]
|
||||
|
||||
[ext_resource type="Script" uid="uid://cbskymrxs6ksu" path="res://scripts/CSharp/Common/Inventory/ItemResource.cs" id="1_dustj"]
|
||||
[ext_resource type="Texture2D" uid="uid://ce04nexh36uwe" path="res://art/ui/UI/icons/icon-seed-tomatoe.png" id="1_u15c2"]
|
||||
[ext_resource type="PackedScene" uid="uid://gishbn0a8eke" path="res://prefabs/farm/tomato_plant.tscn" id="2_xhgqu"]
|
||||
|
||||
[resource]
|
||||
script = ExtResource("1_dustj")
|
||||
@@ -9,4 +10,5 @@ name = "Tomato Seed"
|
||||
color = Color(0.135039, 0.307214, 0.333128, 1)
|
||||
icon = ExtResource("1_u15c2")
|
||||
maxStack = 20
|
||||
itemPrefab = ExtResource("2_xhgqu")
|
||||
metadata/_custom_type_script = "uid://cbskymrxs6ksu"
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
[gd_scene load_steps=119 format=3 uid="uid://gigb28qk8t12"]
|
||||
[gd_scene load_steps=114 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"]
|
||||
@@ -30,15 +30,13 @@
|
||||
[ext_resource type="PackedScene" uid="uid://dfvgp1my5rydh" path="res://prefabs/characters/Yeli.tscn" id="24_wtdui"]
|
||||
[ext_resource type="Script" uid="uid://dhxtdhfqx3bte" path="res://scripts/CSharp/Common/Farming/FieldService2D.cs" id="25_0qu0h"]
|
||||
[ext_resource type="PackedScene" uid="uid://dpbbroif2tnil" path="res://prefabs/interactions/generic_item_on_ground_2d.tscn" id="25_hukxv"]
|
||||
[ext_resource type="Resource" uid="uid://c5yg3lx756v4v" path="res://resources/items/hoe.tres" id="26_ipqaa"]
|
||||
[ext_resource type="Resource" uid="uid://c7viddcd3kywp" path="res://resources/items/shovel.tres" id="27_ipqaa"]
|
||||
[ext_resource type="PackedScene" uid="uid://cqc72e4hq6bcd" path="res://prefabs/interactions/interaction_area_2d.tscn" id="27_klb81"]
|
||||
[ext_resource type="Resource" uid="uid://dlcmqfjvgphqu" path="res://resources/items/rake.tres" id="28_6b2nr"]
|
||||
[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="Resource" uid="uid://d1uuxp1lp4aro" path="res://resources/items/tomato_seed.tres" id="35_64mdn"]
|
||||
[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"]
|
||||
[ext_resource type="AudioStream" uid="uid://dku1rq5cocisg" path="res://audio/Music/Farming_90BPM_69Bars.wav" id="37_di1ed"]
|
||||
@@ -165,10 +163,6 @@ size = Vector2(1041, 368)
|
||||
resource_local_to_scene = true
|
||||
radius = 371.058
|
||||
|
||||
[sub_resource type="CircleShape2D" id="CircleShape2D_ycj14"]
|
||||
resource_local_to_scene = true
|
||||
radius = 300.0
|
||||
|
||||
[sub_resource type="CircleShape2D" id="CircleShape2D_2065p"]
|
||||
resource_local_to_scene = true
|
||||
radius = 300.0
|
||||
@@ -177,14 +171,6 @@ radius = 300.0
|
||||
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
|
||||
|
||||
[sub_resource type="ShaderMaterial" id="ShaderMaterial_lhtpe"]
|
||||
|
||||
[sub_resource type="ShaderMaterial" id="ShaderMaterial_bcdgk"]
|
||||
@@ -1044,14 +1030,12 @@ y_sort_enabled = true
|
||||
[node name="Yeli" parent="YSorted" instance=ExtResource("24_wtdui")]
|
||||
position = Vector2(6403, 3362)
|
||||
_timelinesToPlay = PackedStringArray("yeli_quest_select")
|
||||
_retriggerSameTimeline = true
|
||||
|
||||
[node name="Vesna" parent="YSorted" node_paths=PackedStringArray("_fieldParent") instance=ExtResource("1_7wfwe")]
|
||||
z_index = 1
|
||||
position = Vector2(9322, 2018)
|
||||
_fieldParent = NodePath("../Farm visuals/FieldParent")
|
||||
_hoe = ExtResource("28_6b2nr")
|
||||
_wateringCan = ExtResource("28_ipqaa")
|
||||
|
||||
[node name="FarmingControls" parent="YSorted/Vesna" index="1" node_paths=PackedStringArray("_camera")]
|
||||
_camera = NodePath("../../../Camera2D")
|
||||
@@ -1084,16 +1068,6 @@ _id = 1
|
||||
position = Vector2(146, -130)
|
||||
shape = SubResource("CircleShape2D_p6n74")
|
||||
|
||||
[node name="HoeGenericPickup" parent="YSorted" instance=ExtResource("25_hukxv")]
|
||||
visible = false
|
||||
position = Vector2(6095, 2087)
|
||||
|
||||
[node name="SpawnWithItem" parent="YSorted/HoeGenericPickup" index="0"]
|
||||
_blueprint = ExtResource("26_ipqaa")
|
||||
|
||||
[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)
|
||||
|
||||
@@ -1115,25 +1089,18 @@ _blueprint = ExtResource("28_6b2nr")
|
||||
[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
|
||||
position = Vector2(15642, 2158)
|
||||
[node name="SeedPickup" parent="YSorted" instance=ExtResource("25_hukxv")]
|
||||
position = Vector2(10114, 2469)
|
||||
_infiniteSupply = true
|
||||
|
||||
[node name="SpawnWithItem" parent="YSorted/ScytheGenericPickup" index="0"]
|
||||
_blueprint = ExtResource("29_wtdui")
|
||||
[node name="SpawnWithItem" parent="YSorted/SeedPickup" index="0"]
|
||||
_blueprint = ExtResource("35_64mdn")
|
||||
|
||||
[node name="CollisionShape3D" parent="YSorted/ScytheGenericPickup/PickupInteractionArea/Area2D" index="0"]
|
||||
shape = SubResource("CircleShape2D_lbnqo")
|
||||
[node name="CollisionShape3D" parent="YSorted/SeedPickup/PickupInteractionArea/Area2D" index="0"]
|
||||
shape = SubResource("CircleShape2D_tm0yg")
|
||||
|
||||
[node name="ShovelGenericPickup" parent="YSorted" instance=ExtResource("25_hukxv")]
|
||||
visible = false
|
||||
position = Vector2(5454, 2049)
|
||||
|
||||
[node name="SpawnWithItem" parent="YSorted/ShovelGenericPickup" index="0"]
|
||||
_blueprint = ExtResource("27_ipqaa")
|
||||
|
||||
[node name="CollisionShape3D" parent="YSorted/ShovelGenericPickup/PickupInteractionArea/Area2D" index="0"]
|
||||
shape = SubResource("CircleShape2D_l4wxt")
|
||||
[node name="Icon" parent="YSorted/SeedPickup" index="4"]
|
||||
scale = Vector2(1, 1)
|
||||
|
||||
[node name="Farm visuals" type="Node2D" parent="YSorted"]
|
||||
position = Vector2(-60, 122)
|
||||
@@ -1410,18 +1377,6 @@ offset = Vector2(0, -172)
|
||||
region_enabled = true
|
||||
region_rect = Rect2(1837, 651, 139, 180)
|
||||
|
||||
[node name="bush24" type="Sprite2D" parent="YSorted/Farm visuals/Static/greenery/left side"]
|
||||
modulate = Color(0.8428, 0.8771, 0.98, 1)
|
||||
z_index = 2
|
||||
y_sort_enabled = true
|
||||
material = SubResource("ShaderMaterial_bcdgk")
|
||||
position = Vector2(15973, 3380)
|
||||
scale = Vector2(-1.93815, 1.5875)
|
||||
texture = ExtResource("14_mrwmr")
|
||||
offset = Vector2(0, -172)
|
||||
region_enabled = true
|
||||
region_rect = Rect2(1464, 419, 144, 115)
|
||||
|
||||
[node name="bush3" type="Sprite2D" parent="YSorted/Farm visuals/Static/greenery/left side"]
|
||||
modulate = Color(1, 0.86, 0.86, 1)
|
||||
material = SubResource("ShaderMaterial_bcdgk")
|
||||
@@ -1992,7 +1947,7 @@ region_rect = Rect2(29, 204, 219, 159)
|
||||
|
||||
[node name="grass5" type="Sprite2D" parent="YSorted/Farm visuals/Static/greenery/grass"]
|
||||
z_index = -5
|
||||
position = Vector2(15375, 3149)
|
||||
position = Vector2(15381, 3152)
|
||||
scale = Vector2(5.77602, 3.87779)
|
||||
texture = ExtResource("44_uxa2m")
|
||||
region_enabled = true
|
||||
@@ -2332,6 +2287,13 @@ offset_top = 0.228533
|
||||
offset_right = -456.339
|
||||
offset_bottom = 30.2285
|
||||
|
||||
[node name="QuestLogRoot" parent="CanvasLayer" index="2"]
|
||||
metadata/_edit_use_anchors_ = true
|
||||
|
||||
[node name="Text" parent="CanvasLayer/Control/ColorRect" index="0"]
|
||||
text = "[Hier könnte ihre Werbung stehen]"
|
||||
autowrap_mode = 3
|
||||
|
||||
[node name="Audio" type="Node" parent="."]
|
||||
|
||||
[node name="Background Music Ramp up" type="AudioStreamPlayer2D" parent="Audio"]
|
||||
@@ -2381,17 +2343,16 @@ script = ExtResource("40_w3jkj")
|
||||
script = ExtResource("66_2065p")
|
||||
questResource = ExtResource("67_tm0yg")
|
||||
toStatus = 1
|
||||
makeCurrent = true
|
||||
|
||||
[node name="ToolsCollectedTrigger" type="Node" parent="SpeicialQuestTrigger"]
|
||||
script = ExtResource("68_hux6i")
|
||||
_itemsToContain = Array[Resource]([SubResource("Resource_y820s"), SubResource("Resource_50loj")])
|
||||
_onActiveQuest = ExtResource("68_lbnqo")
|
||||
_onAvailableQuest = ExtResource("68_lbnqo")
|
||||
_toNextQuest = ExtResource("69_l4wxt")
|
||||
|
||||
[node name="FieldWorkTrigger" type="Node" parent="SpeicialQuestTrigger"]
|
||||
script = ExtResource("74_fv1t2")
|
||||
_onActiveQuest = ExtResource("75_l7ekk")
|
||||
_onAvailableQuest = ExtResource("75_l7ekk")
|
||||
_toNextQuest = ExtResource("76_xcwle")
|
||||
|
||||
[node name="StartDialog" type="Node" parent="SpeicialQuestTrigger/FieldWorkTrigger"]
|
||||
@@ -2403,6 +2364,7 @@ timeline = "quest2_tomatoes_end"
|
||||
[connection signal="InteractedTool" from="YSorted/Brünnen/InteractionArea" to="YSorted/Vesna" method="TryFillWateringCan"]
|
||||
[connection signal="SuccessfulPickUp" from="YSorted/CanGenericPickup" to="YSorted/Vesna" method="HandlePickUp"]
|
||||
[connection signal="SuccessfulPickUp" from="YSorted/RakeGenericPickup" to="YSorted/Vesna" method="HandlePickUp"]
|
||||
[connection signal="SuccessfulPickUp" from="YSorted/SeedPickup" to="YSorted/Vesna" method="HandlePickUp"]
|
||||
[connection signal="InteractedTool" from="YSorted/Farm visuals/Static/EnterHouseInteraction" to="." method="LoadSceneAtIndex"]
|
||||
[connection signal="FieldCreated" from="YSorted/Farm visuals/FieldParent" to="Audio/SFX/Farming SFX" method="PlayOneShot"]
|
||||
[connection signal="input_event" from="YSorted/Farm visuals/FieldParent/Area2D" to="YSorted/Vesna/FarmingControls" method="InputEventPressedOn"]
|
||||
@@ -2416,18 +2378,14 @@ timeline = "quest2_tomatoes_end"
|
||||
[connection signal="Dialogue" from="YSorted/ducks/DialogicToggle" to="YSorted/ducks/dialogic starter" method="open"]
|
||||
[connection signal="finished" from="Audio/Background Music Ramp up" to="Audio/Background Music loop" method="PlayFromOffset"]
|
||||
[connection signal="ready" from="SpeicialQuestTrigger/QuestInstantStart" to="SpeicialQuestTrigger/QuestInstantStart/QuestTrigger" method="Trigger"]
|
||||
[connection signal="OnFulfilled" from="SpeicialQuestTrigger/FieldWorkTrigger" to="SpeicialQuestTrigger/FieldWorkTrigger/StartDialog" method="start"]
|
||||
[connection signal="OnFulfilled" from="SpeicialQuestTrigger/FieldWorkTrigger" to="SpeicialQuestTrigger/FieldWorkTrigger/StartDialog" method="open"]
|
||||
|
||||
[editable path="YSorted/Vesna"]
|
||||
[editable path="YSorted/Brünnen/InteractionArea"]
|
||||
[editable path="YSorted/HoeGenericPickup"]
|
||||
[editable path="YSorted/HoeGenericPickup/PickupInteractionArea"]
|
||||
[editable path="YSorted/CanGenericPickup"]
|
||||
[editable path="YSorted/CanGenericPickup/PickupInteractionArea"]
|
||||
[editable path="YSorted/RakeGenericPickup"]
|
||||
[editable path="YSorted/RakeGenericPickup/PickupInteractionArea"]
|
||||
[editable path="YSorted/ScytheGenericPickup"]
|
||||
[editable path="YSorted/ScytheGenericPickup/PickupInteractionArea"]
|
||||
[editable path="YSorted/ShovelGenericPickup"]
|
||||
[editable path="YSorted/ShovelGenericPickup/PickupInteractionArea"]
|
||||
[editable path="YSorted/SeedPickup"]
|
||||
[editable path="YSorted/SeedPickup/PickupInteractionArea"]
|
||||
[editable path="CanvasLayer"]
|
||||
|
||||
@@ -2186,7 +2186,7 @@ script = ExtResource("56_bjj0f")
|
||||
script = ExtResource("55_ub0r7")
|
||||
questResource = ExtResource("56_q833x")
|
||||
toStatus = 1
|
||||
makeCurrent = true
|
||||
makeActive = true
|
||||
|
||||
[connection signal="body_entered" from="Fight1/FightStarter/TriggerArea" to="Fight1/FightStarter" method="Start"]
|
||||
[connection signal="FightEnded" from="Fight1/FightBaseScene" to="YSorted/Vesna" method="show"]
|
||||
|
||||
@@ -563,7 +563,7 @@ script = ExtResource("17_k0k8c")
|
||||
script = ExtResource("21_blyw3")
|
||||
questResource = ExtResource("22_yd2gv")
|
||||
toStatus = 1
|
||||
makeCurrent = true
|
||||
makeActive = true
|
||||
|
||||
[node name="Camera2D" type="Camera2D" parent="." node_paths=PackedStringArray("_followNode")]
|
||||
position = Vector2(-1534, -26)
|
||||
|
||||
@@ -18,7 +18,7 @@ text = "Start Quest 1"
|
||||
script = ExtResource("1_wnfrg")
|
||||
questResource = ExtResource("2_nud5h")
|
||||
toStatus = 1
|
||||
makeCurrent = true
|
||||
makeActive = true
|
||||
|
||||
[node name="Button2" type="Button" parent="."]
|
||||
offset_left = 460.0
|
||||
@@ -43,7 +43,7 @@ text = "Start Quest 2"
|
||||
script = ExtResource("1_wnfrg")
|
||||
questResource = ExtResource("3_tb5fn")
|
||||
toStatus = 1
|
||||
makeCurrent = true
|
||||
makeActive = true
|
||||
|
||||
[node name="Button4" type="Button" parent="."]
|
||||
offset_left = 460.0
|
||||
|
||||
@@ -41,7 +41,7 @@ text = "Active"
|
||||
script = ExtResource("3_sx4ix")
|
||||
questResource = ExtResource("4_qyyck")
|
||||
toStatus = 1
|
||||
makeCurrent = true
|
||||
makeActive = true
|
||||
|
||||
[node name="Done" type="Button" parent="CanvasLayer2/VBoxContainer/HBoxContainer"]
|
||||
layout_mode = 2
|
||||
|
||||
@@ -77,16 +77,26 @@ public partial class InteractionArea2D : Node2D
|
||||
|
||||
if (@event.IsAction("interact") && @event.IsPressed())
|
||||
{
|
||||
if (_area.HasOverlappingBodies())
|
||||
{
|
||||
_label.Hide();
|
||||
TryInteract();
|
||||
}
|
||||
|
||||
if (@event.IsActionPressed("click") && @event.IsPressed())
|
||||
{
|
||||
TryInteract();
|
||||
}
|
||||
}
|
||||
|
||||
private void TryInteract()
|
||||
{
|
||||
if (_area.HasOverlappingBodies())
|
||||
{
|
||||
_label.Hide();
|
||||
|
||||
if (_useSprite && _useOutline)
|
||||
_spriteToOutline.Material = _backupMaterial;
|
||||
if (_useSprite && _useOutline)
|
||||
_spriteToOutline.Material = _backupMaterial;
|
||||
|
||||
EmitSignal(SignalName.InteractedTool, _id);
|
||||
EmitSignal(SignalName.Interacted);
|
||||
}
|
||||
EmitSignal(SignalName.InteractedTool, _id);
|
||||
EmitSignal(SignalName.Interacted);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -165,4 +165,5 @@ public partial class FarmingControls2D : Node2D
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
}
|
||||
@@ -1,5 +1,6 @@
|
||||
using System;
|
||||
using Babushka.scripts.CSharp.Common.CharacterControls;
|
||||
using Babushka.scripts.CSharp.Common.Inventory;
|
||||
using Godot;
|
||||
|
||||
namespace Babushka.scripts.CSharp.Common.Farming;
|
||||
@@ -13,7 +14,9 @@ public partial class FieldBehaviour2D : Sprite2D
|
||||
[Export] private Texture2D Tilled;
|
||||
[Export] private Texture2D Watered;
|
||||
[Export] public FieldState FieldState = FieldState.Tilled;
|
||||
[Export] private InteractionArea2D _growingCollider;
|
||||
[Export] public InteractionArea2D PlantingInteraction;
|
||||
[Export] public Node2D PlantingPlaceholder;
|
||||
|
||||
|
||||
public Vector2 FieldPosition;
|
||||
|
||||
@@ -31,19 +34,22 @@ public partial class FieldBehaviour2D : Sprite2D
|
||||
{
|
||||
case FieldState.Empty:
|
||||
FieldState = FieldState.Empty;
|
||||
PlantingInteraction.IsActive = false;
|
||||
break;
|
||||
case FieldState.Tilled:
|
||||
FieldState = FieldState.Tilled;
|
||||
_fieldSprite.Texture = Tilled;
|
||||
_growingCollider.Visible = false;
|
||||
PlantingInteraction.IsActive = true;
|
||||
break;
|
||||
case FieldState.Watered:
|
||||
FieldState = FieldState.Watered;
|
||||
_fieldSprite.Texture = Watered;
|
||||
_growingCollider.Visible = true;
|
||||
PlantingInteraction.IsActive = true;
|
||||
break;
|
||||
case FieldState.Planted:
|
||||
FieldState = FieldState.Planted;
|
||||
_fieldSprite.Texture = Tilled;
|
||||
PlantingInteraction.IsActive = false;
|
||||
break;
|
||||
default:
|
||||
FieldState = FieldState.NotFound;
|
||||
@@ -62,19 +68,42 @@ public partial class FieldBehaviour2D : Sprite2D
|
||||
/// </summary>
|
||||
public void Farm()
|
||||
{
|
||||
switch (FieldState)
|
||||
if (TryPlant())
|
||||
{
|
||||
case FieldState.Empty:
|
||||
_fieldSprite.Texture = Tilled;
|
||||
FieldState = FieldState.Tilled;
|
||||
break;
|
||||
case FieldState.Watered:
|
||||
FieldState = FieldState.Planted;
|
||||
break;
|
||||
case FieldState.Planted:
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
UpdateFieldState(FieldState.Planted);
|
||||
}
|
||||
}
|
||||
|
||||
private bool TryPlant()
|
||||
{
|
||||
bool success = false;
|
||||
int currentSlotIndex = InventoryManager.Instance.CurrentSelectedSlotIndex;
|
||||
ItemInstance? item = InventoryManager.Instance.playerInventory.Slots[currentSlotIndex].itemInstance;
|
||||
|
||||
if (item == null || PlantingPlaceholder.GetChildCount() > 0)
|
||||
return success;
|
||||
|
||||
PackedScene? plantPrefab = item.blueprint.itemPrefab;
|
||||
|
||||
if (plantPrefab != null)
|
||||
{
|
||||
Node plantInstance = plantPrefab.Instantiate();
|
||||
if (plantInstance is Node2D plant2d)
|
||||
{
|
||||
PlantingPlaceholder.AddChild(plant2d);
|
||||
plant2d.GlobalPosition = PlantingPlaceholder.GlobalPosition;
|
||||
PlantBehaviour2D? plantBehaviour = plant2d as PlantBehaviour2D;
|
||||
|
||||
if (plantBehaviour != null)
|
||||
{
|
||||
plantBehaviour.Field = this;
|
||||
}
|
||||
|
||||
success = true;
|
||||
}
|
||||
}
|
||||
|
||||
return success;
|
||||
}
|
||||
|
||||
}
|
||||
@@ -12,20 +12,6 @@ public partial class FieldService2D : Node2D
|
||||
|
||||
[Signal] public delegate void FieldCreatedEventHandler();
|
||||
|
||||
/*
|
||||
public override void _PhysicsProcess(double delta)
|
||||
{
|
||||
var spaceState = GetWorld2D().DirectSpaceState;
|
||||
// use global coordinates, not local to node
|
||||
var query = PhysicsRayQueryParameters2D.Create(GetGlobalMousePosition(), new Vector3(0,0,-1),
|
||||
CollisionMask, [GetRid()]);
|
||||
var result = spaceState.IntersectRay(query);
|
||||
if (result.Count > 0)
|
||||
GD.Print("Hit at point: ", result["position"]);
|
||||
}
|
||||
*/
|
||||
|
||||
|
||||
//Create
|
||||
public bool TryAddEntry(Vector2I key, FieldBehaviour2D field)
|
||||
{
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
using System;
|
||||
using Babushka.scripts.CSharp.Common.CharacterControls;
|
||||
using Babushka.scripts.CSharp.Common.Animation;
|
||||
using Babushka.scripts.CSharp.Common.Inventory;
|
||||
using Godot;
|
||||
|
||||
@@ -25,6 +25,23 @@ public partial class PlantBehaviour2D : Node2D
|
||||
private string _magicWordDialogicEventName = "MagicWord";
|
||||
private Sprite2D _currentPlantSprite = null;
|
||||
private bool _magicWordSaid = false;
|
||||
|
||||
/// <summary>
|
||||
/// public accessor for the field reference
|
||||
/// </summary>
|
||||
public FieldBehaviour2D Field
|
||||
{
|
||||
get => _field;
|
||||
set => _field = value;
|
||||
}
|
||||
|
||||
public override void _Ready()
|
||||
{
|
||||
GetTree().CallGroup("PlantGrowing", VesnaAnimations.MethodName.PlayFarmingAnimation);
|
||||
_state = PlantState.Planted;
|
||||
_currentPlantSprite = GetRandomSprite(_seeds);
|
||||
_currentPlantSprite.Visible = true;
|
||||
}
|
||||
|
||||
|
||||
/// <summary>
|
||||
@@ -35,9 +52,7 @@ public partial class PlantBehaviour2D : Node2D
|
||||
if (_field.FieldState != FieldState.Watered || _magicWordSaid != _magicWordNeeded)
|
||||
return;
|
||||
|
||||
//GetTree().CallGroup("PlantGrowing", PlayerMovement.MethodName.PlayFarmingAnimation);
|
||||
// todo:
|
||||
// find out why the last plant stage is being skipped the second time around
|
||||
GetTree().CallGroup("PlantGrowing", VesnaAnimations.MethodName.PlayFarmingAnimation);
|
||||
switch (_state)
|
||||
{
|
||||
case PlantState.None:
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
using Godot;
|
||||
using Godot;
|
||||
namespace Babushka.scripts.CSharp.Common.Inventory;
|
||||
|
||||
// Do not instantiate this resource
|
||||
|
||||
@@ -15,11 +15,15 @@ public partial class ItemResource : Resource
|
||||
|
||||
[Export]
|
||||
public int maxStack;
|
||||
|
||||
[Export]
|
||||
public PackedScene? itemPrefab;
|
||||
|
||||
public ItemResource()
|
||||
{
|
||||
name = "";
|
||||
color = Colors.Red;
|
||||
maxStack = 1;
|
||||
itemPrefab = null;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,57 @@
|
||||
using Babushka.scripts.CSharp.Common.CharacterControls;
|
||||
using Babushka.scripts.CSharp.Common.Inventory;
|
||||
using Godot;
|
||||
using Godot.Collections;
|
||||
|
||||
namespace Babushka.scripts.CSharp.Common.Items;
|
||||
|
||||
public partial class InventoryDependentInteractable : Node2D
|
||||
{
|
||||
[Export] private InteractionArea2D _interactionArea;
|
||||
[Export] private Array<ItemResource> _itemsToReactTo;
|
||||
[Export] private bool _activateOnItem = true;
|
||||
|
||||
private InventoryManager _inventoryManager;
|
||||
private InventoryInstance _inventoryInstance;
|
||||
|
||||
public override void _Ready()
|
||||
{
|
||||
_inventoryManager = InventoryManager.Instance;
|
||||
_inventoryInstance = _inventoryManager.playerInventory;
|
||||
_inventoryManager.SlotIndexChanged += HandleInventorySelectedSlotIndexChanged;
|
||||
}
|
||||
|
||||
private void HandleInventorySelectedSlotIndexChanged(int newIndex)
|
||||
{
|
||||
int currentSlotIndex = InventoryManager.Instance.CurrentSelectedSlotIndex;
|
||||
ItemInstance? item = InventoryManager.Instance.playerInventory.Slots[currentSlotIndex].itemInstance;
|
||||
|
||||
if (item != null)
|
||||
{
|
||||
if (_activateOnItem)
|
||||
{
|
||||
_interactionArea.IsActive = Match(item.blueprint);
|
||||
}
|
||||
else
|
||||
{
|
||||
_interactionArea.IsActive = !Match(item.blueprint);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
private bool Match(ItemResource inventoryItem)
|
||||
{
|
||||
bool matched = false;
|
||||
|
||||
foreach (ItemResource item in _itemsToReactTo)
|
||||
{
|
||||
if (inventoryItem == item)
|
||||
{
|
||||
matched = true;
|
||||
}
|
||||
}
|
||||
|
||||
return matched;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1 @@
|
||||
uid://doxr432r22dd0
|
||||
@@ -0,0 +1,12 @@
|
||||
using Babushka.scripts.CSharp.Common.Animation;
|
||||
using Godot;
|
||||
|
||||
namespace Babushka.scripts.CSharp.Common.Items;
|
||||
|
||||
public partial class NonInventoryPickup : Node2D
|
||||
{
|
||||
public void PlayPickupAnimation()
|
||||
{
|
||||
GetTree().CallGroup("Pickup", VesnaAnimations.MethodName.PlayPickUpAnimation);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1 @@
|
||||
uid://dkk1vjijvgrd7
|
||||
@@ -1,22 +0,0 @@
|
||||
using Godot;
|
||||
using System;
|
||||
using Babushka.scripts.CSharp.Common.Quest;
|
||||
|
||||
public partial class PopUpPostIt : Control
|
||||
{
|
||||
private Label Text => GetNode<Label>("Text");
|
||||
|
||||
private AnimationPlayer Animation => GetNode<AnimationPlayer>("AnimationPlayer");
|
||||
|
||||
QuestManager QM => QuestManager.Instance!;
|
||||
public override void _EnterTree()
|
||||
{
|
||||
QM.QuestBecomesActive += NewQuestPostIt;
|
||||
}
|
||||
|
||||
private void NewQuestPostIt(QuestResource questResource)
|
||||
{
|
||||
Text.Text = questResource.title;
|
||||
Animation.Play("NewPostit");
|
||||
}
|
||||
}
|
||||
@@ -1 +0,0 @@
|
||||
uid://byar6yqrlph6k
|
||||
@@ -24,7 +24,7 @@ public partial class QuestListItemUi : Control
|
||||
_ => ""
|
||||
};
|
||||
|
||||
UpdateCircled(questResource == QuestManager.Instance.GetFollowQuest());
|
||||
UpdateCircled(questResource == QuestManager.Instance.GetActiveQuest());
|
||||
ShowName(name);
|
||||
}
|
||||
|
||||
|
||||
@@ -17,10 +17,10 @@ public partial class QuestLog : Control
|
||||
|
||||
public QuestResource? currentDetailQuest
|
||||
{
|
||||
get => QuestManager.Instance!.GetFollowQuest();
|
||||
get => QuestManager.Instance!.GetActiveQuest();
|
||||
set
|
||||
{
|
||||
QuestManager.Instance!.SetFollowQuest(value); // TODO: fix setup
|
||||
QuestManager.Instance!.SetActiveQuest(value); // TODO: fix setup
|
||||
EmitSignalDetailQuestChanged(this);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -11,7 +11,7 @@ public partial class QuestManager : Node
|
||||
public static QuestManager? Instance { get; private set; }
|
||||
|
||||
[Signal]
|
||||
public delegate void QuestBecomesActiveEventHandler(QuestResource questResource);
|
||||
public delegate void QuestBecomesAvailableEventHandler(QuestResource questResource);
|
||||
|
||||
[Signal]
|
||||
public delegate void QuestsChangedEventHandler();
|
||||
@@ -26,7 +26,7 @@ public partial class QuestManager : Node
|
||||
|
||||
private Godot.Collections.Dictionary<QuestResource, QuestStatus> _questStatus = new();
|
||||
|
||||
private QuestResource? _followQuest;
|
||||
private QuestResource? _activeQuest;
|
||||
|
||||
|
||||
public void ChangeQuestStatus(QuestResource questResource, QuestStatus.Status newStatus)
|
||||
@@ -40,11 +40,11 @@ public partial class QuestManager : Node
|
||||
value.status = newStatus;
|
||||
|
||||
EmitSignalQuestsChanged();
|
||||
EmitSignalDialogicActiveQuest(_followQuest?.id ?? "none");
|
||||
EmitSignalDialogicActiveQuest(_activeQuest?.id ?? "none");
|
||||
|
||||
if (newStatus == QuestStatus.Status.Active)
|
||||
if (newStatus == QuestStatus.Status.Available)
|
||||
{
|
||||
EmitSignalQuestBecomesActive(questResource);
|
||||
EmitSignalQuestBecomesAvailable(questResource);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -53,9 +53,9 @@ public partial class QuestManager : Node
|
||||
return _questStatus.Where(qs => qs.Value.status != QuestStatus.Status.Hidden);
|
||||
}
|
||||
|
||||
public IEnumerable<QuestPair> GetActiveQuests()
|
||||
public IEnumerable<QuestPair> GetAvailableQuests()
|
||||
{
|
||||
return _questStatus.Where(qs => qs.Value.status == QuestStatus.Status.Active);
|
||||
return _questStatus.Where(qs => qs.Value.status == QuestStatus.Status.Available);
|
||||
}
|
||||
public QuestStatus GetQuestStatus(QuestResource questResource)
|
||||
{
|
||||
@@ -67,15 +67,15 @@ public partial class QuestManager : Node
|
||||
return status;
|
||||
}
|
||||
|
||||
public QuestResource? GetFollowQuest()
|
||||
public QuestResource? GetActiveQuest()
|
||||
{
|
||||
return _followQuest;
|
||||
return _activeQuest;
|
||||
}
|
||||
|
||||
public void SetFollowQuest(QuestResource? questResource)
|
||||
public void SetActiveQuest(QuestResource? questResource)
|
||||
{
|
||||
_followQuest = questResource;
|
||||
_activeQuest = questResource;
|
||||
EmitSignalQuestsChanged();
|
||||
EmitSignalDialogicActiveQuest(_followQuest?.id ?? "none");
|
||||
EmitSignalDialogicActiveQuest(_activeQuest?.id ?? "none");
|
||||
}
|
||||
}
|
||||
|
||||
@@ -30,7 +30,7 @@ public partial class QuestMessagePopup : Control
|
||||
|
||||
private void NewActiveQuest()
|
||||
{
|
||||
var shownQuest = QuestManager.Instance!.GetFollowQuest();
|
||||
var shownQuest = QuestManager.Instance!.GetActiveQuest();
|
||||
if (_currentlyShown == shownQuest)
|
||||
return;
|
||||
|
||||
|
||||
@@ -6,7 +6,7 @@ public partial class QuestResource : Resource
|
||||
{
|
||||
[Export]
|
||||
public string id = "";
|
||||
[Export]
|
||||
[Export(PropertyHint.MultilineText)]
|
||||
public string title = "";
|
||||
[Export(PropertyHint.MultilineText)]
|
||||
public string description = "";
|
||||
|
||||
@@ -7,7 +7,7 @@ public partial class QuestStatus : GodotObject
|
||||
public enum Status
|
||||
{
|
||||
Hidden = 0,
|
||||
Active = 1,
|
||||
Available = 1,
|
||||
Done = 2,
|
||||
Canceled = 3,
|
||||
}
|
||||
|
||||
@@ -8,15 +8,15 @@ using Godot.Collections;
|
||||
public partial class QuestTestingScript : Node
|
||||
{
|
||||
[Export(PropertyHint.ArrayType)]
|
||||
private Array<QuestResource>? _questsToActivate;
|
||||
private Array<QuestResource>? _questsToMakeAvailable;
|
||||
|
||||
public override void _EnterTree()
|
||||
{
|
||||
Debug.Assert(_questsToActivate != null);
|
||||
Debug.Assert(_questsToMakeAvailable != null);
|
||||
|
||||
foreach (var questResource in _questsToActivate)
|
||||
foreach (var questResource in _questsToMakeAvailable)
|
||||
{
|
||||
QuestManager.Instance!.ChangeQuestStatus(questResource, QuestStatus.Status.Active);
|
||||
QuestManager.Instance!.ChangeQuestStatus(questResource, QuestStatus.Status.Available);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -4,30 +4,28 @@ using Babushka.scripts.CSharp.Common.Quest;
|
||||
|
||||
public partial class QuestTrigger : Node
|
||||
{
|
||||
[Export]
|
||||
public QuestResource? questResource;
|
||||
[Export] public QuestResource? questResource;
|
||||
|
||||
[Export]
|
||||
public QuestStatus.Status toStatus;
|
||||
[Export] public QuestStatus.Status toStatus;
|
||||
|
||||
[Export]
|
||||
private bool makeCurrent = false;
|
||||
[Export] private bool makeActive = false;
|
||||
|
||||
public void Trigger()
|
||||
{
|
||||
GD.Print("trigger");
|
||||
|
||||
if(questResource== null)
|
||||
|
||||
if (questResource == null)
|
||||
throw new Exception("QuestResource is not set on QuestTrigger node.");
|
||||
|
||||
if(QuestManager.Instance == null)
|
||||
throw new Exception("QuestManager instance is not available. Make sure it is initialized before calling Trigger.");
|
||||
|
||||
|
||||
if (QuestManager.Instance == null)
|
||||
throw new Exception(
|
||||
"QuestManager instance is not available. Make sure it is initialized before calling Trigger.");
|
||||
|
||||
QuestManager.Instance.ChangeQuestStatus(questResource, toStatus);
|
||||
|
||||
if (makeCurrent)
|
||||
|
||||
if (makeActive)
|
||||
{
|
||||
QuestManager.Instance.SetFollowQuest(questResource);
|
||||
QuestManager.Instance.SetActiveQuest(questResource);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -11,28 +11,28 @@ using Babushka.scripts.CSharp.Common.Quest;
|
||||
/// </summary>
|
||||
public abstract partial class QuestFulfillmentBase : Node
|
||||
{
|
||||
[Export] private QuestResource _onActiveQuest;
|
||||
[Export] private QuestResource _toNextQuest;
|
||||
[Export] private QuestResource _onAvailableQuest = null!;
|
||||
[Export] private QuestResource _toNextQuest = null!;
|
||||
|
||||
[Export] private bool _whenFulfilledSetActiveQuestToDone = true;
|
||||
[Export] private bool _whenFulfilledSetAvailableQuestToDone = true;
|
||||
[Export] private bool _whenFulfilledSetNextQuestToAvailable = true;
|
||||
[Export] private bool _whenFulfilledSetNextQuestToActive = true;
|
||||
[Export] private bool _whenFulfilledSetNextQuestToFollow = true;
|
||||
|
||||
[Signal] private delegate void OnFulfilledEventHandler();
|
||||
|
||||
protected void Fulfill()
|
||||
{
|
||||
if (_whenFulfilledSetActiveQuestToDone)
|
||||
if (_whenFulfilledSetAvailableQuestToDone)
|
||||
{
|
||||
QuestManager.Instance!.ChangeQuestStatus(_onActiveQuest, QuestStatus.Status.Done);
|
||||
QuestManager.Instance!.ChangeQuestStatus(_onAvailableQuest, QuestStatus.Status.Done);
|
||||
}
|
||||
if (_whenFulfilledSetNextQuestToAvailable)
|
||||
{
|
||||
QuestManager.Instance!.ChangeQuestStatus(_toNextQuest, QuestStatus.Status.Available);
|
||||
}
|
||||
if (_whenFulfilledSetNextQuestToActive)
|
||||
{
|
||||
QuestManager.Instance!.ChangeQuestStatus(_toNextQuest, QuestStatus.Status.Active);
|
||||
}
|
||||
if (_whenFulfilledSetNextQuestToFollow)
|
||||
{
|
||||
QuestManager.Instance!.SetFollowQuest(_toNextQuest);
|
||||
QuestManager.Instance!.SetActiveQuest(_toNextQuest);
|
||||
}
|
||||
|
||||
EmitSignalOnFulfilled();
|
||||
@@ -40,6 +40,6 @@ public abstract partial class QuestFulfillmentBase : Node
|
||||
|
||||
protected bool IsQuestActive()
|
||||
{
|
||||
return QuestManager.Instance!.GetActiveQuests().Any(q => q.Key == _onActiveQuest);
|
||||
return QuestManager.Instance!.GetAvailableQuests().Any(q => q.Key == _onAvailableQuest);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -48,7 +48,6 @@ public partial class SceneTransitionThreaded : CanvasLayer
|
||||
public async void ChangeSceneToFile(string scenePath)
|
||||
{
|
||||
animationPlayer.Play("fadeIn");
|
||||
//yield(animationPlayer, "animation_finished");
|
||||
await ToSignal(animationPlayer, "animation_finished");
|
||||
GetTree().ChangeSceneToFile(scenePath);
|
||||
animationPlayer.Play("fadeOut");
|
||||
|
||||
@@ -17,7 +17,7 @@ public partial class SceneTransition : Node
|
||||
public void LoadSceneAtIndex(int index)
|
||||
{
|
||||
string sceneName = _sceneNamesToLoad[index];
|
||||
SceneTransitionThreaded.Instance.ChangeSceneToFile(sceneName);
|
||||
SceneTransitionThreaded.Instance.ChangeSceneToFileThreaded(sceneName);
|
||||
UnloadAfterDelay();
|
||||
}
|
||||
|
||||
|
||||
@@ -5,7 +5,7 @@ namespace Babushka.scripts.CSharp.Common.UI;
|
||||
|
||||
public partial class WateringCanUi : Node2D
|
||||
{
|
||||
[Export] private Sprite2D[] _stages;
|
||||
[Export] private Slider _slider;
|
||||
|
||||
private const int WATERING_CAN_ID = 1;
|
||||
|
||||
@@ -35,10 +35,8 @@ public partial class WateringCanUi : Node2D
|
||||
|
||||
private void UpdateSprites()
|
||||
{
|
||||
for (int i = 0; i < _stages.Length; i++)
|
||||
{
|
||||
_stages[i].Visible = WateringCanState.Active && i < WateringCanState.GetFillState();
|
||||
}
|
||||
_slider.Visible = WateringCanState.Active;
|
||||
_slider.Value = (float)WateringCanState.GetFillState() / WateringCanState.MAX_FILLSTATE;
|
||||
}
|
||||
|
||||
}
|
||||
@@ -3,5 +3,5 @@ class_name DialogicStartSpecific
|
||||
|
||||
@export var timeline : String
|
||||
|
||||
func start():
|
||||
func open():
|
||||
Dialogic.start(timeline)
|
||||
|
||||
Reference in New Issue
Block a user