diff --git a/engine/MUNGA_L4/L4GLASSWIN.cpp b/engine/MUNGA_L4/L4GLASSWIN.cpp index 6c1e816..d3adff6 100644 --- a/engine/MUNGA_L4/L4GLASSWIN.cpp +++ b/engine/MUNGA_L4/L4GLASSWIN.cpp @@ -809,6 +809,32 @@ static void SelectObject(dc, oldBrush); SelectObject(dc, oldPen); DeleteObject(pen); + + // FLASHING lamps re-draw ON TOP of the surface (#118): the alarm + // invites (gotoEngineering / engEject, RIO flash bits state&3) were + // invisible under the imagery -- only the few protruding edge pixels + // blinked, and the operator "never saw it flash". The pod's keys + // were physical backlit buttons BESIDE the screen; when one carries + // a FLASH state, give it its full face back so the invite reads. + for (int i = 0; i < w->buttonCount; ++i) + { + const GButton &b = w->buttons[i]; + int state = PadRIO::GetLampState(b.address); + if ((state & 3) == 0) + continue; // not flashing + int shade = LampBrightnessOf(state, tick); + COLORREF bright = (b.color == ClrYellow) ? RGB(245, 210, 60) + : (b.color == ClrBlue) ? RGB(205, 228, 255) + : RGB(230, 70, 70); + COLORREF dim = (b.color == ClrYellow) ? RGB(70, 60, 24) + : (b.color == ClrBlue) ? RGB(70, 86, 120) + : RGB(64, 40, 40); + HBRUSH face = CreateSolidBrush((shade >= 2) ? bright : dim); + RECT r = b.rect; + FillRect(dc, &r, face); + DeleteObject(face); + FrameRect(dc, &r, (HBRUSH)GetStockObject(WHITE_BRUSH)); + } } BitBlt(winDC, 0, 0, client.right - client.left, client.bottom - client.top,