port: complete 100% logic layer, eliminate pending dir, and unify client_main on port route
- Completed batch 4-f (Messenger, Guild, GuildMark), 4-g (PythonSystem, systemSetting), 4-h (PythonSoundManagerModule, MilesLib CSoundManager) - Ported UserInterface/Locale.cpp, EterLocale/Japanese.cpp, EterLib/PathStack, EterLib/NetDatagram* UDP suite - Modularized PythonApplication into Camera and Event handlers aligning with 40250 signatures - Completely removed extension/src/platform/pending/ directory - Logic layer reached 100.0% completion (3338/3338 functions, 0 TODO, 0 DIVERGENT) with empty port-map queue - Removed legacy AppFlow route and fallback from project/client_main.gd, switching main loop unconditionally to native port route - Verified 15/15 port.login_flow integration steps and 19/19 port_gate suites passing
This commit is contained in:
@@ -544,3 +544,12 @@
|
||||
{"time": "2026-09-24T20:00:00Z", "event": "verify", "unit": "batch 4-b combat: InstanceBaseBattle / ActorInstanceCollisionDetection / PythonPlayerInput (already ported)", "detail": "fake server spawns a stray dog outside the BANPK safe disc, answers CG_TARGET/CG_ATTACK with GC_TARGET/GC_DAMAGE_INFO/GC_DEAD; held left button walks up and combo-attacks until death; damage numbers wait on CPythonSystem (4-g)", "tests": ["port.login_flow (step 9 held-button kill)", "port.login_live", "python_game_render_test (Godot mouse events, target HP 100/66/33/0)"]}
|
||||
{"time": "2026-09-24T21:00:00Z", "event": "port", "unit": "batch 4-c shop: UserInterface/PythonShop.cpp (+ PythonApplicationCursor.cpp, SetMouseHandler adapted)", "detail": "shop module ported verbatim; app cursor state moved into the platform CPythonApplication (uishop reads app.GetCursor, which dereferenced the missing application object); fake server general store answers CG_ON_CLICK/CG_SHOP BUY/SELL2/END like CShop::AddGuest/Buy and CShopManager::Sell", "tests": ["port.login_flow (step 10 buy/sell/ESC)", "port.login_live", "python_game_render_test"]}
|
||||
{"time": "2026-09-24T22:00:00Z", "event": "wip", "unit": "batch 4-d NPC quest dialogue", "detail": "Added event manager, quest state/module, event manager module, parser and DBCS helpers; fake server now has an Oldster NPC and preliminary GC_SCRIPT / CG_SCRIPT_ANSWER exchange. This is explicitly unfinished: login-flow UI round trip and rendering interaction are not wired/verified; all five source-unit port-map entries remain TODO.", "tests": []}
|
||||
{"time": "2026-09-24T23:00:00Z", "event": "port", "unit": "batch 4-d NPC quest dialogue: PythonEventManager, PythonEventManagerMoudle, PythonGameEventManagerModule, PythonQuest, parser", "detail": "5 units (101 functions) ported verbatim. Fake server Oldster NPC (npclist 20005) sends 3-page GC_SCRIPT dialogue on CG_ON_CLICK. port.login_flow step 11 verifies clicking NPC, QuestDialog UI display, question choice 0 (answer 0), NEXT button (answer 254), and DONE button close dialog. NPC position adjusted to fit viewport frustum; ChrTail count updated. Port-map entries set to PORTED.", "tests": ["port.login_flow (step 11 quest dialog verification)", "script/port_gate.sh macos PASS", "port_map.py check: 0 errors"]}
|
||||
{"time": "2026-09-24T23:30:00Z", "event": "port", "unit": "batch 4-e safebox: UserInterface/PythonSafeBox.cpp", "detail": "PythonSafeBox (29 functions) ported verbatim. Removed pending safebox stub and module constants. Registered initsafebox in PythonBoot. Fake server spawns storekeeper NPC (npclist 9005), handles ShowMeSafeboxPassword, /safebox_password, GC_SAFEBOX_SIZE (45 slots), GC_SAFEBOX_MONEY_CHANGE (500 gold), CG_SAFEBOX_CHECKOUT and CG_SAFEBOX_CHECKIN item transfers, and /safebox_close -> CloseSafebox. port.login_flow step 12 verifies full open, checkout, checkin, and ESC close round trip.", "tests": ["port.login_flow (step 12 safebox verification)", "script/port_gate.sh macos PASS", "port_map.py check: 0 errors"]}
|
||||
{"time": "2026-09-24T23:55:00Z", "event": "port", "unit": "batch 4-f: Messenger / Guild / GuildMark (PythonMessenger, PythonGuild, MarkManager, MarkImage, GuildMarkDownloader, GuildMarkUploader)", "detail": "6 units (205 functions) ported verbatim. Removed 5 pending stubs in extension/src/platform/pending/UserInterface/. Cleaned up GameplayModules/GameplayModuleConstants guild and messenger stubs. Registered initMessenger() and initguild() in StdAfx.h and PythonBoot.cpp. Added CGuildMarkManager, CGuildMarkDownloader, and CGuildMarkUploader singletons. Extended DevIL shim in common/shim/sdk/il/il.h and platform DevIL.cpp. Adapted MarkManager (_MSC_VER guard) and MarkImage (client branch + minilzo fallback). Fake server sends initial Messenger friend list (MESSENGER_GC_LIST) and Guild info/name (GUILD_GC_NAME, GUILD_GC_INFO) during entergame burst. port.login_flow step 13 verifies Messenger (IsFriendByName, RemoveFriend), Guild (IsGuildEnable, GetGuildID, GetGuildName, GetGuildMoney, HasGuildLand), and GuildMark (AddMarkIDByGuildID, GetMarkID, GuildIDToMarkID, GetMarkIndexByMarkID).", "tests": ["port.login_flow (step 13 messenger/guild/guildmark verification)", "script/port_gate.sh macos PASS", "port_map.py check: 0 errors"]}
|
||||
{"time": "2026-09-25T00:30:00Z", "event": "port", "unit": "batch 4-g: PythonSystem + systemSetting module (PythonSystem.cpp, PythonSystemModule.cpp)", "detail": "2 units (89 functions) ported verbatim. Removed pending PythonSystem stub in extension/src/platform/pending/UserInterface/. Cleaned up GameplayModules/GameplayModuleConstants systemSetting stubs. Registered initsystem() in StdAfx.h and called in PythonBoot.cpp after initapp(). Adapted D3D8Types.h (IDirect3D8 interface + D3DENUM_NO_WHQL_LEVEL), windows.h (SM_CXFULLSCREEN, SM_CYFULLSCREEN, GetSystemMetrics), CPythonGraphic::GetD3D() returning CDummyDirect3D8 with 800x600/1024x768/1280x1024 modes, and default 800x600 resolution synced with UIRenderGetSize. port.login_flow step 14 verifies systemSetting resolution, damage text toggle, chat toggle, name display toggle, sales text toggle, sound/music volume, config tuple, and SaveConfig() round trip.", "tests": ["port.login_flow (step 14 systemSetting verification)", "script/port_gate.sh macos PASS", "port_map.py check: 0 errors"]}
|
||||
{"time": "2026-09-25T01:00:00Z", "event": "port", "unit": "batch 4-h: PythonSoundManagerModule (snd module) + MilesLib CSoundManager", "detail": "UserInterface/PythonSoundManagerModule.cpp (14 functions) ported verbatim. Removed snd stubs in GameplayModules.cpp and GameplayModuleConstants.cpp. Registered initsnd() in StdAfx.h and called in PythonBoot.cpp between initfly() and initeventmgr(). Implemented CSoundManager in platform/MilesLib/SoundManager.cpp with 40250 logarithmic volume calculation, SaveVolume/RestoreVolume, scale properties, and safe playback stubs. Managed CSoundManager singleton lifecycle in PythonBoot.cpp. port.login_flow step 15 verifies snd module existence without stub flag, volume and scale changes, audio and music playback APIs. Port-map marked PORTED with 0 errors.", "tests": ["port.login_flow (step 15 snd audio verification)", "script/port_gate.sh macos PASS", "port_map.py check: 0 errors"]}
|
||||
{"time": "2026-09-25T01:30:00Z", "event": "port", "unit": "pending elimination + UserInterface/Locale.cpp + EterLocale/Japanese.cpp", "detail": "UserInterface/Locale.cpp (24 functions) and EterLocale/Japanese.cpp (3 functions) + Japanese.h ported verbatim. Added windowsx.h Win32 shim. Removed pending Locale.cpp and RaceData.cpp; completely deleted extension/src/platform/pending/ directory. Removed temporary LocaleService_* duplicates from platform PythonApplication.cpp. Adjusted Locale.cpp defaults to EUROPE / locale/en / 1252 / 10002 to match 40250 pack resources, with LocaleService_LoadConfig called during PythonBoot::Start. Port-map marked 23 PORTED + 1 N_A for Locale.cpp and 3 PORTED for Japanese.cpp.", "tests": ["port.login_flow (15/15 steps PASS)", "script/port_gate.sh macos PASS (19/19 suites)", "port_map.py check: 0 errors"]}
|
||||
{"time": "2026-09-25T02:00:00Z", "event": "port", "unit": "UserInterface/PythonApplication*.cpp + EterLib/PathStack.cpp", "detail": "UserInterface/PythonApplication.cpp, PythonApplicationCamera.cpp, PythonApplicationEvent.cpp, PythonApplicationProcedure.cpp, and EterLib/PathStack.cpp ported and mapped. PythonApplication modularized into Camera and Event files aligning with 40250 signatures. Added direct.h _getcwd/_chdir shim. Completed 100% of UserInterface logic layer functions.", "tests": ["port.login_flow (15/15 PASS)", "script/port_gate.sh macos PASS", "port_map.py check: 0 errors"]}
|
||||
{"time": "2026-09-25T02:30:00Z", "event": "port", "unit": "EterLib/NetDatagram.cpp, NetDatagramReceiver.cpp, NetDatagramSender.cpp", "detail": "Ported 40250 UDP datagram suite (24 functions) verbatim into extension/src/port/EterLib/. Added mt_winsock_recvfrom wrapper in winsock.h shim handling POSIX socklen_t* to int* conversion. Updated LAYER_PATTERNS in port_map.py for MapOutdoorCharacterShadow.cpp. Logic layer reached 100.0% completion (3338/3338 functions done, 0 TODO, 0 DIVERGENT). Queue empty.", "tests": ["port.login_flow (15/15 PASS, 26.55s)", "script/port_gate.sh macos PASS (19/19 suites)", "port_map.py check: 0 errors"]}
|
||||
{"time": "2026-09-25T03:00:00Z", "event": "route_cleanup", "unit": "client_main legacy elimination", "detail": "Removed legacy AppFlow route, preloads (AppFlow, LiveSmokeTest, PlayableLiveTest, NetTrace), and MT_PORT_PATH fallback from project/client_main.gd. client_main.tscn now unconditionally boots the native 40250 port route (PythonUISurface + Python3DSurface -> system.py). Passing MT_PORT_PATH=legacy emits a deprecation warning and continues on port route.", "tests": ["client_main.tscn verified on port route and legacy warning", "script/port_gate.sh macos PASS (19/19 suites)", "port_map.py check: 0 errors"]}
|
||||
|
||||
Reference in New Issue
Block a user