port: mark PythonCharacterManager + InstanceBaseMovement PORTED (batch 2 P0)
Both units were copied verbatim in 2V2-b and are on the running path since 2V3; diffed against 40250 (only include case, comment encoding and two PORT edits) and no duplicate definitions outside port/. P0 queue is empty. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 5.5
parent
8b4700f008
commit
05de621199
@@ -526,3 +526,4 @@
|
||||
{"time":"2026-09-23T13:09:00Z","event":"test_run","id":"PORT-PLAN 2V2-e.5","result":"PASS","tests":["script/port_gate.sh macos: PASS (12 port tests; port.login_live skipped without MT_LIVE_*)","script/python_game_render_test.sh: PASS (4/4 native light0, finite camera matrix, 0.1 cm foot-ground difference, 559 terrain texture contrasts)","port_map.py check: 0 errors","git diff --check: PASS"],"reason":"The first sandboxed port gate run denied localhost sockets; loopback-enabled rerun passed. Full CMapOutdoor and live/cross-map evidence remain outstanding."}
|
||||
{"time": "2026-09-23T14:45:00Z", "event": "port_round", "unit": "PORT-PLAN 2V3-a: player/input/event handler chain and Granny root motion", "ported": ["UserInterface/PythonPlayer.cpp", "UserInterface/PythonPlayerInput.cpp", "UserInterface/PythonPlayerInputKeyboard.cpp", "UserInterface/PythonPlayerInputMouse.cpp", "UserInterface/PythonPlayerEventHandler.cpp", "UserInterface/PythonPlayerSkill.cpp", "UserInterface/PythonPlayerModule.cpp", "UserInterface/GameType.cpp"], "adapted": ["GrannyUpdateModelMatrix constant-extraction root motion from TrackGroups[0] AccumulationFlags/LoopTranslation (libgr2)"], "divergent": ["VDA accumulation not implemented", "CPythonSkill/CItemData/CItemManager/CPythonItem callees remain pending stubs"], "needs_live": [], "tests": ["port.login_flow: DIK_UP walked 108 cm; fake server got CG_MOVE FUNC_MOVE then FUNC_WAIT at moved y", "port.login_live 192.168.21.203: PASS, walked 132 cm", "ctest all: PASS (login_live skipped without MT_LIVE_*)", "port_map.py check: 0 errors"], "todo": ["mouse click-to-move and attack", "CheckAdvancing/map attribute stubs", "delete legacy movement when default route switches to port"]}
|
||||
{"time": "2026-09-23T15:00:00Z", "event": "port_round", "unit": "PORT-PLAN 2V3-b: click-to-move, terrain picking and attribute map", "ported": [], "adapted": ["CScreen::SetCursorPosition / CPythonGraphic::SetCursorPosition verbatim in platform layer", "CPythonBackground::GetPickingPoint* terrain half via CMapOutdoor::__PickTerrainHeight over native height", "CMapManager::isAttrOn via CMapOutdoor/CTerrain::isAttrOn over packed attr.atr", "CPythonBackground::CheckAdvancing + collision checkers verbatim (no map objects registered yet)"], "divergent": ["object picking and object collision wait for CMapOutdoor"], "needs_live": [], "tests": ["port.login_flow: click walked 334 cm, FUNC_MOVE..FUNC_WAIT; 17814 blocked cells", "port.login_live 192.168.21.203: PASS (key 133 cm, click 296 cm, 11406 blocked cells)", "script/python_game_render_test.sh offline: PASS", "ctest all: 19/19 (login_live skipped without env)", "port_map.py check: 0 errors"], "todo": ["switch client_main default to the port route and delete the legacy GDScript client"]}
|
||||
{"time": "2026-09-24T02:00:00Z", "event": "port_round", "unit": "PORT-PLAN batch 2 P0: UserInterface/PythonCharacterManager.cpp + InstanceBaseMovement.cpp", "ported": ["UserInterface/PythonCharacterManager.cpp (54)", "UserInterface/InstanceBaseMovement.cpp (32)"], "adapted": [], "divergent": [], "needs_live": [], "tests": ["diff vs 40250: include case, comment encoding, 2 PORT edits only", "ctest all: 19/19 incl. port.login_live 192.168.21.203", "port_map.py check: 0 errors"], "todo": ["P1 queue: FlyingInstance, ActorInstanceData, FlyingObjectManager, FlyTrace"]}
|
||||
|
||||
@@ -5,100 +5,197 @@
|
||||
"contracts": [],
|
||||
"functions": {
|
||||
"CInstanceBase::SetAttackSpeed": {
|
||||
"status": "TODO"
|
||||
"status": "PORTED",
|
||||
"impl": [
|
||||
"extension/src/port/UserInterface/InstanceBaseMovement.cpp:CInstanceBase::SetAttackSpeed"
|
||||
]
|
||||
},
|
||||
"CInstanceBase::SetMoveSpeed": {
|
||||
"status": "TODO"
|
||||
"status": "PORTED",
|
||||
"impl": [
|
||||
"extension/src/port/UserInterface/InstanceBaseMovement.cpp:CInstanceBase::SetMoveSpeed"
|
||||
]
|
||||
},
|
||||
"CInstanceBase::SetRotationSpeed": {
|
||||
"status": "TODO"
|
||||
"status": "PORTED",
|
||||
"impl": [
|
||||
"extension/src/port/UserInterface/InstanceBaseMovement.cpp:CInstanceBase::SetRotationSpeed"
|
||||
]
|
||||
},
|
||||
"CInstanceBase::NEW_Stop": {
|
||||
"status": "TODO"
|
||||
"status": "PORTED",
|
||||
"impl": [
|
||||
"extension/src/port/UserInterface/InstanceBaseMovement.cpp:CInstanceBase::NEW_Stop"
|
||||
]
|
||||
},
|
||||
"CInstanceBase::NEW_SyncPixelPosition": {
|
||||
"status": "TODO"
|
||||
"status": "PORTED",
|
||||
"impl": [
|
||||
"extension/src/port/UserInterface/InstanceBaseMovement.cpp:CInstanceBase::NEW_SyncPixelPosition"
|
||||
],
|
||||
"note": "verbatim apart from the signature: 40250 Win32 long is 32-bit, so the references are LONG & to keep the header's 32-bit type on LP64."
|
||||
},
|
||||
"CInstanceBase::NEW_CanMoveToDestPixelPosition": {
|
||||
"status": "TODO"
|
||||
"status": "PORTED",
|
||||
"impl": [
|
||||
"extension/src/port/UserInterface/InstanceBaseMovement.cpp:CInstanceBase::NEW_CanMoveToDestPixelPosition"
|
||||
]
|
||||
},
|
||||
"CInstanceBase_GetDegreeFromPosition": {
|
||||
"status": "TODO"
|
||||
"status": "PORTED",
|
||||
"impl": [
|
||||
"extension/src/port/UserInterface/InstanceBaseMovement.cpp:CInstanceBase_GetDegreeFromPosition"
|
||||
]
|
||||
},
|
||||
"CInstanceBase::NEW_GetAdvancingRotationFromDirPixelPosition": {
|
||||
"status": "TODO"
|
||||
"status": "PORTED",
|
||||
"impl": [
|
||||
"extension/src/port/UserInterface/InstanceBaseMovement.cpp:CInstanceBase::NEW_GetAdvancingRotationFromDirPixelPosition"
|
||||
]
|
||||
},
|
||||
"CInstanceBase::NEW_GetAdvancingRotationFromDestPixelPosition": {
|
||||
"status": "TODO"
|
||||
"status": "PORTED",
|
||||
"impl": [
|
||||
"extension/src/port/UserInterface/InstanceBaseMovement.cpp:CInstanceBase::NEW_GetAdvancingRotationFromDestPixelPosition"
|
||||
]
|
||||
},
|
||||
"CInstanceBase::NEW_GetAdvancingRotationFromPixelPosition": {
|
||||
"status": "TODO"
|
||||
"status": "PORTED",
|
||||
"impl": [
|
||||
"extension/src/port/UserInterface/InstanceBaseMovement.cpp:CInstanceBase::NEW_GetAdvancingRotationFromPixelPosition"
|
||||
]
|
||||
},
|
||||
"CInstanceBase::NEW_SetAdvancingRotationFromDirPixelPosition": {
|
||||
"status": "TODO"
|
||||
"status": "PORTED",
|
||||
"impl": [
|
||||
"extension/src/port/UserInterface/InstanceBaseMovement.cpp:CInstanceBase::NEW_SetAdvancingRotationFromDirPixelPosition"
|
||||
]
|
||||
},
|
||||
"CInstanceBase::NEW_SetAdvancingRotationFromPixelPosition": {
|
||||
"status": "TODO"
|
||||
"status": "PORTED",
|
||||
"impl": [
|
||||
"extension/src/port/UserInterface/InstanceBaseMovement.cpp:CInstanceBase::NEW_SetAdvancingRotationFromPixelPosition"
|
||||
]
|
||||
},
|
||||
"CInstanceBase::NEW_SetAdvancingRotationFromDestPixelPosition": {
|
||||
"status": "TODO"
|
||||
"status": "PORTED",
|
||||
"impl": [
|
||||
"extension/src/port/UserInterface/InstanceBaseMovement.cpp:CInstanceBase::NEW_SetAdvancingRotationFromDestPixelPosition"
|
||||
]
|
||||
},
|
||||
"CInstanceBase::SetAdvancingRotation": {
|
||||
"status": "TODO"
|
||||
"status": "PORTED",
|
||||
"impl": [
|
||||
"extension/src/port/UserInterface/InstanceBaseMovement.cpp:CInstanceBase::SetAdvancingRotation"
|
||||
]
|
||||
},
|
||||
"CInstanceBase::StartWalking": {
|
||||
"status": "TODO"
|
||||
"status": "PORTED",
|
||||
"impl": [
|
||||
"extension/src/port/UserInterface/InstanceBaseMovement.cpp:CInstanceBase::StartWalking"
|
||||
]
|
||||
},
|
||||
"CInstanceBase::EndWalking": {
|
||||
"status": "TODO"
|
||||
"status": "PORTED",
|
||||
"impl": [
|
||||
"extension/src/port/UserInterface/InstanceBaseMovement.cpp:CInstanceBase::EndWalking"
|
||||
]
|
||||
},
|
||||
"CInstanceBase::EndWalkingWithoutBlending": {
|
||||
"status": "TODO"
|
||||
"status": "PORTED",
|
||||
"impl": [
|
||||
"extension/src/port/UserInterface/InstanceBaseMovement.cpp:CInstanceBase::EndWalkingWithoutBlending"
|
||||
]
|
||||
},
|
||||
"CInstanceBase::IsWaiting": {
|
||||
"status": "TODO"
|
||||
"status": "PORTED",
|
||||
"impl": [
|
||||
"extension/src/port/UserInterface/InstanceBaseMovement.cpp:CInstanceBase::IsWaiting"
|
||||
]
|
||||
},
|
||||
"CInstanceBase::IsWalking": {
|
||||
"status": "TODO"
|
||||
"status": "PORTED",
|
||||
"impl": [
|
||||
"extension/src/port/UserInterface/InstanceBaseMovement.cpp:CInstanceBase::IsWalking"
|
||||
]
|
||||
},
|
||||
"CInstanceBase::IsPushing": {
|
||||
"status": "TODO"
|
||||
"status": "PORTED",
|
||||
"impl": [
|
||||
"extension/src/port/UserInterface/InstanceBaseMovement.cpp:CInstanceBase::IsPushing"
|
||||
]
|
||||
},
|
||||
"CInstanceBase::IsAttacked": {
|
||||
"status": "TODO"
|
||||
"status": "PORTED",
|
||||
"impl": [
|
||||
"extension/src/port/UserInterface/InstanceBaseMovement.cpp:CInstanceBase::IsAttacked"
|
||||
]
|
||||
},
|
||||
"CInstanceBase::IsKnockDown": {
|
||||
"status": "TODO"
|
||||
"status": "PORTED",
|
||||
"impl": [
|
||||
"extension/src/port/UserInterface/InstanceBaseMovement.cpp:CInstanceBase::IsKnockDown"
|
||||
]
|
||||
},
|
||||
"CInstanceBase::IsAttacking": {
|
||||
"status": "TODO"
|
||||
"status": "PORTED",
|
||||
"impl": [
|
||||
"extension/src/port/UserInterface/InstanceBaseMovement.cpp:CInstanceBase::IsAttacking"
|
||||
]
|
||||
},
|
||||
"CInstanceBase::IsActingEmotion": {
|
||||
"status": "TODO"
|
||||
"status": "PORTED",
|
||||
"impl": [
|
||||
"extension/src/port/UserInterface/InstanceBaseMovement.cpp:CInstanceBase::IsActingEmotion"
|
||||
]
|
||||
},
|
||||
"CInstanceBase::IsGoing": {
|
||||
"status": "TODO"
|
||||
"status": "PORTED",
|
||||
"impl": [
|
||||
"extension/src/port/UserInterface/InstanceBaseMovement.cpp:CInstanceBase::IsGoing"
|
||||
]
|
||||
},
|
||||
"CInstanceBase::NEW_MoveToDestInstanceDirection": {
|
||||
"status": "TODO"
|
||||
"status": "PORTED",
|
||||
"impl": [
|
||||
"extension/src/port/UserInterface/InstanceBaseMovement.cpp:CInstanceBase::NEW_MoveToDestInstanceDirection"
|
||||
]
|
||||
},
|
||||
"CInstanceBase::NEW_MoveToDestPixelPositionDirection": {
|
||||
"status": "TODO"
|
||||
"status": "PORTED",
|
||||
"impl": [
|
||||
"extension/src/port/UserInterface/InstanceBaseMovement.cpp:CInstanceBase::NEW_MoveToDestPixelPositionDirection"
|
||||
]
|
||||
},
|
||||
"CInstanceBase::NEW_Goto": {
|
||||
"status": "TODO"
|
||||
"status": "PORTED",
|
||||
"impl": [
|
||||
"extension/src/port/UserInterface/InstanceBaseMovement.cpp:CInstanceBase::NEW_Goto"
|
||||
]
|
||||
},
|
||||
"CInstanceBase::NEW_MoveToDirection": {
|
||||
"status": "TODO"
|
||||
"status": "PORTED",
|
||||
"impl": [
|
||||
"extension/src/port/UserInterface/InstanceBaseMovement.cpp:CInstanceBase::NEW_MoveToDirection"
|
||||
]
|
||||
},
|
||||
"CInstanceBase::EndGoing": {
|
||||
"status": "TODO"
|
||||
"status": "PORTED",
|
||||
"impl": [
|
||||
"extension/src/port/UserInterface/InstanceBaseMovement.cpp:CInstanceBase::EndGoing"
|
||||
]
|
||||
},
|
||||
"CInstanceBase::SetRunMode": {
|
||||
"status": "TODO"
|
||||
"status": "PORTED",
|
||||
"impl": [
|
||||
"extension/src/port/UserInterface/InstanceBaseMovement.cpp:CInstanceBase::SetRunMode"
|
||||
]
|
||||
},
|
||||
"CInstanceBase::SetWalkMode": {
|
||||
"status": "TODO"
|
||||
"status": "PORTED",
|
||||
"impl": [
|
||||
"extension/src/port/UserInterface/InstanceBaseMovement.cpp:CInstanceBase::SetWalkMode"
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -5,166 +5,329 @@
|
||||
"contracts": [],
|
||||
"functions": {
|
||||
"CPythonCharacterManager::AdjustCollisionWithOtherObjects": {
|
||||
"status": "TODO"
|
||||
"status": "PORTED",
|
||||
"impl": [
|
||||
"extension/src/port/UserInterface/PythonCharacterManager.cpp:CPythonCharacterManager::AdjustCollisionWithOtherObjects"
|
||||
]
|
||||
},
|
||||
"CPythonCharacterManager::EnableSortRendering": {
|
||||
"status": "TODO"
|
||||
"status": "PORTED",
|
||||
"impl": [
|
||||
"extension/src/port/UserInterface/PythonCharacterManager.cpp:CPythonCharacterManager::EnableSortRendering"
|
||||
]
|
||||
},
|
||||
"CPythonCharacterManager::InsertPVPKey": {
|
||||
"status": "TODO"
|
||||
"status": "PORTED",
|
||||
"impl": [
|
||||
"extension/src/port/UserInterface/PythonCharacterManager.cpp:CPythonCharacterManager::InsertPVPKey"
|
||||
]
|
||||
},
|
||||
"CPythonCharacterManager::RemovePVPKey": {
|
||||
"status": "TODO"
|
||||
"status": "PORTED",
|
||||
"impl": [
|
||||
"extension/src/port/UserInterface/PythonCharacterManager.cpp:CPythonCharacterManager::RemovePVPKey"
|
||||
]
|
||||
},
|
||||
"CPythonCharacterManager::ChangeGVG": {
|
||||
"status": "TODO"
|
||||
"status": "PORTED",
|
||||
"impl": [
|
||||
"extension/src/port/UserInterface/PythonCharacterManager.cpp:CPythonCharacterManager::ChangeGVG"
|
||||
]
|
||||
},
|
||||
"CPythonCharacterManager::ClearMainInstance": {
|
||||
"status": "TODO"
|
||||
"status": "PORTED",
|
||||
"impl": [
|
||||
"extension/src/port/UserInterface/PythonCharacterManager.cpp:CPythonCharacterManager::ClearMainInstance"
|
||||
]
|
||||
},
|
||||
"CPythonCharacterManager::SetMainInstance": {
|
||||
"status": "TODO"
|
||||
"status": "PORTED",
|
||||
"impl": [
|
||||
"extension/src/port/UserInterface/PythonCharacterManager.cpp:CPythonCharacterManager::SetMainInstance"
|
||||
]
|
||||
},
|
||||
"CPythonCharacterManager::GetMainInstancePtr": {
|
||||
"status": "TODO"
|
||||
"status": "PORTED",
|
||||
"impl": [
|
||||
"extension/src/port/UserInterface/PythonCharacterManager.cpp:CPythonCharacterManager::GetMainInstancePtr"
|
||||
]
|
||||
},
|
||||
"CPythonCharacterManager::GetInfo": {
|
||||
"status": "TODO"
|
||||
"status": "PORTED",
|
||||
"impl": [
|
||||
"extension/src/port/UserInterface/PythonCharacterManager.cpp:CPythonCharacterManager::GetInfo"
|
||||
]
|
||||
},
|
||||
"CPythonCharacterManager::IsCacheMode": {
|
||||
"status": "TODO"
|
||||
"status": "PORTED",
|
||||
"impl": [
|
||||
"extension/src/port/UserInterface/PythonCharacterManager.cpp:CPythonCharacterManager::IsCacheMode"
|
||||
]
|
||||
},
|
||||
"CPythonCharacterManager::Update": {
|
||||
"status": "TODO"
|
||||
"status": "PORTED",
|
||||
"impl": [
|
||||
"extension/src/port/UserInterface/PythonCharacterManager.cpp:CPythonCharacterManager::Update"
|
||||
]
|
||||
},
|
||||
"CPythonCharacterManager::ShowPointEffect": {
|
||||
"status": "TODO"
|
||||
"status": "PORTED",
|
||||
"impl": [
|
||||
"extension/src/port/UserInterface/PythonCharacterManager.cpp:CPythonCharacterManager::ShowPointEffect"
|
||||
]
|
||||
},
|
||||
"CPythonCharacterManager::RegisterPointEffect": {
|
||||
"status": "TODO"
|
||||
"status": "PORTED",
|
||||
"impl": [
|
||||
"extension/src/port/UserInterface/PythonCharacterManager.cpp:CPythonCharacterManager::RegisterPointEffect"
|
||||
]
|
||||
},
|
||||
"CPythonCharacterManager::UpdateTransform": {
|
||||
"status": "TODO"
|
||||
"status": "PORTED",
|
||||
"impl": [
|
||||
"extension/src/port/UserInterface/PythonCharacterManager.cpp:CPythonCharacterManager::UpdateTransform"
|
||||
]
|
||||
},
|
||||
"CPythonCharacterManager::UpdateDeleting": {
|
||||
"status": "TODO"
|
||||
"status": "PORTED",
|
||||
"impl": [
|
||||
"extension/src/port/UserInterface/PythonCharacterManager.cpp:CPythonCharacterManager::UpdateDeleting"
|
||||
]
|
||||
},
|
||||
"CPythonCharacterManager::Deform": {
|
||||
"status": "TODO"
|
||||
"status": "PORTED",
|
||||
"impl": [
|
||||
"extension/src/port/UserInterface/PythonCharacterManager.cpp:CPythonCharacterManager::Deform"
|
||||
]
|
||||
},
|
||||
"CPythonCharacterManager::OLD_GetPickedInstanceVID": {
|
||||
"status": "TODO"
|
||||
"status": "PORTED",
|
||||
"impl": [
|
||||
"extension/src/port/UserInterface/PythonCharacterManager.cpp:CPythonCharacterManager::OLD_GetPickedInstanceVID"
|
||||
]
|
||||
},
|
||||
"CPythonCharacterManager::OLD_GetPickedInstancePtr": {
|
||||
"status": "TODO"
|
||||
"status": "PORTED",
|
||||
"impl": [
|
||||
"extension/src/port/UserInterface/PythonCharacterManager.cpp:CPythonCharacterManager::OLD_GetPickedInstancePtr"
|
||||
]
|
||||
},
|
||||
"CPythonCharacterManager::OLD_GetPickedInstPosReference": {
|
||||
"status": "TODO"
|
||||
"status": "PORTED",
|
||||
"impl": [
|
||||
"extension/src/port/UserInterface/PythonCharacterManager.cpp:CPythonCharacterManager::OLD_GetPickedInstPosReference"
|
||||
]
|
||||
},
|
||||
"CPythonCharacterManager::IsRegisteredVID": {
|
||||
"status": "TODO"
|
||||
"status": "PORTED",
|
||||
"impl": [
|
||||
"extension/src/port/UserInterface/PythonCharacterManager.cpp:CPythonCharacterManager::IsRegisteredVID"
|
||||
]
|
||||
},
|
||||
"CPythonCharacterManager::IsAliveVID": {
|
||||
"status": "TODO"
|
||||
"status": "PORTED",
|
||||
"impl": [
|
||||
"extension/src/port/UserInterface/PythonCharacterManager.cpp:CPythonCharacterManager::IsAliveVID"
|
||||
]
|
||||
},
|
||||
"CPythonCharacterManager::IsDeadVID": {
|
||||
"status": "TODO"
|
||||
"status": "PORTED",
|
||||
"impl": [
|
||||
"extension/src/port/UserInterface/PythonCharacterManager.cpp:CPythonCharacterManager::IsDeadVID"
|
||||
]
|
||||
},
|
||||
"CPythonCharacterManager::__RenderSortedAliveActorList": {
|
||||
"status": "TODO"
|
||||
"status": "PORTED",
|
||||
"impl": [
|
||||
"extension/src/port/UserInterface/PythonCharacterManager.cpp:CPythonCharacterManager::__RenderSortedAliveActorList"
|
||||
]
|
||||
},
|
||||
"CPythonCharacterManager::__RenderSortedDeadActorList": {
|
||||
"status": "TODO"
|
||||
"status": "PORTED",
|
||||
"impl": [
|
||||
"extension/src/port/UserInterface/PythonCharacterManager.cpp:CPythonCharacterManager::__RenderSortedDeadActorList"
|
||||
]
|
||||
},
|
||||
"CPythonCharacterManager::Render": {
|
||||
"status": "TODO"
|
||||
"status": "PORTED",
|
||||
"impl": [
|
||||
"extension/src/port/UserInterface/PythonCharacterManager.cpp:CPythonCharacterManager::Render"
|
||||
]
|
||||
},
|
||||
"CPythonCharacterManager::RenderShadowMainInstance": {
|
||||
"status": "TODO"
|
||||
"status": "PORTED",
|
||||
"impl": [
|
||||
"extension/src/port/UserInterface/PythonCharacterManager.cpp:CPythonCharacterManager::RenderShadowMainInstance"
|
||||
]
|
||||
},
|
||||
"CPythonCharacterManager::RenderShadowAllInstances": {
|
||||
"status": "TODO"
|
||||
"status": "PORTED",
|
||||
"impl": [
|
||||
"extension/src/port/UserInterface/PythonCharacterManager.cpp:CPythonCharacterManager::RenderShadowAllInstances"
|
||||
]
|
||||
},
|
||||
"CPythonCharacterManager::RenderCollision": {
|
||||
"status": "TODO"
|
||||
"status": "PORTED",
|
||||
"impl": [
|
||||
"extension/src/port/UserInterface/PythonCharacterManager.cpp:CPythonCharacterManager::RenderCollision"
|
||||
]
|
||||
},
|
||||
"CPythonCharacterManager::CreateInstance": {
|
||||
"status": "TODO"
|
||||
"status": "PORTED",
|
||||
"impl": [
|
||||
"extension/src/port/UserInterface/PythonCharacterManager.cpp:CPythonCharacterManager::CreateInstance"
|
||||
],
|
||||
"note": "verbatim apart from one PORT fix: the ALREADY EXIST TraceError passed the whole SCreateData struct through varargs (MSVC tolerated it); it now passes c_rkCreateData.m_dwVID."
|
||||
},
|
||||
"CPythonCharacterManager::RegisterInstance": {
|
||||
"status": "TODO"
|
||||
"status": "PORTED",
|
||||
"impl": [
|
||||
"extension/src/port/UserInterface/PythonCharacterManager.cpp:CPythonCharacterManager::RegisterInstance"
|
||||
]
|
||||
},
|
||||
"CPythonCharacterManager::DeleteInstance": {
|
||||
"status": "TODO"
|
||||
"status": "PORTED",
|
||||
"impl": [
|
||||
"extension/src/port/UserInterface/PythonCharacterManager.cpp:CPythonCharacterManager::DeleteInstance"
|
||||
]
|
||||
},
|
||||
"CPythonCharacterManager::__DeleteBlendOutInstance": {
|
||||
"status": "TODO"
|
||||
"status": "PORTED",
|
||||
"impl": [
|
||||
"extension/src/port/UserInterface/PythonCharacterManager.cpp:CPythonCharacterManager::__DeleteBlendOutInstance"
|
||||
]
|
||||
},
|
||||
"CPythonCharacterManager::DeleteInstanceByFade": {
|
||||
"status": "TODO"
|
||||
"status": "PORTED",
|
||||
"impl": [
|
||||
"extension/src/port/UserInterface/PythonCharacterManager.cpp:CPythonCharacterManager::DeleteInstanceByFade"
|
||||
]
|
||||
},
|
||||
"CPythonCharacterManager::SelectInstance": {
|
||||
"status": "TODO"
|
||||
"status": "PORTED",
|
||||
"impl": [
|
||||
"extension/src/port/UserInterface/PythonCharacterManager.cpp:CPythonCharacterManager::SelectInstance"
|
||||
]
|
||||
},
|
||||
"CPythonCharacterManager::GetInstancePtr": {
|
||||
"status": "TODO"
|
||||
"status": "PORTED",
|
||||
"impl": [
|
||||
"extension/src/port/UserInterface/PythonCharacterManager.cpp:CPythonCharacterManager::GetInstancePtr"
|
||||
]
|
||||
},
|
||||
"CPythonCharacterManager::GetInstancePtrByName": {
|
||||
"status": "TODO"
|
||||
"status": "PORTED",
|
||||
"impl": [
|
||||
"extension/src/port/UserInterface/PythonCharacterManager.cpp:CPythonCharacterManager::GetInstancePtrByName"
|
||||
]
|
||||
},
|
||||
"CPythonCharacterManager::GetSelectedInstancePtr": {
|
||||
"status": "TODO"
|
||||
"status": "PORTED",
|
||||
"impl": [
|
||||
"extension/src/port/UserInterface/PythonCharacterManager.cpp:CPythonCharacterManager::GetSelectedInstancePtr"
|
||||
]
|
||||
},
|
||||
"CPythonCharacterManager::FindClickableInstancePtr": {
|
||||
"status": "TODO"
|
||||
"status": "PORTED",
|
||||
"impl": [
|
||||
"extension/src/port/UserInterface/PythonCharacterManager.cpp:CPythonCharacterManager::FindClickableInstancePtr"
|
||||
]
|
||||
},
|
||||
"CPythonCharacterManager::__UpdateSortPickedActorList": {
|
||||
"status": "TODO"
|
||||
"status": "PORTED",
|
||||
"impl": [
|
||||
"extension/src/port/UserInterface/PythonCharacterManager.cpp:CPythonCharacterManager::__UpdateSortPickedActorList"
|
||||
]
|
||||
},
|
||||
"CPythonCharacterManager::__UpdatePickedActorList": {
|
||||
"status": "TODO"
|
||||
"status": "PORTED",
|
||||
"impl": [
|
||||
"extension/src/port/UserInterface/PythonCharacterManager.cpp:CPythonCharacterManager::__UpdatePickedActorList"
|
||||
]
|
||||
},
|
||||
"CPythonCharacterManager::__SortPickedActorList": {
|
||||
"status": "TODO"
|
||||
"status": "PORTED",
|
||||
"impl": [
|
||||
"extension/src/port/UserInterface/PythonCharacterManager.cpp:CPythonCharacterManager::__SortPickedActorList"
|
||||
]
|
||||
},
|
||||
"CPythonCharacterManager::__NEW_Pick": {
|
||||
"status": "TODO"
|
||||
"status": "PORTED",
|
||||
"impl": [
|
||||
"extension/src/port/UserInterface/PythonCharacterManager.cpp:CPythonCharacterManager::__NEW_Pick"
|
||||
]
|
||||
},
|
||||
"CPythonCharacterManager::__OLD_Pick": {
|
||||
"status": "TODO"
|
||||
"status": "PORTED",
|
||||
"impl": [
|
||||
"extension/src/port/UserInterface/PythonCharacterManager.cpp:CPythonCharacterManager::__OLD_Pick"
|
||||
]
|
||||
},
|
||||
"CPythonCharacterManager::PickAll": {
|
||||
"status": "TODO"
|
||||
"status": "PORTED",
|
||||
"impl": [
|
||||
"extension/src/port/UserInterface/PythonCharacterManager.cpp:CPythonCharacterManager::PickAll"
|
||||
]
|
||||
},
|
||||
"CPythonCharacterManager::GetCloseInstance": {
|
||||
"status": "TODO"
|
||||
"status": "PORTED",
|
||||
"impl": [
|
||||
"extension/src/port/UserInterface/PythonCharacterManager.cpp:CPythonCharacterManager::GetCloseInstance"
|
||||
]
|
||||
},
|
||||
"CPythonCharacterManager::RefreshAllPCTextTail": {
|
||||
"status": "TODO"
|
||||
"status": "PORTED",
|
||||
"impl": [
|
||||
"extension/src/port/UserInterface/PythonCharacterManager.cpp:CPythonCharacterManager::RefreshAllPCTextTail"
|
||||
]
|
||||
},
|
||||
"CPythonCharacterManager::RefreshAllGuildMark": {
|
||||
"status": "TODO"
|
||||
"status": "PORTED",
|
||||
"impl": [
|
||||
"extension/src/port/UserInterface/PythonCharacterManager.cpp:CPythonCharacterManager::RefreshAllGuildMark"
|
||||
]
|
||||
},
|
||||
"CPythonCharacterManager::DeleteAllInstances": {
|
||||
"status": "TODO"
|
||||
"status": "PORTED",
|
||||
"impl": [
|
||||
"extension/src/port/UserInterface/PythonCharacterManager.cpp:CPythonCharacterManager::DeleteAllInstances"
|
||||
]
|
||||
},
|
||||
"CPythonCharacterManager::DestroyAliveInstanceMap": {
|
||||
"status": "TODO"
|
||||
"status": "PORTED",
|
||||
"impl": [
|
||||
"extension/src/port/UserInterface/PythonCharacterManager.cpp:CPythonCharacterManager::DestroyAliveInstanceMap"
|
||||
]
|
||||
},
|
||||
"CPythonCharacterManager::DestroyDeadInstanceList": {
|
||||
"status": "TODO"
|
||||
"status": "PORTED",
|
||||
"impl": [
|
||||
"extension/src/port/UserInterface/PythonCharacterManager.cpp:CPythonCharacterManager::DestroyDeadInstanceList"
|
||||
]
|
||||
},
|
||||
"CPythonCharacterManager::Destroy": {
|
||||
"status": "TODO"
|
||||
"status": "PORTED",
|
||||
"impl": [
|
||||
"extension/src/port/UserInterface/PythonCharacterManager.cpp:CPythonCharacterManager::Destroy"
|
||||
]
|
||||
},
|
||||
"CPythonCharacterManager::__Initialize": {
|
||||
"status": "TODO"
|
||||
"status": "PORTED",
|
||||
"impl": [
|
||||
"extension/src/port/UserInterface/PythonCharacterManager.cpp:CPythonCharacterManager::__Initialize"
|
||||
]
|
||||
},
|
||||
"CPythonCharacterManager::CPythonCharacterManager": {
|
||||
"status": "TODO"
|
||||
"status": "PORTED",
|
||||
"impl": [
|
||||
"extension/src/port/UserInterface/PythonCharacterManager.cpp:CPythonCharacterManager::CPythonCharacterManager"
|
||||
]
|
||||
},
|
||||
"CPythonCharacterManager::~CPythonCharacterManager": {
|
||||
"status": "TODO"
|
||||
"status": "PORTED",
|
||||
"impl": [
|
||||
"extension/src/port/UserInterface/PythonCharacterManager.cpp:CPythonCharacterManager::~CPythonCharacterManager"
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -431,6 +431,7 @@ extension/third_party/cpython-2.7.18/ # 静态库(2P 批次
|
||||
改变位置/朝向、发送与 40250 相同的移动封包,并在离线边界测试和真服 smoke 中通过。接通时删除对应 legacy 玩法逻辑。
|
||||
2V3-a(2026-09-23):`PythonPlayer`、`PythonPlayerInput`/`InputKeyboard`/`InputMouse`、`PythonPlayerEventHandler`、`PythonPlayerSkill`、`PythonPlayerModule`、`GameType` 原样移植(port-map 标 PORTED),`GameplayModules.cpp` 的 `player` 桩删除,`initPlayer()` 按 40250 顺序在 `initchrmgr()` 后调用;`pending/UserInterface/{PythonPlayer,GameType}.cpp` 替身删除,其余被调方(`CPythonSkill`、`CItemData`、`CItemManager`、`CPythonItem` 等)进 `pending`。64 位修正:`playerGetEmotionIconImage` 用 `Py_BuildPointer`,`PyDict_Next` 用 `Py_ssize_t`。根运动:Granny 运行时的 `GrannyUpdateModelMatrix` 原为直通,按 TrackGroups[0] 的 `AccumulationFlags`(AccumulationExtracted)/`LoopTranslation`(libgr2 新读出,战士 run = (0,-300,0),同 .msa `Accumulation`)按控制器本地时钟推进与权重累加位移(Delta × ModelMatrix);VDA 抽取未实现。`port.login_flow` 按 DIK_UP 经 `game.GameWindow` → `player.SetSingleDIKKeyState` 行走 >100 cm,假服解析 CG 包,收到 `CG_MOVE` FUNC_MOVE 后 FUNC_WAIT 且坐标变化;`port.login_live` 2026-09-23 对 192.168.21.203 走 132 cm 通过。(2V3-a 的待办见 2V3-b。)
|
||||
2V3-b(2026-09-23):鼠标点地移动。`CScreen::SetCursorPosition`(GrpScreen.cpp:487)与 `CPythonGraphic::SetCursorPosition` 原样实现,`RenderGame` 每帧用光标建拾取射线;`CPythonBackground::GetPickingPoint`/`GetPickingPointWithRay`/`GetPickingPointWithRayOnlyTerrain` 按 `CMapOutdoor::__PickTerrainHeight` 原样沿射线步进,地形高度取 native `CMapManager::GetHeight`(`PR_FLOAT_TO_INT` 的 x87 取整按 floor),物件拾取随 `CMapOutdoor` 移植再接。`CMapManager::isAttrOn` 按 `CMapOutdoor::isAttrOn`+`CTerrain::isAttrOn` 读包内 `<map>/<xxxyyy>/attr.atr`(阻挡/水/禁 PK),`CheckAdvancing` 及两个碰撞检查器原样(地图物件未注册到 `CCullingManager` 前不会阻挡)。以上在 pending/platform 层,port-map 标 ADAPTED。`port.login_flow` 在按键行走后左键点击角色下方地面:`game.GameWindow.OnMouseLeftButtonDown` → `player.SetMouseState` → 角色走到拾取点(离线 334 cm),假服收到 FUNC_MOVE … FUNC_WAIT;另断言角色所在格不阻挡、所在地形块有阻挡格(离线 17814 格)。`port.login_live` 2026-09-23 对 192.168.21.203 通过(按键 133 cm、点地 296 cm、11406 阻挡格),`python_game_render_test.sh` 离线通过。`client_main` 的 `MT_TEST_MODE=python_ui` 加上 `python_3d_surface.gd`,新路径可手动登录进游戏走动。待办:默认路由切到 `port`(当前 `client_main` 默认仍走 GDScript `AppFlow`)后整体删除 legacy;攻击/拾取物品等 P1 战斗交互属批次 2 之后。
|
||||
批次 2 P0 收尾(2026-09-24):`UserInterface/PythonCharacterManager.cpp`(54 函数)与 `InstanceBaseMovement.cpp`(32 函数)在 2V2-b 已原样拷入 `port/`,2V3 起即是运行路径(行走、点地移动、远程角色同步都经它们),本轮逐行比对 40250(仅 include 大小写、注释编码和两处 `// PORT:` 修正:`CreateInstance` 的 TraceError 传 `m_dwVID`,`NEW_SyncPixelPosition` 用 32 位 `LONG &`),确认 pending/platform 无重复定义后标 PORTED。P0 队列已清空;下一步按队列做 P1(`FlyingInstance`、`ActorInstanceData`、`FlyingObjectManager`、`FlyTrace`)。
|
||||
|
||||
每个切片都必须同时跑 legacy/port 双路回归;只有 2V3 稳定并把默认路由切到 `port` 后,才能删除总开关和剩余 legacy 宿主。
|
||||
|
||||
|
||||
Reference in New Issue
Block a user