fix: 装备属性面板避让逻辑 + 多项功能更新

- item_tooltip_view.gd: 新增 avoid_rect 属性,tooltip 与装备窗口重叠时自动推到左侧
- inventory_ui.gd: 悬停装备时传入窗口矩形作为避让区域
- 包含其他累积的功能开发和测试文件
This commit is contained in:
shen
2026-09-21 16:38:59 -07:00
parent 1522a8a1a1
commit c93894313a
5498 changed files with 4558004 additions and 1442 deletions
+6 -4
View File
@@ -862,7 +862,9 @@
仍未完成:
- [ ] 真实 TCP E2E 证明两次游戏连接,以及第二次连接确实命中 `GC_LOGIN_SUCCESS4` 的槽地址;
- [ ] 移除 `MT_CLASSIC_ENTER_DELAY` 定时发送,改为 Loading/游戏窗口完成初始化后的明确发送点;
- [x] 移除 `MT_CLASSIC_ENTER_DELAY` 定时发送Classic Loading 在收到
`GC_MAIN_CHARACTER` 后按 `GameWindow.LoadData() -> SendEnterGamePacket()` 的明确事件边界发送
`CG_ENTERGAME`,并由 `m_entergame_sent` 保证重复主角包不会重复发送;
- [ ] 真实服务器验证第二次 Warp TCP 连接、目标地址、重连后的 `GC_MAIN_CHARACTER` 定位和旧场景
节点无残留;受限环境下 localhost bind 子测试自动 skip。
- [ ] 地图 BGM / 天气配置、飞行物和 EffectLib 实例的完整按图清理与重建(当前已覆盖基础场景 / UI)。
@@ -1023,10 +1025,10 @@ PHASE_LOGIN, PHASE_SELECT, PHASE_LOADING, PHASE_GAME, PHASE_DEAD}`
- `Stage::Connecting`HandShake)不发 `phase_changed` 给选人 UI
- `Stage::CharSelect` 一进入就自动推进到 `Stage::Loading`(等价
`PythonNetworkStreamPhaseSelect.cpp:28``SetLoadingPhase`),
当前仍保留 `set_auto_entergame_delay(1500)` 的兼容性定时发送,**这一步尚未完成**;
后续应改为 Loading/游戏窗口完成初始化后的明确发送点;
已移除兼容性定时发送;现在由 `GC_MAIN_CHARACTER` 对齐 Loading/游戏窗口完成初始化后的
明确发送点;
- `Stage::Loading` 入口清 `m_direct_enter`(等价 `PhaseLoading.cpp:190`)。
5. `MT_CLASSIC_ENTER_DELAY` 环境变量连同 `m2_client.cpp` 的兼容性注入仍未删除——参考端
5. `MT_CLASSIC_ENTER_DELAY` 环境变量 `m2_client.cpp` 的兼容性注入已删除;参考端
`CG_ENTERGAME` 的时机是 Python `game.py:207 net.SendEnterGamePacket()`,即
**游戏窗口 Open() 的最后一步**,不是定时器。
+5 -4
View File
@@ -1306,15 +1306,15 @@
> 选人 / 登录 / 进场发送结果已透传,未知 header 不再 Loading 启发式重同步,已知未处理包不再
> 静默成功;已建立游戏连接后的断线回到 LOGIN。`net_classic_stream_test`
> `net_classic_session_test``netbridge_test``p10_test` 已通过(受限环境下本地 TCP bind 子测试自动
> skip)。真实双连接 E2E
> `MT_CLASSIC_ENTER_DELAY` 移除和版本包 `0xf1`未完成
> skip)。真实双连接 E2E 仍未完成;`MT_CLASSIC_ENTER_DELAY` 定时发送已移除,当前按
> `GC_MAIN_CHARACTER` 事件发送 `CG_ENTERGAME`版本包 `0xf1`需真实服务端验收
> - **2026-09-02 增量 47W0/W2 公共基础第一批实现)**Classic `GC_WARP` 已改为严格按
> `lAddr:wPort` 重连,不再用 `addr==0` 推断“同服原地移动”;连接会保留 login key / 已选角色槽,
> 新增 `world_reset` 信号,并在 Godot 侧清理网络实体、地面掉落、PVP / 决斗、目标、交互窗和
> 地图局部状态后重建地图、HUD 小地图、Atlas、环境和玩家位置。`net_entity_test`
> `net_classic_session_test``gamescene_test``p9_test``p2b_test``netbridge_test`
> `p8_test` 已通过;受限环境下 localhost TCP 目标测试仍自动 skip。真实 40250 换图 / 第二次
> 连接 E2E地图 BGM 选择`MT_CLASSIC_ENTER_DELAY` 仍待完成
> 连接 E2E地图 BGM 选择仍待完成;`MT_CLASSIC_ENTER_DELAY` 定时发送已移除
> - **2026-09-02 增量 50Phase 1 W1**:落地 `CLIENT-GAP-FIX.md` §1.5 / §1.10 / §2.2。
> §1.5`ClassicSession::send_client_version()` 改为 locale 分支——EUROPE(本项目 locale)发
> `CG_CLIENT_VERSION2`header `0xf1``CGClientVersion2` 67Btimestamp 固定 `"1215955205"`),
@@ -2106,7 +2106,8 @@ Python 脚本;文档中出现的 `assets/root/*.py` 均属于本工程迁移
1. **Classic DirectEnter 已接入,但仍未完成真实双连接验收。** 登录入口仍是 Auth → Game;
角色列表保存每槽 `lAddr/wPort` 后,`M2Client.enter_game(index)` 会断开第一条游戏连接,
按角色槽地址重连,并在 DirectEnter 的 SELECT 阶段发送 `CG_CHARACTER_SELECT`
`MT_CLASSIC_ENTER_DELAY` 和真实两次 TCP 连接验收仍待完成。见
真实两次 TCP 连接验收仍待完成;`CG_ENTERGAME` 已改为在
`GC_MAIN_CHARACTER -> GameWindow.LoadData()` 事件边界发送。见
[`classic_session.cpp`](/Users/shenlei/Work/mt/metin2-client/extension/src/net/classic/classic_session.cpp)、
[`m2_client.cpp`](/Users/shenlei/Work/mt/metin2-client/extension/src/net/m2_client.cpp)。