Allow customization of pause screen.

This commit is contained in:
Marisa Kirisame 2021-10-16 10:29:45 +02:00 committed by Christoph Oelckers
parent d5ad8b28ec
commit 95b8629fe0
2 changed files with 26 additions and 11 deletions

View File

@ -1025,6 +1025,18 @@ void D_Display ()
// draw pause pic
if ((paused || pauseext) && menuactive == MENU_Off)
{
// [MK] optionally let the status bar handle this
bool skip = false;
IFVIRTUALPTR(StatusBar, DBaseStatusBar, DrawPaused)
{
VMValue params[] { (DObject*)StatusBar, paused-1 };
int rv;
VMReturn ret(&rv);
VMCall(func, params, countof(params), &ret, 1);
skip = !!rv;
}
if ( !skip )
{
auto tex = TexMan.GetGameTextureByName(gameinfo.PauseSign, true);
double x = (SCREENWIDTH - tex->GetDisplayWidth() * CleanXfac)/2 +
@ -1040,6 +1052,7 @@ void D_Display ()
(tex->GetDisplayHeight() * CleanYfac) + 4, pstring, DTA_CleanNoMove, true, TAG_DONE);
}
}
}
// [RH] Draw icon, if any
if (D_DrawIcon)

View File

@ -235,6 +235,8 @@ class BaseStatusBar : StatusBarCore native
virtual bool ProcessMidPrint(Font fnt, String msg, bool bold) { return false; }
// [MK] let the HUD handle drawing the chat prompt
virtual bool DrawChat(String txt) { return false; }
// [MK] let the HUD handle drawing the pause graphics
virtual bool DrawPaused(int player) { return false; }
native TextureID GetMugshot(int accuracy, int stateflags=MugShot.STANDARD, String default_face = "STF");
native int GetTopOfStatusBar();