CScreen::SetCursorPosition and CPythonGraphic::SetCursorPosition are the 40250 bodies, so RenderGame builds the pick ray under the cursor each frame. CPythonBackground::GetPickingPoint* march that ray as CMapOutdoor::__PickTerrainHeight does, against the native CMapManager height (PR_FLOAT_TO_INT's x87 rounding becomes floor); object picking waits for CMapOutdoor. CMapManager::isAttrOn reads the packed <map>/<xxxyyy>/attr.atr as CMapOutdoor::isAttrOn + CTerrain::isAttrOn do, and CheckAdvancing with its collision checkers is verbatim (no map objects are registered yet). All of this stays in the pending/platform layer and is marked ADAPTED. port.login_flow clicks the ground below the actor after the key walk. The actor walks to the picked point (334 cm offline), and the fake server sees FUNC_MOVE, then FUNC_WAIT. It also checks that the actor's cell is free and that its terrain block has blocked cells. port.login_live against the real server passed (key 133 cm, click 296 cm), and python_game_render_test.sh passes offline. MT_TEST_MODE=python_ui now adds the 3D surface, so the port route can be played by hand. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
248 lines
8.5 KiB
JSON
248 lines
8.5 KiB
JSON
{
|
|
"reference": "UserInterface/PythonBackground.cpp",
|
|
"reference_sha256": "810ed94a182af71973ce3fa41f77173506db71f5c6bb1f3c6b56879bfcea4f0e",
|
|
"priority": "P4",
|
|
"contracts": [],
|
|
"functions": {
|
|
"CPythonBackground::GetRenderShadowTime": {
|
|
"status": "TODO"
|
|
},
|
|
"CPythonBackground::SetVisiblePart": {
|
|
"status": "TODO"
|
|
},
|
|
"CPythonBackground::EnableTerrainOnlyForHeight": {
|
|
"status": "TODO"
|
|
},
|
|
"CPythonBackground::SetSplatLimit": {
|
|
"status": "TODO"
|
|
},
|
|
"CPythonBackground::CreateCharacterShadowTexture": {
|
|
"status": "TODO"
|
|
},
|
|
"CPythonBackground::ReleaseCharacterShadowTexture": {
|
|
"status": "TODO"
|
|
},
|
|
"CPythonBackground::RefreshShadowLevel": {
|
|
"status": "TODO"
|
|
},
|
|
"CPythonBackground::SetShadowLevel": {
|
|
"status": "TODO"
|
|
},
|
|
"CPythonBackground::SelectViewDistanceNum": {
|
|
"status": "TODO"
|
|
},
|
|
"CPythonBackground::SetViewDistanceSet": {
|
|
"status": "TODO"
|
|
},
|
|
"CPythonBackground::GetFarClip": {
|
|
"status": "TODO"
|
|
},
|
|
"CPythonBackground::GetDistanceSetInfo": {
|
|
"status": "TODO"
|
|
},
|
|
"CPythonBackground::CPythonBackground": {
|
|
"status": "TODO"
|
|
},
|
|
"CPythonBackground::~CPythonBackground": {
|
|
"status": "TODO"
|
|
},
|
|
"CPythonBackground::Initialize": {
|
|
"status": "ADAPTED",
|
|
"impl": [
|
|
"extension/src/platform/pending/UserInterface/PythonBackground.cpp:CPythonBackground::Initialize"
|
|
],
|
|
"note": "40250 locale AtlasInfo setup, backed by transitional MapManager loader.",
|
|
"test": "project/python_game_render_test.gd"
|
|
},
|
|
"CPythonBackground::__CreateProperty": {
|
|
"status": "TODO"
|
|
},
|
|
"CPythonBackground::GetPickingPoint": {
|
|
"status": "ADAPTED",
|
|
"impl": [
|
|
"extension/src/platform/pending/UserInterface/PythonBackground.cpp:CPythonBackground::GetPickingPoint"
|
|
],
|
|
"test": "extension/tests/port_login_flow_test.cpp",
|
|
"note": "40250 body over the cursor ray; CMapOutdoor::GetPickingPoint forwarded to GetPickingPointWithRay."
|
|
},
|
|
"CPythonBackground::GetPickingPointWithRay": {
|
|
"status": "ADAPTED",
|
|
"impl": [
|
|
"extension/src/platform/pending/UserInterface/PythonBackground.cpp:CPythonBackground::GetPickingPointWithRay"
|
|
],
|
|
"test": "extension/tests/port_login_flow_test.cpp",
|
|
"note": "Terrain half only: CMapOutdoor object pick (FGetPickingPoint over area objects) needs the unported CMapOutdoor."
|
|
},
|
|
"CPythonBackground::GetPickingPointWithRayOnlyTerrain": {
|
|
"status": "ADAPTED",
|
|
"impl": [
|
|
"extension/src/platform/pending/UserInterface/PythonBackground.cpp:CPythonBackground::GetPickingPointWithRayOnlyTerrain"
|
|
],
|
|
"test": "extension/tests/port_login_flow_test.cpp",
|
|
"note": "CMapOutdoor::GetPickingPointWithRayOnlyTerrain/__PickTerrainHeight verbatim over the native CMapManager height; PR_FLOAT_TO_INT as floor."
|
|
},
|
|
"CPythonBackground::GetLightDirection": {
|
|
"status": "TODO"
|
|
},
|
|
"CPythonBackground::Destroy": {
|
|
"status": "ADAPTED",
|
|
"impl": [
|
|
"extension/src/platform/pending/UserInterface/PythonBackground.cpp:CPythonBackground::Destroy"
|
|
],
|
|
"note": "Native map state cleanup; SnowEnvironment destruction remains TODO.",
|
|
"test": "project/python_game_render_test.gd"
|
|
},
|
|
"CPythonBackground::Create": {
|
|
"status": "ADAPTED",
|
|
"impl": [
|
|
"extension/src/platform/pending/UserInterface/PythonBackground.cpp:CPythonBackground::Create"
|
|
],
|
|
"note": "Calls transition MapManager::Create; property and snow initialization remain TODO.",
|
|
"test": "project/python_game_render_test.gd"
|
|
},
|
|
"CPythonBackground::Update": {
|
|
"status": "TODO"
|
|
},
|
|
"CPythonBackground::__IsSame": {
|
|
"status": "TODO"
|
|
},
|
|
"CPythonBackground::Render": {
|
|
"status": "TODO"
|
|
},
|
|
"CPythonBackground::RenderSnow": {
|
|
"status": "TODO"
|
|
},
|
|
"CPythonBackground::RenderPCBlocker": {
|
|
"status": "TODO"
|
|
},
|
|
"CPythonBackground::RenderCollision": {
|
|
"status": "TODO"
|
|
},
|
|
"CPythonBackground::RenderCharacterShadowToTexture": {
|
|
"status": "TODO"
|
|
},
|
|
"Interpolate": {
|
|
"status": "TODO"
|
|
},
|
|
"CPythonBackground::CheckAdvancing": {
|
|
"status": "ADAPTED",
|
|
"impl": [
|
|
"extension/src/platform/pending/UserInterface/PythonBackground.cpp:CPythonBackground::CheckAdvancing"
|
|
],
|
|
"test": "extension/tests/port_login_flow_test.cpp",
|
|
"note": "40250 body and collision checkers verbatim, kept in the pending unit; no map objects are registered with CCullingManager until CMapOutdoor is ported."
|
|
},
|
|
"CPythonBackground::RenderSky": {
|
|
"status": "TODO"
|
|
},
|
|
"CPythonBackground::RenderCloud": {
|
|
"status": "TODO"
|
|
},
|
|
"CPythonBackground::RenderWater": {
|
|
"status": "TODO"
|
|
},
|
|
"CPythonBackground::RenderEffect": {
|
|
"status": "TODO"
|
|
},
|
|
"CPythonBackground::RenderBeforeLensFlare": {
|
|
"status": "TODO"
|
|
},
|
|
"CPythonBackground::RenderAfterLensFlare": {
|
|
"status": "TODO"
|
|
},
|
|
"CPythonBackground::ClearGuildArea": {
|
|
"status": "TODO"
|
|
},
|
|
"CPythonBackground::RegisterGuildArea": {
|
|
"status": "TODO"
|
|
},
|
|
"CPythonBackground::SetCharacterDirLight": {
|
|
"status": "ADAPTED",
|
|
"impl": [
|
|
"extension/src/platform/pending/UserInterface/PythonBackground.cpp:CPythonBackground::SetCharacterDirLight"
|
|
],
|
|
"note": "Statement-equivalent 40250 function, kept in pending translation unit until the whole unit is ported; reachable RenderGame draws carry native light0.",
|
|
"test": "project/python_game_render_test.gd"
|
|
},
|
|
"CPythonBackground::SetBackgroundDirLight": {
|
|
"status": "ADAPTED",
|
|
"impl": [
|
|
"extension/src/platform/pending/UserInterface/PythonBackground.cpp:CPythonBackground::SetBackgroundDirLight"
|
|
],
|
|
"note": "Statement-equivalent 40250 light setter, still in transitional pending translation unit.",
|
|
"test": "project/python_game_render_test.gd"
|
|
},
|
|
"CPythonBackground::GlobalPositionToLocalPosition": {
|
|
"status": "ADAPTED",
|
|
"impl": [
|
|
"extension/src/platform/pending/UserInterface/PythonBackground.cpp:CPythonBackground::GlobalPositionToLocalPosition"
|
|
],
|
|
"note": "40250 base subtraction, kept in transitional pending translation unit.",
|
|
"test": "project/python_game_render_test.gd"
|
|
},
|
|
"CPythonBackground::LocalPositionToGlobalPosition": {
|
|
"status": "ADAPTED",
|
|
"impl": [
|
|
"extension/src/platform/pending/UserInterface/PythonBackground.cpp:CPythonBackground::LocalPositionToGlobalPosition"
|
|
],
|
|
"note": "40250 base addition, kept in transitional pending translation unit.",
|
|
"test": "project/python_game_render_test.gd"
|
|
},
|
|
"CPythonBackground::RegisterDungeonMapName": {
|
|
"status": "TODO"
|
|
},
|
|
"CPythonBackground::GlobalPositionToMapInfo": {
|
|
"status": "TODO"
|
|
},
|
|
"CPythonBackground::Warp": {
|
|
"status": "ADAPTED",
|
|
"impl": [
|
|
"extension/src/platform/pending/UserInterface/PythonBackground.cpp:CPythonBackground::Warp"
|
|
],
|
|
"note": "Native AtlasInfo map selection and local coordinates reach pack-backed map; minimap, dungeon portals, target effects and full CMapOutdoor lifecycle remain TODO.",
|
|
"test": "project/python_game_render_test.gd"
|
|
},
|
|
"CPythonBackground::VisibleGuildArea": {
|
|
"status": "TODO"
|
|
},
|
|
"CPythonBackground::DisableGuildArea": {
|
|
"status": "TODO"
|
|
},
|
|
"CPythonBackground::GetWarpMapName": {
|
|
"status": "ADAPTED",
|
|
"impl": [
|
|
"extension/src/platform/pending/UserInterface/PythonBackground.cpp:CPythonBackground::GetWarpMapName"
|
|
],
|
|
"note": "Returns current native Warp map name; still in pending translation unit.",
|
|
"test": "project/python_game_render_test.gd"
|
|
},
|
|
"CPythonBackground::ChangeToDay": {
|
|
"status": "TODO"
|
|
},
|
|
"CPythonBackground::ChangeToNight": {
|
|
"status": "TODO"
|
|
},
|
|
"CPythonBackground::EnableSnowEnvironment": {
|
|
"status": "TODO"
|
|
},
|
|
"CPythonBackground::DisableSnowEnvironment": {
|
|
"status": "TODO"
|
|
},
|
|
"CPythonBackground::SetXMaxTree": {
|
|
"status": "TODO"
|
|
},
|
|
"CPythonBackground::CreateTargetEffect": {
|
|
"status": "TODO"
|
|
},
|
|
"CPythonBackground::DeleteTargetEffect": {
|
|
"status": "TODO"
|
|
},
|
|
"CPythonBackground::CreateSpecialEffect": {
|
|
"status": "TODO"
|
|
},
|
|
"CPythonBackground::DeleteSpecialEffect": {
|
|
"status": "TODO"
|
|
}
|
|
}
|
|
}
|