port: P3-d PythonTextTail + textTail module (1:1 40250)

Copy PythonTextTail.cpp/PythonTextTailModule.cpp verbatim, drop the pending
stand-in and the textTail module stub, register initTextTail() after
initChat() and call CPythonTextTail::Initialize() in Create as 40250 does.
Implement CScreen::ProjectPosition/UnprojectPosition (were stubs) with
D3DXVec3Project/Unproject, and ApplicationStringTable_GetString(DWORD) over
UserInterface.rc's English string table. port.login_flow projects the ground
item's name tail in an ALT frame and picks it back by screen position.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
shenlei
2026-09-24 01:10:41 +09:00
co-authored by Claude Opus 5.5
parent 72b19b677d
commit 070a27b2cb
19 changed files with 1874 additions and 211 deletions
+24 -6
View File
@@ -298,19 +298,37 @@ auto CScreen::GetPickingPosition(float, float *, float *, float *) -> void
MT_PLATFORM_STUB();
}
auto CScreen::ProjectPosition(float, float, float, float *, float *) -> void
// 40250 GrpScreen.cpp:749-779.
void CScreen::ProjectPosition(float x, float y, float z, float * pfX, float * pfY)
{
MT_PLATFORM_STUB();
D3DXVECTOR3 Input(x, y, z);
D3DXVECTOR3 Output;
D3DXVec3Project(&Output, &Input, &ms_Viewport, &ms_matProj, &ms_matView, &ms_matWorld);
*pfX = Output.x;
*pfY = Output.y;
}
auto CScreen::ProjectPosition(float, float, float, float *, float *, float *) -> void
void CScreen::ProjectPosition(float x, float y, float z, float * pfX, float * pfY, float * pfZ)
{
MT_PLATFORM_STUB();
D3DXVECTOR3 Input(x, y, z);
D3DXVECTOR3 Output;
D3DXVec3Project(&Output, &Input, &ms_Viewport, &ms_matProj, &ms_matView, &ms_matWorld);
*pfX = Output.x;
*pfY = Output.y;
*pfZ = Output.z;
}
auto CScreen::UnprojectPosition(float, float, float, float *, float *, float *) -> void
void CScreen::UnprojectPosition(float x, float y, float z, float * pfX, float * pfY, float * pfZ)
{
MT_PLATFORM_STUB();
D3DXVECTOR3 Input(x, y, z);
D3DXVECTOR3 Output;
D3DXVec3Unproject(&Output, &Input, &ms_Viewport, &ms_matProj, &ms_matView, &ms_matWorld);
*pfX = Output.x;
*pfY = Output.y;
*pfZ = Output.z;
}
auto CScreen::IsLostDevice() -> BOOL