Default layout now emulates the pod interior

[ MFD UL ] [ MFD UC ] [ MFD UR ]
  [ plasma (reduced) ][ main screen (centered) ]
  [ MFD LL ] [   Map  ] [ MFD LR ]

SVGA16 moves the main game window into the middle band (centered under
the MFD columns) and shrinks the plasma glass to fill the space at its
left via a new PlasmaScreen::Position hook (the glass paint stretches to
the client area, so resizing rescales it). Lower row sits below the
main screen band.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
Cyd
2026-07-12 14:40:32 -05:00
co-authored by Claude Fable 5
parent d0553648eb
commit 775ee130a7
3 changed files with 90 additions and 13 deletions
+32
View File
@@ -61,6 +61,33 @@ namespace
//############################ PlasmaScreen ##############################
//########################################################################
PlasmaScreen *PlasmaScreen::activeInstance = NULL;
void
PlasmaScreen::Position(int x, int y, int client_width, int client_height)
{
if (activeInstance == NULL || activeInstance->window == NULL)
{
return;
}
DWORD style = WS_OVERLAPPED | WS_CAPTION | WS_SYSMENU | WS_MINIMIZEBOX;
RECT bounds;
bounds.left = 0;
bounds.top = 0;
bounds.right = client_width;
bounds.bottom = client_height;
AdjustWindowRect(&bounds, style, FALSE);
SetWindowPos(
(HWND) activeInstance->window, NULL,
x, y,
bounds.right - bounds.left,
bounds.bottom - bounds.top,
SWP_NOZORDER | SWP_NOACTIVATE
);
}
PlasmaScreen::PlasmaScreen():
Video8BitBuffered(plasmaWidth, plasmaHeight)
{
@@ -119,6 +146,10 @@ PlasmaScreen::~PlasmaScreen()
{
Check_Pointer(this);
if (activeInstance == this)
{
activeInstance = NULL;
}
if (window != NULL)
{
RemovePropA((HWND) window, "PlasmaBitmapInfo");
@@ -219,6 +250,7 @@ void
SetPropA((HWND) window, "PlasmaBitmapInfo", bitmapInfo);
SetPropA((HWND) window, "PlasmaPixels", pixelBuffer->Data.MapPointer);
ShowWindow((HWND) window, SW_SHOWNOACTIVATE);
activeInstance = this;
}
else
{