port: ItemData, ItemManager, PythonNonPlayer + LoadLocaleData (batch 2 P3-a)

Verbatim 40250 GameLib ItemData/ItemManager and UserInterface
PythonNonPlayer(+Module) replace their pending stand-ins and the
nonplayer module stub. LoadLocaleData's body moves into the platform
CPythonApplication stand-in, so the select phase loads item_proto and
mob_proto; CPythonSkill is still pending, so it returns false after the
tables load. login_flow checks item 19 (Sword+9) and mob 101 (Wild Dog),
offline and live.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
shenlei
2026-09-24 00:36:10 +09:00
co-authored by Claude Opus 5.5
parent ce9f96398e
commit f0564a7f12
21 changed files with 1960 additions and 250 deletions
@@ -0,0 +1,130 @@
{
"reference": "UserInterface/PythonApplication.cpp",
"reference_sha256": "9a9e5268c7475e6ed720bc8ee53ed58d334b22d1efa93310b3d45f1bbdd85bf3",
"priority": "P4",
"contracts": [],
"functions": {
"CPythonApplication::CPythonApplication": {
"status": "TODO"
},
"CPythonApplication::~CPythonApplication": {
"status": "TODO"
},
"CPythonApplication::GetMousePosition": {
"status": "TODO"
},
"CPythonApplication::SetMinFog": {
"status": "TODO"
},
"CPythonApplication::SetFrameSkip": {
"status": "TODO"
},
"CPythonApplication::NotifyHack": {
"status": "TODO"
},
"CPythonApplication::GetInfo": {
"status": "TODO"
},
"CPythonApplication::Abort": {
"status": "TODO"
},
"CPythonApplication::Exit": {
"status": "TODO"
},
"CPythonApplication::RenderGame": {
"status": "TODO"
},
"CPythonApplication::UpdateGame": {
"status": "TODO"
},
"CPythonApplication::SkipRenderBuffering": {
"status": "TODO"
},
"CPythonApplication::Process": {
"status": "TODO"
},
"CPythonApplication::UpdateClientRect": {
"status": "TODO"
},
"CPythonApplication::SetMouseHandler": {
"status": "TODO"
},
"CPythonApplication::CheckDeviceState": {
"status": "TODO"
},
"CPythonApplication::CreateDevice": {
"status": "TODO"
},
"CPythonApplication::Loop": {
"status": "TODO"
},
"LoadLocaleData": {
"status": "ADAPTED",
"impl": [
"extension/src/platform/UserInterface/PythonApplication.cpp:LoadLocaleData"
],
"note": "Body verbatim in the platform CPythonApplication stand-in; CPythonSkill is still pending, so RegisterSkillDesc fails and it returns false after the item and mob tables load (localeinfo.py ignores the result).",
"test": "extension/tests/port_login_flow_test.cpp step 3c (port.login_flow / port.login_live: item 19 Sword+9, mob 101 Wild Dog)"
},
"__GetWindowMode": {
"status": "TODO"
},
"CPythonApplication::Create": {
"status": "TODO"
},
"CPythonApplication::SetGlobalCenterPosition": {
"status": "TODO"
},
"CPythonApplication::SetCenterPosition": {
"status": "TODO"
},
"CPythonApplication::GetCenterPosition": {
"status": "TODO"
},
"CPythonApplication::SetServerTime": {
"status": "TODO"
},
"CPythonApplication::GetServerTime": {
"status": "TODO"
},
"CPythonApplication::GetServerTimeStamp": {
"status": "TODO"
},
"CPythonApplication::GetGlobalTime": {
"status": "TODO"
},
"CPythonApplication::GetGlobalElapsedTime": {
"status": "TODO"
},
"CPythonApplication::SetFPS": {
"status": "TODO"
},
"CPythonApplication::GetWidth": {
"status": "TODO"
},
"CPythonApplication::GetHeight": {
"status": "TODO"
},
"CPythonApplication::SetConnectData": {
"status": "TODO"
},
"CPythonApplication::GetConnectData": {
"status": "TODO"
},
"CPythonApplication::EnableSpecialCameraMode": {
"status": "TODO"
},
"CPythonApplication::SetCameraSpeed": {
"status": "TODO"
},
"CPythonApplication::SetForceSightRange": {
"status": "TODO"
},
"CPythonApplication::Clear": {
"status": "TODO"
},
"CPythonApplication::Destroy": {
"status": "TODO"
}
}
}
@@ -0,0 +1,86 @@
{
"reference": "UserInterface/PythonNonPlayer.cpp",
"reference_sha256": "2eae3da909c68a8c7c56dd70e024a1e65f613c5c3dd05d8b84aa4ac10e3bbfad",
"priority": "P4",
"contracts": [],
"functions": {
"CPythonNonPlayer::LoadNonPlayerData": {
"status": "PORTED",
"impl": [
"extension/src/port/UserInterface/PythonNonPlayer.cpp:CPythonNonPlayer::LoadNonPlayerData"
]
},
"CPythonNonPlayer::GetName": {
"status": "PORTED",
"impl": [
"extension/src/port/UserInterface/PythonNonPlayer.cpp:CPythonNonPlayer::GetName"
]
},
"CPythonNonPlayer::GetInstanceType": {
"status": "PORTED",
"impl": [
"extension/src/port/UserInterface/PythonNonPlayer.cpp:CPythonNonPlayer::GetInstanceType"
]
},
"CPythonNonPlayer::GetTable": {
"status": "PORTED",
"impl": [
"extension/src/port/UserInterface/PythonNonPlayer.cpp:CPythonNonPlayer::GetTable"
]
},
"CPythonNonPlayer::GetEventType": {
"status": "PORTED",
"impl": [
"extension/src/port/UserInterface/PythonNonPlayer.cpp:CPythonNonPlayer::GetEventType"
]
},
"CPythonNonPlayer::GetEventTypeByVID": {
"status": "PORTED",
"impl": [
"extension/src/port/UserInterface/PythonNonPlayer.cpp:CPythonNonPlayer::GetEventTypeByVID"
]
},
"CPythonNonPlayer::GetMonsterName": {
"status": "PORTED",
"impl": [
"extension/src/port/UserInterface/PythonNonPlayer.cpp:CPythonNonPlayer::GetMonsterName"
]
},
"CPythonNonPlayer::GetMonsterColor": {
"status": "PORTED",
"impl": [
"extension/src/port/UserInterface/PythonNonPlayer.cpp:CPythonNonPlayer::GetMonsterColor"
]
},
"CPythonNonPlayer::GetMatchableMobList": {
"status": "PORTED",
"impl": [
"extension/src/port/UserInterface/PythonNonPlayer.cpp:CPythonNonPlayer::GetMatchableMobList"
]
},
"CPythonNonPlayer::Clear": {
"status": "PORTED",
"impl": [
"extension/src/port/UserInterface/PythonNonPlayer.cpp:CPythonNonPlayer::Clear"
]
},
"CPythonNonPlayer::Destroy": {
"status": "PORTED",
"impl": [
"extension/src/port/UserInterface/PythonNonPlayer.cpp:CPythonNonPlayer::Destroy"
]
},
"CPythonNonPlayer::CPythonNonPlayer": {
"status": "PORTED",
"impl": [
"extension/src/port/UserInterface/PythonNonPlayer.cpp:CPythonNonPlayer::CPythonNonPlayer"
]
},
"CPythonNonPlayer::~CPythonNonPlayer": {
"status": "PORTED",
"impl": [
"extension/src/port/UserInterface/PythonNonPlayer.cpp:CPythonNonPlayer::~CPythonNonPlayer"
]
}
}
}
@@ -0,0 +1,50 @@
{
"reference": "UserInterface/PythonNonPlayerModule.cpp",
"reference_sha256": "90e6460fd07557f1624adecea7a4866d992e586fbdeaedd773105f7490c5282a",
"priority": "P4",
"contracts": [],
"functions": {
"nonplayerGetEventType": {
"status": "PORTED",
"impl": [
"extension/src/port/UserInterface/PythonNonPlayerModule.cpp:nonplayerGetEventType"
]
},
"nonplayerGetEventTypeByVID": {
"status": "PORTED",
"impl": [
"extension/src/port/UserInterface/PythonNonPlayerModule.cpp:nonplayerGetEventTypeByVID"
]
},
"nonplayerGetLevelByVID": {
"status": "PORTED",
"impl": [
"extension/src/port/UserInterface/PythonNonPlayerModule.cpp:nonplayerGetLevelByVID"
]
},
"nonplayerGetGradeByVID": {
"status": "PORTED",
"impl": [
"extension/src/port/UserInterface/PythonNonPlayerModule.cpp:nonplayerGetGradeByVID"
]
},
"nonplayerGetMonsterName": {
"status": "PORTED",
"impl": [
"extension/src/port/UserInterface/PythonNonPlayerModule.cpp:nonplayerGetMonsterName"
]
},
"nonplayerLoadNonPlayerData": {
"status": "PORTED",
"impl": [
"extension/src/port/UserInterface/PythonNonPlayerModule.cpp:nonplayerLoadNonPlayerData"
]
},
"initNonPlayer": {
"status": "PORTED",
"impl": [
"extension/src/port/UserInterface/PythonNonPlayerModule.cpp:initNonPlayer"
]
}
}
}