port 2V2-d.1: ActorInstance/InstanceBase closure creates the main character

Port the ActorInstance*/InstanceBase* siblings plus GameUtil, FlyTarget,
PhysicsObject, GameEventManager, WeaponTrace, MapUtil and lineintersect_utils
verbatim and drop their pending stand-ins; CGameEventManager and CPythonSystem
join PythonBoot in CPythonApplication member order.

Root cause of the intermittent Loading-phase header 7: TPlayerSkill::tNextRead
is time_t, 32-bit in 40250 (_USE_32BIT_TIME_T) but 64-bit on LP64, so
SKILL_LEVEL (76) was read as 2551 bytes instead of 1531. Packet.h now uses
LONG with a static_assert, and the fake server sends SKILL_LEVEL in Loading.

The fake server's CHARACTER_ADD now uses CHAR_TYPE_PC; port.login_flow
asserts the main instance exists with race 0.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
shenlei
2026-09-23 19:02:21 +09:00
co-authored by Claude Opus 5.5
parent 996d793f0c
commit 5266b00c6e
71 changed files with 13832 additions and 1405 deletions
@@ -0,0 +1,98 @@
{
"reference": "GameLib/ActorInstancePosition.cpp",
"reference_sha256": "92f6bdde00edc8507a40fbb5909468f270c5345847409ee0379d7b882a506608",
"priority": "P0",
"contracts": [],
"functions": {
"CActorInstance::NEW_GetLastPixelPositionRef": {
"status": "PORTED",
"impl": [
"extension/src/port/GameLib/ActorInstancePosition.cpp:CActorInstance::NEW_GetLastPixelPositionRef"
]
},
"CActorInstance::GetPositionVectorRef": {
"status": "PORTED",
"impl": [
"extension/src/port/GameLib/ActorInstancePosition.cpp:CActorInstance::GetPositionVectorRef"
]
},
"CActorInstance::GetMovementVectorRef": {
"status": "PORTED",
"impl": [
"extension/src/port/GameLib/ActorInstancePosition.cpp:CActorInstance::GetMovementVectorRef"
]
},
"CActorInstance::NEW_SetAtkPixelPosition": {
"status": "PORTED",
"impl": [
"extension/src/port/GameLib/ActorInstancePosition.cpp:CActorInstance::NEW_SetAtkPixelPosition"
]
},
"CActorInstance::SetCurPixelPosition": {
"status": "PORTED",
"impl": [
"extension/src/port/GameLib/ActorInstancePosition.cpp:CActorInstance::SetCurPixelPosition"
]
},
"CActorInstance::NEW_SetSrcPixelPosition": {
"status": "PORTED",
"impl": [
"extension/src/port/GameLib/ActorInstancePosition.cpp:CActorInstance::NEW_SetSrcPixelPosition"
]
},
"CActorInstance::NEW_SetDstPixelPositionZ": {
"status": "PORTED",
"impl": [
"extension/src/port/GameLib/ActorInstancePosition.cpp:CActorInstance::NEW_SetDstPixelPositionZ"
]
},
"CActorInstance::NEW_SetDstPixelPosition": {
"status": "PORTED",
"impl": [
"extension/src/port/GameLib/ActorInstancePosition.cpp:CActorInstance::NEW_SetDstPixelPosition"
]
},
"CActorInstance::NEW_GetAtkPixelPositionRef": {
"status": "PORTED",
"impl": [
"extension/src/port/GameLib/ActorInstancePosition.cpp:CActorInstance::NEW_GetAtkPixelPositionRef"
]
},
"CActorInstance::NEW_GetSrcPixelPositionRef": {
"status": "PORTED",
"impl": [
"extension/src/port/GameLib/ActorInstancePosition.cpp:CActorInstance::NEW_GetSrcPixelPositionRef"
]
},
"CActorInstance::NEW_GetDstPixelPositionRef": {
"status": "PORTED",
"impl": [
"extension/src/port/GameLib/ActorInstancePosition.cpp:CActorInstance::NEW_GetDstPixelPositionRef"
]
},
"CActorInstance::NEW_GetCurPixelPositionRef": {
"status": "PORTED",
"impl": [
"extension/src/port/GameLib/ActorInstancePosition.cpp:CActorInstance::NEW_GetCurPixelPositionRef"
]
},
"CActorInstance::GetPixelPosition": {
"status": "PORTED",
"impl": [
"extension/src/port/GameLib/ActorInstancePosition.cpp:CActorInstance::GetPixelPosition"
]
},
"CActorInstance::SetPixelPosition": {
"status": "PORTED",
"impl": [
"extension/src/port/GameLib/ActorInstancePosition.cpp:CActorInstance::SetPixelPosition"
]
},
"CActorInstance::__InitializePositionData": {
"status": "PORTED",
"impl": [
"extension/src/port/GameLib/ActorInstancePosition.cpp:CActorInstance::__InitializePositionData"
]
}
}
}