- 装备校验:can_equip 按 CanEquipNow→FindEquipCell→EquipItem 精确重排, 新增 find_equip_cell() 1:1 复刻(RING/UNIQUE 占用翻转、COSTUME/BELT/DS), 帝国 antiflag 降级为 tooltip 提示,LIMIT_PCBANG/REAL_TIME* 语义与倒计时文案 - 快捷栏:死亡全槽禁用+激活守卫、变身(affect 220)技能置灰、 物品槽失配置灰(服务器回收/换武器后刷新) - 公会:GUILD_AUTH_* 权限位门控踢人/公告/技能升级,/gskillup、 被宣战应答弹窗(/war·/nowar)、资金存取行(40250 服务端已禁用仍保留 1:1) - 好友/情侣:messenger 三固定组(好友/公会/情侣),lover_login/logout/ near/far/divorce 命令事件→在线/在身边状态与离婚隐藏 - 交易/仓库:ExchangeState.last_notice(ALREADY/LESS_GOLD)结束浮层提示; 仓库改密 /safebox_change_password 三段输入;关窗补 /safebox_close·/mall_close; 仓库金钱经核实 40250 无 wire 协议,UI 定界只读 - app_flow:重连时 guild_marks_ready 重复连接加 is_connected 守卫 - 相机 look_at 零向量守卫(首帧/传送落点) - 测试:equip/love/guild 断言更新,79 项中 78 绿(game_camera_test 为 HEAD 既有失败);真服冒烟 LIVE_SMOKE PASS(192.168.21.203 全链路) - docs/CLIENT-GAP.md 同步增量 129 Co-Authored-By: Claude Code <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_018kUFvQGYusuY3dkfGitmAe
60 lines
2.1 KiB
GDScript
60 lines
2.1 KiB
GDScript
# love_ui_test — 情侣状态窗随 GC_LOVER_INFO / LOVE_POINT_UPDATE 的桥接信号更新。
|
||
extends SceneTree
|
||
|
||
const LoveUI = preload("res://ui/love_ui.gd")
|
||
|
||
class FakeClient extends Node:
|
||
signal lover_changed(lover: Dictionary)
|
||
var lover := {"valid": false, "name": "", "love_point": 0}
|
||
func get_lover() -> Dictionary:
|
||
return lover
|
||
|
||
var failed := 0
|
||
func _check(ok: bool, message: String) -> void:
|
||
if not ok:
|
||
failed += 1
|
||
printerr("FAIL: " + message)
|
||
|
||
func _init() -> void:
|
||
await _run()
|
||
if failed == 0:
|
||
print("PASS: love_ui_test (lover state panel)")
|
||
quit(0)
|
||
else:
|
||
quit(1)
|
||
|
||
func _run() -> void:
|
||
var canvas := CanvasLayer.new()
|
||
var client := FakeClient.new()
|
||
var love := LoveUI.new()
|
||
get_root().add_child(canvas)
|
||
get_root().add_child(client)
|
||
get_root().add_child(love)
|
||
love.setup(client, canvas)
|
||
_check(not love._root.visible, "no lover keeps panel hidden")
|
||
client.lover = {"valid": true, "name": "Partner", "love_point": 63,
|
||
"online": false, "near": false}
|
||
client.lover_changed.emit(client.lover)
|
||
await process_frame
|
||
_check(love._root.visible, "lover info shows panel")
|
||
_check(love._name.text == "♥ Partner(离线)", "lover name + offline state rendered")
|
||
_check(int(love._bar.value) == 63, "lover point rendered")
|
||
client.lover["love_point"] = 88
|
||
client.lover_changed.emit(client.lover)
|
||
await process_frame
|
||
_check(int(love._bar.value) == 88, "love point update refreshes bar")
|
||
# lover_login / lover_near(CHAT_TYPE_COMMAND,marriage.cpp)→ 状态后缀。
|
||
client.lover["online"] = true
|
||
client.lover_changed.emit(client.lover)
|
||
await process_frame
|
||
_check(love._name.text == "♥ Partner(在线)", "lover_online state rendered")
|
||
client.lover["near"] = true
|
||
client.lover_changed.emit(client.lover)
|
||
await process_frame
|
||
_check(love._name.text == "♥ Partner(在身边)", "lover_near state rendered")
|
||
# lover_divorce → store 清空 LoverInfo → 面板隐藏。
|
||
client.lover = {"valid": false, "name": "", "love_point": 0}
|
||
client.lover_changed.emit(client.lover)
|
||
await process_frame
|
||
_check(not love._root.visible, "lover divorce hides panel")
|