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>
86 lines
2.1 KiB
JSON
86 lines
2.1 KiB
JSON
{
|
|
"reference": "EterPythonLib/PythonGraphic.cpp",
|
|
"reference_sha256": "82fc01bd616637f92fcbc17e1eb2c7dd8ab78615695dc2aaabe9e5bf2f204632",
|
|
"priority": "P4",
|
|
"contracts": [],
|
|
"functions": {
|
|
"CPythonGraphic::Destroy": {
|
|
"status": "TODO"
|
|
},
|
|
"CPythonGraphic::GetD3D": {
|
|
"status": "TODO"
|
|
},
|
|
"CPythonGraphic::GetOrthoDepth": {
|
|
"status": "TODO"
|
|
},
|
|
"CPythonGraphic::SetInterfaceRenderState": {
|
|
"status": "TODO"
|
|
},
|
|
"CPythonGraphic::SetGameRenderState": {
|
|
"status": "TODO"
|
|
},
|
|
"CPythonGraphic::SetCursorPosition": {
|
|
"status": "ADAPTED",
|
|
"impl": [
|
|
"extension/src/platform/EterPythonLib/PythonGraphic.cpp:CPythonGraphic::SetCursorPosition"
|
|
],
|
|
"test": "extension/tests/port_login_flow_test.cpp",
|
|
"note": "40250 body verbatim in the platform layer (pick ray through the cursor)."
|
|
},
|
|
"CPythonGraphic::SetOmniLight": {
|
|
"status": "TODO"
|
|
},
|
|
"CPythonGraphic::SetViewport": {
|
|
"status": "TODO"
|
|
},
|
|
"CPythonGraphic::RestoreViewport": {
|
|
"status": "TODO"
|
|
},
|
|
"CPythonGraphic::SetGamma": {
|
|
"status": "TODO"
|
|
},
|
|
"GenScreenShotTag": {
|
|
"status": "TODO"
|
|
},
|
|
"CPythonGraphic::SaveJPEG": {
|
|
"status": "TODO"
|
|
},
|
|
"CPythonGraphic::SaveScreenShot": {
|
|
"status": "TODO"
|
|
},
|
|
"CPythonGraphic::PushState": {
|
|
"status": "TODO"
|
|
},
|
|
"CPythonGraphic::PopState": {
|
|
"status": "TODO"
|
|
},
|
|
"CPythonGraphic::RenderImage": {
|
|
"status": "TODO"
|
|
},
|
|
"CPythonGraphic::RenderAlphaImage": {
|
|
"status": "TODO"
|
|
},
|
|
"CPythonGraphic::RenderCoolTimeBox": {
|
|
"status": "TODO"
|
|
},
|
|
"CPythonGraphic::GenerateColor": {
|
|
"status": "TODO"
|
|
},
|
|
"CPythonGraphic::RenderDownButton": {
|
|
"status": "TODO"
|
|
},
|
|
"CPythonGraphic::RenderUpButton": {
|
|
"status": "TODO"
|
|
},
|
|
"CPythonGraphic::GetAvailableMemory": {
|
|
"status": "TODO"
|
|
},
|
|
"CPythonGraphic::CPythonGraphic": {
|
|
"status": "TODO"
|
|
},
|
|
"CPythonGraphic::~CPythonGraphic": {
|
|
"status": "TODO"
|
|
}
|
|
}
|
|
}
|