[gd_scene format=3 uid="uid://rs3hv73svbpa"] [ext_resource type="Script" uid="uid://4mg67crlim53" path="res://player/player.gd" id="1_h2yge"] [ext_resource type="Script" uid="uid://ii8ai801jur2" path="res://player/camera_rig.gd" id="2_1bvp3"] [ext_resource type="Script" uid="uid://dbb25ttlyogqr" path="res://simulation/SimulationManager.gd" id="3_lquwl"] [ext_resource type="Script" uid="uid://c1f3b26n4yntf" path="res://world/world_view_manager.gd" id="4_1bvp3"] [ext_resource type="PackedScene" uid="uid://dhxxyprqflotq" path="res://player/npc/NpcVisual.tscn" id="5_lquwl"] [ext_resource type="Script" uid="uid://cjvbgqx8rao0t" path="res://world/ui/ui.gd" id="6_7mycd"] [ext_resource type="Script" uid="uid://bbwol3mrjgn2x" path="res://world/active_world_adapter.gd" id="9_adapter"] [ext_resource type="Script" uid="uid://cwvdljsh148wh" path="res://simulation/persistence/SaveSlotController.gd" id="10_save"] [ext_resource type="PackedScene" path="res://world/jajce/JajceWorld.tscn" id="11_jajce"] [ext_resource type="Script" uid="uid://cascjhf8lsvay" path="res://world/ui/time_dial.gd" id="12_timedial"] [ext_resource type="Script" uid="uid://bivrsk5ukgnoo" path="res://world/demo/DemoController.gd" id="13_demo"] [ext_resource type="PackedScene" path="res://player/PlayerVisual.tscn" id="14_player_visual"] [ext_resource type="Script" uid="uid://dwwxux24jc6yq" path="res://world/ui/village_whisper_hud.gd" id="15_whisper"] [ext_resource type="Script" path="res://world/ui/player_interaction_hud.gd" id="16_interaction"] [ext_resource type="Script" path="res://world/ui/villager_field_note_hud.gd" id="17_villager_note"] [ext_resource type="Script" path="res://world/ui/quest_journal_hud.gd" id="18_quest_journal"] [sub_resource type="CapsuleShape3D" id="CapsuleShape3D_o5qli"] radius = 0.4 height = 1.7 [node name="Main" type="Node3D" unique_id=1850341560] [node name="JajceWorld" parent="." unique_id=1023795383 instance=ExtResource("11_jajce")] [node name="Player" type="CharacterBody3D" parent="." unique_id=2022843760 node_paths=PackedStringArray("camera_rig", "simulation_manager", "world_view_manager", "pantry_storage", "woodpile_storage", "guard_site", "study_site")] transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.05, 0) script = ExtResource("1_h2yge") camera_rig = NodePath("../CameraRig") simulation_manager = NodePath("../SimulationManager") world_view_manager = NodePath("../WorldViewManager") pantry_storage = NodePath("../JajceWorld/WorldObjects/StorageSites/VillagePantry") woodpile_storage = NodePath("../JajceWorld/WorldObjects/StorageSites/VillageWoodpile") guard_site = NodePath("../JajceWorld/WorldObjects/ActivitySites/GuardPost") study_site = NodePath("../JajceWorld/WorldObjects/ActivitySites/StudyDesk") stomach_capacity_for_food = 10 [node name="CollisionShape3D" type="CollisionShape3D" parent="Player" unique_id=1249497228] transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.85, 0) shape = SubResource("CapsuleShape3D_o5qli") [node name="Visual" parent="Player" instance=ExtResource("14_player_visual")] [node name="CameraRig" type="Node3D" parent="." unique_id=81378719 node_paths=PackedStringArray("target")] transform = Transform3D(1, 0, 0, 0, 0.57357645, 0.81915206, 0, -0.81915206, 0.57357645, 0, 10, 8) script = ExtResource("2_1bvp3") target = NodePath("../Player") follow_speed = 8.0 deadzone_right = 2.0 deadzone_forward = 2.0 max_zoom_offset = Vector3(0, 20, 15) [node name="Camera3D" type="Camera3D" parent="CameraRig" unique_id=1992528776] current = true fov = 65.0 [node name="ActiveWorldAdapter" type="Node" parent="." unique_id=1773902505 node_paths=PackedStringArray("pantry_storage", "woodpile_storage")] script = ExtResource("9_adapter") pantry_storage = NodePath("../JajceWorld/WorldObjects/StorageSites/VillagePantry") woodpile_storage = NodePath("../JajceWorld/WorldObjects/StorageSites/VillageWoodpile") [node name="SimulationManager" type="Node" parent="." unique_id=1099676814 node_paths=PackedStringArray("active_world_adapter")] script = ExtResource("3_lquwl") active_world_adapter = NodePath("../ActiveWorldAdapter") home_positions = Array[Vector3]([Vector3(-15, 2, 8.5), Vector3(-13.5, 2, 6.5), Vector3(-8.5, 2, 3), Vector3(-6.5, 2, 1.5), Vector3(-15, 2, -2.5), Vector3(-13.5, 2, -5)]) [node name="SaveSlotController" type="Node" parent="." unique_id=1281154019 node_paths=PackedStringArray("simulation_manager")] script = ExtResource("10_save") simulation_manager = NodePath("../SimulationManager") [node name="WorldViewManager" type="Node" parent="." unique_id=763982891 node_paths=PackedStringArray("simulation_manager", "active_npcs_parent", "pantry_visual")] script = ExtResource("4_1bvp3") npc_visual_scene = ExtResource("5_lquwl") simulation_manager = NodePath("../SimulationManager") active_npcs_parent = NodePath("../ActiveNPCs") pantry_visual = NodePath("../JajceWorld/WorldObjects/StorageSites/VillagePantry/PantryPresentation") [node name="ActiveNPCs" type="Node3D" parent="." unique_id=88374680] [node name="UI" type="CanvasLayer" parent="." unique_id=875790201 node_paths=PackedStringArray("simulation_manager")] script = ExtResource("6_7mycd") simulation_manager = NodePath("../SimulationManager") [node name="VillagePanel" type="PanelContainer" parent="UI" unique_id=482126250] offset_left = 20.0 offset_top = 20.0 offset_right = 280.0 offset_bottom = 140.0 [node name="MarginContainer" type="MarginContainer" parent="UI/VillagePanel" unique_id=60382506] layout_mode = 2 theme_override_constants/margin_left = 12 theme_override_constants/margin_top = 4 theme_override_constants/margin_right = 12 theme_override_constants/margin_bottom = 4 [node name="VillageStatsLabel" type="Label" parent="UI/VillagePanel/MarginContainer" unique_id=1554319259] layout_mode = 2 theme_override_font_sizes/font_size = 10 [node name="NpcInspectorPanel" type="PanelContainer" parent="UI" unique_id=1165556983] anchors_preset = 1 anchor_left = 1.0 anchor_right = 1.0 offset_left = -370.0 offset_top = 20.0 offset_right = -20.0 offset_bottom = 330.0 grow_horizontal = 0 [node name="MarginContainer" type="MarginContainer" parent="UI/NpcInspectorPanel" unique_id=1227722850] layout_mode = 2 theme_override_constants/margin_left = 16 theme_override_constants/margin_top = 12 theme_override_constants/margin_right = 16 theme_override_constants/margin_bottom = 12 [node name="NpcInspectorLabel" type="Label" parent="UI/NpcInspectorPanel/MarginContainer" unique_id=1036784952] layout_mode = 2 theme_override_colors/font_color = Color(0.96, 0.91, 0.78, 1) theme_override_font_sizes/font_size = 15 text = "Villager inspector" [node name="TimeDial" type="Control" parent="UI" unique_id=191345668] layout_mode = 3 anchors_preset = 0 offset_left = 880.0 offset_top = 6.0 offset_right = 940.0 offset_bottom = 66.0 script = ExtResource("12_timedial") [node name="PlayerInteractionLayer" type="CanvasLayer" parent="."] layer = 2 [node name="PlayerInteractionHud" type="Control" parent="PlayerInteractionLayer" node_paths=PackedStringArray("player", "simulation_manager")] visible = false anchors_preset = 7 anchor_left = 0.5 anchor_top = 1.0 anchor_right = 0.5 anchor_bottom = 1.0 offset_left = -290.0 offset_top = -108.0 offset_right = 290.0 offset_bottom = -42.0 grow_horizontal = 2 grow_vertical = 0 mouse_filter = 2 script = ExtResource("16_interaction") player = NodePath("../../Player") simulation_manager = NodePath("../../SimulationManager") [node name="Accent" type="ColorRect" parent="PlayerInteractionLayer/PlayerInteractionHud"] layout_mode = 1 anchors_preset = 10 anchor_right = 1.0 offset_bottom = 2.0 grow_horizontal = 2 mouse_filter = 2 color = Color(0.9, 0.63, 0.28, 0.95) [node name="Copy" type="VBoxContainer" parent="PlayerInteractionLayer/PlayerInteractionHud"] layout_mode = 1 anchors_preset = 15 anchor_right = 1.0 anchor_bottom = 1.0 offset_top = 8.0 grow_horizontal = 2 grow_vertical = 2 mouse_filter = 2 theme_override_constants/separation = 2 alignment = 1 [node name="Action" type="Label" parent="PlayerInteractionLayer/PlayerInteractionHud/Copy"] layout_mode = 2 mouse_filter = 2 theme_override_colors/font_color = Color(0.98, 0.92, 0.79, 1) theme_override_colors/font_outline_color = Color(0.07, 0.045, 0.025, 0.94) theme_override_colors/font_shadow_color = Color(0.02, 0.01, 0.005, 0.7) theme_override_constants/outline_size = 7 theme_override_constants/shadow_offset_x = 1 theme_override_constants/shadow_offset_y = 2 theme_override_font_sizes/font_size = 20 text = "E · Interact" horizontal_alignment = 1 [node name="Detail" type="Label" parent="PlayerInteractionLayer/PlayerInteractionHud/Copy"] layout_mode = 2 mouse_filter = 2 theme_override_colors/font_color = Color(0.85, 0.77, 0.64, 1) theme_override_colors/font_outline_color = Color(0.07, 0.045, 0.025, 0.9) theme_override_constants/outline_size = 5 theme_override_font_sizes/font_size = 13 text = "Context" horizontal_alignment = 1 [node name="VillagerInspectionLayer" type="CanvasLayer" parent="."] layer = 2 [node name="VillagerFieldNote" type="Control" parent="VillagerInspectionLayer" node_paths=PackedStringArray("player", "simulation_manager")] visible = false anchors_preset = 2 anchor_top = 1.0 anchor_bottom = 1.0 offset_left = 34.0 offset_top = -246.0 offset_right = 430.0 offset_bottom = -46.0 grow_vertical = 0 mouse_filter = 2 script = ExtResource("17_villager_note") player = NodePath("../../Player") simulation_manager = NodePath("../../SimulationManager") [node name="Accent" type="ColorRect" parent="VillagerInspectionLayer/VillagerFieldNote"] layout_mode = 1 anchors_preset = 9 anchor_bottom = 1.0 offset_right = 2.0 grow_vertical = 2 mouse_filter = 2 color = Color(0.9, 0.63, 0.28, 0.92) [node name="Copy" type="VBoxContainer" parent="VillagerInspectionLayer/VillagerFieldNote"] layout_mode = 1 anchors_preset = 15 anchor_right = 1.0 anchor_bottom = 1.0 offset_left = 14.0 grow_horizontal = 2 grow_vertical = 2 mouse_filter = 2 theme_override_constants/separation = 1 alignment = 1 [node name="Kicker" type="Label" parent="VillagerInspectionLayer/VillagerFieldNote/Copy"] layout_mode = 2 mouse_filter = 2 theme_override_colors/font_color = Color(0.9, 0.63, 0.28, 1) theme_override_colors/font_outline_color = Color(0.07, 0.045, 0.025, 0.92) theme_override_constants/outline_size = 4 theme_override_font_sizes/font_size = 10 text = "NEARBY VILLAGER" [node name="Name" type="Label" parent="VillagerInspectionLayer/VillagerFieldNote/Copy"] layout_mode = 2 mouse_filter = 2 theme_override_colors/font_color = Color(0.98, 0.92, 0.79, 1) theme_override_colors/font_outline_color = Color(0.07, 0.045, 0.025, 0.94) theme_override_constants/outline_size = 6 theme_override_font_sizes/font_size = 24 text = "Villager" [node name="Activity" type="Label" parent="VillagerInspectionLayer/VillagerFieldNote/Copy"] layout_mode = 2 mouse_filter = 2 theme_override_colors/font_color = Color(0.9, 0.84, 0.7, 1) theme_override_colors/font_outline_color = Color(0.07, 0.045, 0.025, 0.9) theme_override_constants/outline_size = 5 theme_override_font_sizes/font_size = 15 text = "Current activity" [node name="Target" type="Label" parent="VillagerInspectionLayer/VillagerFieldNote/Copy"] layout_mode = 2 mouse_filter = 2 theme_override_colors/font_color = Color(0.82, 0.75, 0.63, 1) theme_override_colors/font_outline_color = Color(0.07, 0.045, 0.025, 0.9) theme_override_constants/outline_size = 4 theme_override_font_sizes/font_size = 13 text = "Target · None recorded" [node name="Carrying" type="Label" parent="VillagerInspectionLayer/VillagerFieldNote/Copy"] layout_mode = 2 mouse_filter = 2 theme_override_colors/font_color = Color(0.82, 0.75, 0.63, 1) theme_override_colors/font_outline_color = Color(0.07, 0.045, 0.025, 0.9) theme_override_constants/outline_size = 4 theme_override_font_sizes/font_size = 13 text = "Carrying · nothing" [node name="Reason" type="Label" parent="VillagerInspectionLayer/VillagerFieldNote/Copy"] custom_minimum_size = Vector2(380, 0) layout_mode = 2 mouse_filter = 2 theme_override_colors/font_color = Color(0.88, 0.78, 0.6, 1) theme_override_colors/font_outline_color = Color(0.07, 0.045, 0.025, 0.9) theme_override_constants/outline_size = 4 theme_override_font_sizes/font_size = 13 text = "Why · Awaiting the next decision" autowrap_mode = 2 [node name="Need" type="Label" parent="VillagerInspectionLayer/VillagerFieldNote/Copy"] custom_minimum_size = Vector2(380, 0) layout_mode = 2 mouse_filter = 2 theme_override_colors/font_color = Color(0.93, 0.7, 0.32, 1) theme_override_colors/font_outline_color = Color(0.07, 0.045, 0.025, 0.94) theme_override_constants/outline_size = 5 theme_override_font_sizes/font_size = 14 text = "Need · " autowrap_mode = 2 visible = false [node name="VillageWhisperLayer" type="CanvasLayer" parent="."] layer = 3 [node name="VillageWhisper" type="Control" parent="VillageWhisperLayer" node_paths=PackedStringArray("simulation_manager")] anchors_preset = 10 anchor_left = 0.5 anchor_right = 0.5 offset_left = -310.0 offset_top = 76.0 offset_right = 310.0 offset_bottom = 142.0 grow_horizontal = 2 mouse_filter = 2 script = ExtResource("15_whisper") simulation_manager = NodePath("../../SimulationManager") [node name="Accent" type="ColorRect" parent="VillageWhisperLayer/VillageWhisper"] layout_mode = 1 anchors_preset = 10 anchor_right = 1.0 offset_bottom = 2.0 grow_horizontal = 2 mouse_filter = 2 color = Color(0.86, 0.61, 0.25, 0.92) [node name="Copy" type="VBoxContainer" parent="VillageWhisperLayer/VillageWhisper"] layout_mode = 1 anchors_preset = 15 anchor_right = 1.0 anchor_bottom = 1.0 offset_top = 8.0 grow_horizontal = 2 grow_vertical = 2 mouse_filter = 2 theme_override_constants/separation = 1 alignment = 1 [node name="Kicker" type="Label" parent="VillageWhisperLayer/VillageWhisper/Copy"] layout_mode = 2 mouse_filter = 2 theme_override_colors/font_color = Color(0.93, 0.7, 0.36, 1) theme_override_colors/font_outline_color = Color(0.07, 0.045, 0.025, 0.9) theme_override_constants/outline_size = 5 theme_override_font_sizes/font_size = 11 text = "VILLAGE NEED" horizontal_alignment = 1 [node name="Message" type="Label" parent="VillageWhisperLayer/VillageWhisper/Copy"] layout_mode = 2 mouse_filter = 2 theme_override_colors/font_color = Color(0.98, 0.92, 0.79, 1) theme_override_colors/font_outline_color = Color(0.07, 0.045, 0.025, 0.94) theme_override_colors/font_shadow_color = Color(0.02, 0.01, 0.005, 0.7) theme_override_constants/outline_size = 7 theme_override_constants/shadow_offset_x = 1 theme_override_constants/shadow_offset_y = 2 theme_override_font_sizes/font_size = 18 text = "A village need has surfaced." horizontal_alignment = 1 [node name="CrisisCaptionLayer" type="CanvasLayer" parent="."] layer = 4 [node name="CrisisCaption" type="Label" parent="CrisisCaptionLayer"] visible = false anchors_preset = 7 anchor_left = 0.5 anchor_top = 1.0 anchor_right = 0.5 anchor_bottom = 1.0 offset_left = -560.0 offset_top = -112.0 offset_right = 560.0 offset_bottom = -54.0 grow_horizontal = 2 grow_vertical = 0 mouse_filter = 2 theme_override_colors/font_color = Color(0.98, 0.92, 0.78, 1) theme_override_colors/font_outline_color = Color(0.08, 0.055, 0.035, 0.92) theme_override_colors/font_shadow_color = Color(0.02, 0.015, 0.01, 0.7) theme_override_constants/outline_size = 9 theme_override_constants/shadow_offset_x = 2 theme_override_constants/shadow_offset_y = 3 theme_override_font_sizes/font_size = 26 text = "The pantry is empty." horizontal_alignment = 1 vertical_alignment = 1 [node name="QuestJournalLayer" type="CanvasLayer" parent="."] layer = 4 [node name="QuestJournal" type="Control" parent="QuestJournalLayer" node_paths=PackedStringArray("simulation_manager")] visible = false anchors_preset = 3 anchor_left = 1.0 anchor_top = 1.0 anchor_right = 1.0 anchor_bottom = 1.0 offset_left = -360.0 offset_top = -150.0 offset_right = -16.0 offset_bottom = -20.0 grow_horizontal = 0 grow_vertical = 0 mouse_filter = 2 script = ExtResource("18_quest_journal") simulation_manager = NodePath("../../SimulationManager") [node name="Accent" type="ColorRect" parent="QuestJournalLayer/QuestJournal"] layout_mode = 1 anchors_preset = 9 anchor_bottom = 1.0 offset_right = 2.0 grow_vertical = 2 mouse_filter = 2 color = Color(0.55, 0.42, 0.2, 0.9) [node name="Copy" type="VBoxContainer" parent="QuestJournalLayer/QuestJournal"] layout_mode = 1 anchors_preset = 15 anchor_right = 1.0 anchor_bottom = 1.0 offset_left = 12.0 offset_top = 8.0 mouse_filter = 2 theme_override_constants/separation = 2 alignment = 2 [node name="Standing" type="Label" parent="QuestJournalLayer/QuestJournal/Copy"] layout_mode = 2 mouse_filter = 2 theme_override_colors/font_color = Color(0.98, 0.92, 0.79, 1) theme_override_colors/font_outline_color = Color(0.07, 0.045, 0.025, 0.94) theme_override_constants/outline_size = 6 theme_override_font_sizes/font_size = 18 text = "Standing · Stranger · 0/100" [node name="QuestKicker" type="Label" parent="QuestJournalLayer/QuestJournal/Copy"] layout_mode = 2 mouse_filter = 2 theme_override_colors/font_color = Color(0.93, 0.7, 0.36, 1) theme_override_colors/font_outline_color = Color(0.07, 0.045, 0.025, 0.9) theme_override_constants/outline_size = 5 theme_override_font_sizes/font_size = 11 text = "ACTIVE QUEST" [node name="Quest" type="Label" parent="QuestJournalLayer/QuestJournal/Copy"] layout_mode = 2 mouse_filter = 2 theme_override_colors/font_color = Color(0.9, 0.84, 0.7, 1) theme_override_colors/font_outline_color = Color(0.07, 0.045, 0.025, 0.9) theme_override_constants/outline_size = 4 theme_override_font_sizes/font_size = 13 text = "Amina · bring 1 food to the village pantry" autowrap_mode = 2 [node name="Thanks" type="Label" parent="QuestJournalLayer/QuestJournal/Copy"] visible = false layout_mode = 2 mouse_filter = 2 theme_override_colors/font_color = Color(0.95, 0.76, 0.42, 1) theme_override_colors/font_outline_color = Color(0.07, 0.045, 0.025, 0.94) theme_override_constants/outline_size = 5 theme_override_font_sizes/font_size = 13 text = "Gratitude" horizontal_alignment = 1 autowrap_mode = 2 [node name="DemoController" type="Node" parent="." unique_id=644713371 node_paths=PackedStringArray("ui", "active_npcs_parent", "simulation_manager", "world_view_manager", "camera_rig", "player", "pantry_storage", "crisis_caption")] script = ExtResource("13_demo") ui = NodePath("../UI") active_npcs_parent = NodePath("../ActiveNPCs") simulation_manager = NodePath("../SimulationManager") world_view_manager = NodePath("../WorldViewManager") camera_rig = NodePath("../CameraRig") player = NodePath("../Player") pantry_storage = NodePath("../JajceWorld/WorldObjects/StorageSites/VillagePantry") crisis_caption = NodePath("../CrisisCaptionLayer/CrisisCaption")