2V1-b/c: PythonNetworkStream phases, AccountConnector and the net module

Port PythonNetworkStream with its HandShake/Login/Select/Loading/Offline
phases, AccountConnector and PythonNetworkStreamModule verbatim; the net
stub goes. PythonBoot creates the network stream, account connector,
player, flying manager and effect manager like CPythonApplication, and
app.Create/Process drive CNetworkDevice and both connectors.

Packet.h long fields become 32-bit LONG; port.packet checks 38
login/select/loading packet sizes against wire_classic.h. Unported units
in the link closure live under platform/pending/ as stand-ins. The macOS
gate now builds all and finds iconv.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
shenlei
2026-09-23 15:02:14 +09:00
co-authored by Claude Opus 5.5
parent cd3b8b506f
commit 4d9b800efb
44 changed files with 8292 additions and 324 deletions
+3 -1
View File
@@ -55,8 +55,10 @@ func run() -> int:
print("system.py -> %s" % err)
_ck(err.contains(EXPECTED_STOP),
"system.py 进入 prototype.RunApp(),Create() 报告待实现的图形设备")
_ck(Metin2PythonHost.run_line("import net, player, item; assert net.__port_stub__ == 1 and player.__port_stub__ == 1 and item.__port_stub__ == 1") == "",
_ck(Metin2PythonHost.run_line("import player, item; assert player.__port_stub__ == 1 and item.__port_stub__ == 1") == "",
"2V0 玩法模块桩已注册,调用会记录到 stderr")
_ck(Metin2PythonHost.run_line("import net; assert not hasattr(net, '__port_stub__') and net.PHASE_WINDOW_SELECT == 2 and not net.IsConnect()") == "",
"net 是移植的 40250 PythonNetworkStreamModule(2V1)")
# 真正从 Godot 入口转发事件给 40250 的 CWindowManager,再由窗口树回调 Python。
Metin2PythonHost.set_ui_size(800, 600)
var probe_source := """