feat: assign NPC home positions near village houses
Add home_positions export to SimulationManager. When configured, NPCs get homes assigned from the array wrapping around for more NPCs than homes. main.tscn now sets 6 home positions near the three village houses, so each NPC has a real home to walk to at night. Empty home_positions leaves the spawn-point-as-home backward-compatible behavior.
This commit is contained in:
@@ -7,10 +7,10 @@
|
||||
[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" path="res://simulation/persistence/SaveSlotController.gd" id="10_save"]
|
||||
[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" path="res://world/ui/time_dial.gd" id="12_timedial"]
|
||||
[ext_resource type="Script" path="res://world/demo/DemoController.gd" id="13_demo"]
|
||||
[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"]
|
||||
|
||||
[sub_resource type="CapsuleShape3D" id="CapsuleShape3D_o5qli"]
|
||||
radius = 0.4
|
||||
@@ -22,7 +22,7 @@ height = 1.7
|
||||
|
||||
[node name="Main" type="Node3D" unique_id=1850341560]
|
||||
|
||||
[node name="JajceWorld" parent="." instance=ExtResource("11_jajce")]
|
||||
[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", "pantry_storage", "guard_site", "study_site")]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.05, 0)
|
||||
@@ -59,15 +59,16 @@ max_zoom_offset = Vector3(0, 20, 15)
|
||||
current = true
|
||||
fov = 65.0
|
||||
|
||||
[node name="ActiveWorldAdapter" type="Node" parent="." node_paths=PackedStringArray("pantry_storage")]
|
||||
[node name="ActiveWorldAdapter" type="Node" parent="." unique_id=1773902505 node_paths=PackedStringArray("pantry_storage")]
|
||||
script = ExtResource("9_adapter")
|
||||
pantry_storage = NodePath("../JajceWorld/WorldObjects/StorageSites/VillagePantry")
|
||||
|
||||
[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="." node_paths=PackedStringArray("simulation_manager")]
|
||||
[node name="SaveSlotController" type="Node" parent="." unique_id=1281154019 node_paths=PackedStringArray("simulation_manager")]
|
||||
script = ExtResource("10_save")
|
||||
simulation_manager = NodePath("../SimulationManager")
|
||||
|
||||
@@ -85,11 +86,6 @@ active_npcs_parent = NodePath("../ActiveNPCs")
|
||||
script = ExtResource("6_7mycd")
|
||||
simulation_manager = NodePath("../SimulationManager")
|
||||
|
||||
[node name="DemoController" type="Node" parent="." node_paths=PackedStringArray("ui", "active_npcs_parent")]
|
||||
script = ExtResource("13_demo")
|
||||
ui = NodePath("../UI")
|
||||
active_npcs_parent = NodePath("../ActiveNPCs")
|
||||
|
||||
[node name="VillagePanel" type="PanelContainer" parent="UI" unique_id=482126250]
|
||||
offset_left = 20.0
|
||||
offset_top = 20.0
|
||||
@@ -107,7 +103,7 @@ theme_override_constants/margin_bottom = 4
|
||||
layout_mode = 2
|
||||
theme_override_font_sizes/font_size = 10
|
||||
|
||||
[node name="NpcInspectorPanel" type="PanelContainer" parent="UI"]
|
||||
[node name="NpcInspectorPanel" type="PanelContainer" parent="UI" unique_id=1165556983]
|
||||
anchors_preset = 1
|
||||
anchor_left = 1.0
|
||||
anchor_right = 1.0
|
||||
@@ -117,24 +113,29 @@ offset_right = -20.0
|
||||
offset_bottom = 330.0
|
||||
grow_horizontal = 0
|
||||
|
||||
[node name="MarginContainer" type="MarginContainer" parent="UI/NpcInspectorPanel"]
|
||||
[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"]
|
||||
[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" node_paths=PackedStringArray("simulation_manager")]
|
||||
layout_mode = 0
|
||||
[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")
|
||||
simulation_manager = NodePath("../SimulationManager")
|
||||
|
||||
[node name="DemoController" type="Node" parent="." unique_id=644713371 node_paths=PackedStringArray("ui", "active_npcs_parent")]
|
||||
script = ExtResource("13_demo")
|
||||
ui = NodePath("../UI")
|
||||
active_npcs_parent = NodePath("../ActiveNPCs")
|
||||
|
||||
Reference in New Issue
Block a user