feat: add npc decision inspector
This commit is contained in:
@@ -16,10 +16,38 @@ func _run() -> void:
|
||||
|
||||
var manager: Node = main_scene.get_node("SimulationManager")
|
||||
var view: Node = main_scene.get_node("WorldViewManager")
|
||||
var ui: CanvasLayer = main_scene.get_node("UI")
|
||||
manager.set_process(false)
|
||||
var npc: SimNPC = manager.npcs[0]
|
||||
var visual: Node3D = view.active_npc_visuals[npc.id]
|
||||
visual.set_physics_process(false)
|
||||
var profession_definition := SimulationDefinitions.get_profession(npc.profession)
|
||||
var body: MeshInstance3D = visual.get_node("MeshInstance3D")
|
||||
_check(
|
||||
body.material_override.albedo_color == profession_definition.visual_color,
|
||||
"NPC body color should come from its profession definition"
|
||||
)
|
||||
_check(
|
||||
visual.get_node("ProfessionProp").mesh != null
|
||||
and profession_definition.display_name in visual.get_node("ProfessionLabel").text,
|
||||
"NPC visual should expose a profession prop and readable label"
|
||||
)
|
||||
var test_decision := ActionSelectionResult.new(
|
||||
SimulationIds.ACTION_GATHER_FOOD,
|
||||
-1.0,
|
||||
"Test shortage reason",
|
||||
{SimulationIds.ACTION_GATHER_FOOD: 4.5}
|
||||
)
|
||||
manager.latest_decisions[npc.id] = test_decision
|
||||
manager.emit_signal("npc_decision_recorded", npc, test_decision)
|
||||
var inspector_label: Label = ui.get_node(
|
||||
"NpcInspectorPanel/MarginContainer/NpcInspectorLabel"
|
||||
)
|
||||
_check(
|
||||
"Test shortage reason" in inspector_label.text
|
||||
and npc.npc_name in inspector_label.text,
|
||||
"NPC inspector should show the selected villager's real decision reason"
|
||||
)
|
||||
var carried_food: MeshInstance3D = visual.get_node("CarriedFood")
|
||||
_check(not carried_food.visible, "NPC should begin without a carried-food prop")
|
||||
npc.add_inventory(SimulationIds.RESOURCE_FOOD, 1.0)
|
||||
|
||||
Reference in New Issue
Block a user