feat(val-blog): add 2026-04-30 dream journey post

This commit is contained in:
Chen Gu
2026-08-13 17:00:22 +08:00
committed by Chen Gu
parent 691f96e8a6
commit 81978704fc
941 changed files with 195468 additions and 755 deletions
+76
View File
@@ -0,0 +1,76 @@
extends Node2D
# 主场景管理器
@onready var apartment: Node2D = $Apartment
@onready var bridge: Node = $BridgeClient
@onready var command_input: LineEdit = $UI/Panel/VBoxContainer/CommandInput
@onready var send_button: Button = $UI/Panel/VBoxContainer/SendButton
func _ready():
# 连接UI事件
send_button.pressed.connect(_on_send_command)
command_input.text_submitted.connect(_on_command_submitted)
# 连接公寓事件
apartment.room_changed.connect(_on_room_changed)
apartment.furniture_clicked.connect(_on_furniture_clicked)
# 连接Bridge事件
if bridge:
bridge.connected_to_bridge.connect(_on_bridge_connected)
bridge.disconnected_from_bridge.connect(_on_bridge_disconnected)
print("AgentLiving started!")
print("Click on furniture to make Val interact with it!")
func _on_send_command():
var command = command_input.text.strip_edges()
if command.is_empty():
return
_send_command_to_val(command)
command_input.clear()
func _on_command_submitted(text: String):
_on_send_command()
func _send_command_to_val(command: String):
print("User command: ", command)
var val = apartment.get_node_or_null("Val")
if val:
val.receive_command(command)
# 同时发送到Bridge
if bridge and bridge.is_connected:
bridge.send_command({
"type": "user_command",
"command": command,
"timestamp": Time.get_unix_time_from_system()
})
func _on_room_changed(room_name: String):
print("Val entered: ", room_name)
func _on_furniture_clicked(furniture: Node):
print("Furniture clicked: ", furniture.get_meta("furniture_name", "未知"))
func _on_bridge_connected():
print("Bridge connected!")
# 请求初始状态同步
if bridge:
bridge.request_state_sync()
func _on_bridge_disconnected():
print("Bridge disconnected!")
func _input(event):
# 按ESC退出
if event is InputEventKey and event.pressed and event.keycode == KEY_ESCAPE:
get_tree().quit()
# 按R重新连接Bridge
if event is InputEventKey and event.pressed and event.keycode == KEY_R:
if bridge:
bridge._connect_to_bridge()