| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061 |
- # 主场景脚本
- extends Node2D
- # NPC节点引用
- @onready var npc_zhang: Node2D = $NPCs/NPC_Zhang
- @onready var npc_li: Node2D = $NPCs/NPC_Li
- @onready var npc_wang: Node2D = $NPCs/NPC_Wang
- # API客户端
- var api_client: Node = null
- # NPC状态更新计时器
- var status_update_timer: float = 0.0
- func _ready():
- print("[INFO] 主场景初始化")
-
- # 获取API客户端
- api_client = get_node_or_null("/root/APIClient")
- if api_client:
- api_client.npc_status_received.connect(_on_npc_status_received)
-
- # 立即获取一次NPC状态
- api_client.get_npc_status()
- else:
- print("[ERROR] API客户端未找到")
- func _process(delta: float):
- # 定时更新NPC状态
- status_update_timer += delta
- if status_update_timer >= Config.NPC_STATUS_UPDATE_INTERVAL:
- status_update_timer = 0.0
- if api_client:
- api_client.get_npc_status()
- func _on_npc_status_received(dialogues: Dictionary):
- """收到NPC状态更新"""
- print("[INFO] 更新NPC状态: ", dialogues)
-
- # 更新各个NPC的对话
- for npc_name in dialogues:
- var dialogue = dialogues[npc_name]
- update_npc_dialogue(npc_name, dialogue)
- func update_npc_dialogue(npc_name: String, dialogue: String):
- """更新指定NPC的对话"""
- var npc_node = get_npc_node(npc_name)
- if npc_node and npc_node.has_method("update_dialogue"):
- npc_node.update_dialogue(dialogue)
- func get_npc_node(npc_name: String) -> Node2D:
- """根据名字获取NPC节点"""
- match npc_name:
- "张三":
- return npc_zhang
- "李四":
- return npc_li
- "王五":
- return npc_wang
- _:
- return null
|