port 2V2-b: GamePhase dispatch consumes the Entergame burst
PythonNetworkStreamPhaseGame/PhaseGameActor/PhaseGameItem/Command, NetworkActorManager and PythonChat/PythonChatModule are ported verbatim and dispatched at runtime; the 2V0 chat stub module is removed and initChat() runs before initnet() as in 40250. InstanceBase, PythonCharacterManager and GameLib ActorInstance/RaceData/RaceManager compile but stay TODO until 2V2-c/d wire them. Units not ported yet get their singletons from PythonBoot's GameSingletons (CPythonApplication member order) and platform/pending stand-ins generated by platform_stub.py pending; const char* stand-ins return "". port.login_flow's fake server now sends the CInputLogin::Entergame order (actor insert, NPC positions, PHASE_GAME, land list, time, channel, greet notice, ping) and a TraceError observer asserts no unknown packet header. port.login_live passes against the real server for 10 s of game phase. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 5.5
parent
d16fabf61c
commit
62b6e23bfc
@@ -9,7 +9,8 @@
|
||||
|
||||
Mechanical edits, and nothing else:
|
||||
- CP949 is decoded and written as UTF-8 (comments are Korean). A non-ASCII string or character
|
||||
literal would change bytes at runtime, so such a file is refused and must be handled by hand.
|
||||
literal would change bytes at runtime, so its non-ASCII characters are written as their CP949
|
||||
bytes in 3-digit octal escapes (`"\301\326..."`): the compiled bytes stay those of 40250.
|
||||
- CRLF becomes LF.
|
||||
- `#include "..."` paths get the on-disk case of the file they name (40250 builds on a
|
||||
case-insensitive file system and writes `../eterLib/StdAfx.h`, `Parser.h` for `parser.h`, ...),
|
||||
@@ -77,9 +78,12 @@ def mechanical(ref: Path, index: dict[str, Path], src: Path) -> str:
|
||||
raise SystemExit(f"{src.relative_to(ref)}: not CP949 ({e})")
|
||||
text = text.replace("\r\n", "\n").lstrip("")
|
||||
code = COMMENT.sub(lambda m: " " * len(m.group(0)), text)
|
||||
bad = [m.group(0) for m in LITERAL.finditer(code) if not m.group(0).isascii()]
|
||||
if bad:
|
||||
raise SystemExit(f"{src.relative_to(ref)}: non-ASCII literal(s), copy by hand: {bad[:3]}")
|
||||
# Literals are found with comments blanked out; offsets are the same in `text`.
|
||||
for m in reversed(list(LITERAL.finditer(code))):
|
||||
if not m.group(0).isascii():
|
||||
escaped = "".join(c if c.isascii() else "".join(f"\\{b:03o}" for b in c.encode("cp949"))
|
||||
for c in m.group(0))
|
||||
text = text[:m.start()] + escaped + text[m.end():]
|
||||
return INCLUDE.sub(lambda m: m.group(1) + fix_include(ref, index, src, m.group(2)) + m.group(3), text)
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user