2V3-b: click on the ground to walk; read the terrain attribute map
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>
This commit is contained in:
co-authored by
Claude Opus 5.5
parent
ff0983d3c8
commit
8b4700f008
@@ -0,0 +1,151 @@
|
||||
{
|
||||
"reference": "EterLib/GrpScreen.cpp",
|
||||
"reference_sha256": "3efb287b5acc846f557ade7b828fa76026699a393407d1f0151f5fd5e1dcbebc",
|
||||
"priority": "P4",
|
||||
"contracts": [],
|
||||
"functions": {
|
||||
"CScreen::RenderLine3d": {
|
||||
"status": "TODO"
|
||||
},
|
||||
"CScreen::RenderBox3d": {
|
||||
"status": "TODO"
|
||||
},
|
||||
"CScreen::RenderBar3d": {
|
||||
"status": "TODO"
|
||||
},
|
||||
"CScreen::RenderGradationBar3d": {
|
||||
"status": "TODO"
|
||||
},
|
||||
"CScreen::RenderLineCube": {
|
||||
"status": "TODO"
|
||||
},
|
||||
"CScreen::RenderCube": {
|
||||
"status": "TODO"
|
||||
},
|
||||
"CScreen::RenderLine2d": {
|
||||
"status": "TODO"
|
||||
},
|
||||
"CScreen::RenderBox2d": {
|
||||
"status": "TODO"
|
||||
},
|
||||
"CScreen::RenderBar2d": {
|
||||
"status": "TODO"
|
||||
},
|
||||
"CScreen::RenderGradationBar2d": {
|
||||
"status": "TODO"
|
||||
},
|
||||
"CScreen::RenderCircle2d": {
|
||||
"status": "TODO"
|
||||
},
|
||||
"CScreen::RenderCircle3d": {
|
||||
"status": "TODO"
|
||||
},
|
||||
"CScreen::RenderD3DXMesh": {
|
||||
"status": "TODO"
|
||||
},
|
||||
"CScreen::RenderSphere": {
|
||||
"status": "TODO"
|
||||
},
|
||||
"CScreen::RenderCylinder": {
|
||||
"status": "TODO"
|
||||
},
|
||||
"CScreen::RenderTextureBox": {
|
||||
"status": "TODO"
|
||||
},
|
||||
"CScreen::RenderBillboard": {
|
||||
"status": "TODO"
|
||||
},
|
||||
"CScreen::DrawMinorGrid": {
|
||||
"status": "TODO"
|
||||
},
|
||||
"CScreen::DrawGrid": {
|
||||
"status": "TODO"
|
||||
},
|
||||
"CScreen::SetCursorPosition": {
|
||||
"status": "ADAPTED",
|
||||
"impl": [
|
||||
"extension/src/platform/EterLib/GrpScreen.cpp:CScreen::SetCursorPosition"
|
||||
],
|
||||
"test": "extension/tests/port_login_flow_test.cpp",
|
||||
"note": "40250 body verbatim in the platform layer (pick ray through the cursor)."
|
||||
},
|
||||
"CScreen::GetCursorPosition": {
|
||||
"status": "TODO"
|
||||
},
|
||||
"CScreen::GetCursorXYPosition": {
|
||||
"status": "TODO"
|
||||
},
|
||||
"CScreen::GetCursorZPosition": {
|
||||
"status": "TODO"
|
||||
},
|
||||
"CScreen::GetPickingPosition": {
|
||||
"status": "TODO"
|
||||
},
|
||||
"CScreen::SetDiffuseColor": {
|
||||
"status": "TODO"
|
||||
},
|
||||
"CScreen::SetClearColor": {
|
||||
"status": "TODO"
|
||||
},
|
||||
"CScreen::SetClearDepth": {
|
||||
"status": "TODO"
|
||||
},
|
||||
"CScreen::SetClearStencil": {
|
||||
"status": "TODO"
|
||||
},
|
||||
"CScreen::ClearDepthBuffer": {
|
||||
"status": "TODO"
|
||||
},
|
||||
"CScreen::Clear": {
|
||||
"status": "TODO"
|
||||
},
|
||||
"CScreen::IsLostDevice": {
|
||||
"status": "TODO"
|
||||
},
|
||||
"CScreen::RestoreDevice": {
|
||||
"status": "TODO"
|
||||
},
|
||||
"CScreen::Begin": {
|
||||
"status": "TODO"
|
||||
},
|
||||
"CScreen::End": {
|
||||
"status": "TODO"
|
||||
},
|
||||
"CScreen::Show": {
|
||||
"status": "TODO"
|
||||
},
|
||||
"CScreen::ProjectPosition": {
|
||||
"status": "TODO"
|
||||
},
|
||||
"CScreen::UnprojectPosition": {
|
||||
"status": "TODO"
|
||||
},
|
||||
"CScreen::SetColorOperation": {
|
||||
"status": "TODO"
|
||||
},
|
||||
"CScreen::SetDiffuseOperation": {
|
||||
"status": "TODO"
|
||||
},
|
||||
"CScreen::SetBlendOperation": {
|
||||
"status": "TODO"
|
||||
},
|
||||
"CScreen::SetOneColorOperation": {
|
||||
"status": "TODO"
|
||||
},
|
||||
"CScreen::SetAddColorOperation": {
|
||||
"status": "TODO"
|
||||
},
|
||||
"CScreen::Identity": {
|
||||
"status": "TODO"
|
||||
},
|
||||
"CScreen::CScreen": {
|
||||
"status": "TODO"
|
||||
},
|
||||
"CScreen::~CScreen": {
|
||||
"status": "TODO"
|
||||
},
|
||||
"CScreen::BuildViewFrustum": {
|
||||
"status": "TODO"
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user