2V2-a: game.GameWindow opens after Loading and sends CG_ENTERGAME

The 2V0 stub modules now carry the 40250 module constants (copied from each
module's init function by stub_constants.py) and return zero values shaped like
each reference function's Py_BuildValue, so interfaceModule.MakeInterface runs
through (uiSafebox no longer divides by a zero SAFEBOX_SLOT_Y_COUNT).

UserInterface/StdAfx.h includes Locale.h before GameType.h as the 40250 PCH
does; the reversed order dropped GameType.h's ENABLE_NEW_EQUIPMENT_SYSTEM
branches.

port.login_flow's fake server checks CG_ENTERGAME; port.login_live reaches the
GameWindow on 192.168.21.203.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
shenlei
2026-09-23 16:56:23 +09:00
co-authored by Claude Opus 5.5
parent 0073469dd1
commit d16fabf61c
9 changed files with 2048 additions and 833 deletions
+7 -1
View File
@@ -434,7 +434,13 @@ bool FakeLoginServer::ServeGame(Connection& c, int index)
c.sequence = (c.sequence + 1) % SEQUENCE_TABLE_SIZE;
Event(name + ":client_version");
// Hold the connection (the loading screen) until the test stops us.
// game.GameWindow.Open (after the loading steps' net.StartGame()) sends CG_ENTERGAME.
auto enter = zeroed<CGEnterGame>();
if (read_packet(c, HDR_CG_ENTERGAME, &enter, sizeof(enter), &error) != 1)
return Fail(name + ": CG_ENTERGAME: " + error);
Event(name + ":entergame");
// Hold the connection until the test stops us.
std::uint8_t byte = 0;
while (!m_stop && c.Read(&byte, 1) == 1)
;