diff --git a/src/d_main.cpp b/src/d_main.cpp index afda957af..2670dcf4e 100644 --- a/src/d_main.cpp +++ b/src/d_main.cpp @@ -803,9 +803,10 @@ void D_Display () if (hud_althud && viewheight == SCREENHEIGHT && screenblocks > 10) { - StatusBar->DrawBottomStuff (HUD_None); + StatusBar->DrawBottomStuff (HUD_AltHud); if (DrawFSHUD || automapactive) DrawHUD(); - StatusBar->DrawTopStuff (HUD_None); + StatusBar->Draw (HUD_AltHud); + StatusBar->DrawTopStuff (HUD_AltHud); } else if (viewheight == SCREENHEIGHT && viewactive && screenblocks > 10) diff --git a/src/g_shared/sbar.h b/src/g_shared/sbar.h index d45f88cdf..fcba22fa9 100644 --- a/src/g_shared/sbar.h +++ b/src/g_shared/sbar.h @@ -48,7 +48,9 @@ enum EHudState { HUD_StatusBar, HUD_Fullscreen, - HUD_None + HUD_None, + + HUD_AltHud // Used for passing through popups to the alt hud }; class AWeapon; diff --git a/src/g_shared/sbarinfo.cpp b/src/g_shared/sbarinfo.cpp index 7e0667062..6530c6adf 100644 --- a/src/g_shared/sbarinfo.cpp +++ b/src/g_shared/sbarinfo.cpp @@ -1040,37 +1040,41 @@ public: //prepare ammo counts GetCurrentAmmo(ammo1, ammo2, ammocount1, ammocount2); armor = CPlayer->mo->FindInventory(); - if(hud != lastHud) - { - script->huds[hud]->Tick(NULL, this, true); - // Restore scaling if need be. - if(scalingWasForced) + if(state != HUD_AltHud) + { + if(hud != lastHud) { - scalingWasForced = false; - SetScaled(false); - setsizeneeded = true; + script->huds[hud]->Tick(NULL, this, true); + + // Restore scaling if need be. + if(scalingWasForced) + { + scalingWasForced = false; + SetScaled(false); + setsizeneeded = true; + } } - } - if(currentPopup != POP_None && !script->huds[hud]->FullScreenOffsets()) - script->huds[hud]->Draw(NULL, this, script->popups[currentPopup-1].getXDisplacement(), script->popups[currentPopup-1].getYDisplacement(), FRACUNIT); - else - script->huds[hud]->Draw(NULL, this, 0, 0, FRACUNIT); - lastHud = hud; - - // Handle inventory bar drawing - if(CPlayer->inventorytics > 0 && !(level.flags & LEVEL_NOINVENTORYBAR) && (state == HUD_StatusBar || state == HUD_Fullscreen)) - { - SBarInfoMainBlock *inventoryBar = state == HUD_StatusBar ? script->huds[STBAR_INVENTORY] : script->huds[STBAR_INVENTORYFULLSCREEN]; - if(inventoryBar != lastInventoryBar) - inventoryBar->Tick(NULL, this, true); - - // No overlay? Lets cancel it. - if(inventoryBar->NumCommands() == 0) - CPlayer->inventorytics = 0; + if(currentPopup != POP_None && !script->huds[hud]->FullScreenOffsets()) + script->huds[hud]->Draw(NULL, this, script->popups[currentPopup-1].getXDisplacement(), script->popups[currentPopup-1].getYDisplacement(), FRACUNIT); else - inventoryBar->DrawAux(NULL, this, 0, 0, FRACUNIT); + script->huds[hud]->Draw(NULL, this, 0, 0, FRACUNIT); + lastHud = hud; + + // Handle inventory bar drawing + if(CPlayer->inventorytics > 0 && !(level.flags & LEVEL_NOINVENTORYBAR) && (state == HUD_StatusBar || state == HUD_Fullscreen)) + { + SBarInfoMainBlock *inventoryBar = state == HUD_StatusBar ? script->huds[STBAR_INVENTORY] : script->huds[STBAR_INVENTORYFULLSCREEN]; + if(inventoryBar != lastInventoryBar) + inventoryBar->Tick(NULL, this, true); + + // No overlay? Lets cancel it. + if(inventoryBar->NumCommands() == 0) + CPlayer->inventorytics = 0; + else + inventoryBar->DrawAux(NULL, this, 0, 0, FRACUNIT); + } } // Handle popups diff --git a/src/g_strife/strife_sbar.cpp b/src/g_strife/strife_sbar.cpp index 4792065f4..0a986495c 100644 --- a/src/g_strife/strife_sbar.cpp +++ b/src/g_strife/strife_sbar.cpp @@ -222,12 +222,7 @@ public: { DBaseStatusBar::Draw (state); - if (state == HUD_Fullscreen) - { - SB_state = screen->GetPageCount (); - DrawFullScreenStuff (); - } - else if (state == HUD_StatusBar) + if (state == HUD_StatusBar) { if (SB_state != 0) { @@ -235,6 +230,20 @@ public: } DrawMainBar (); } + else + { + if (state == HUD_Fullscreen) + { + SB_state = screen->GetPageCount (); + DrawFullScreenStuff (); + } + + // Draw pop screen (log, keys, and status) + if (CurrentPop != POP_None && PopHeight < 0) + { + DrawPopScreen (screen->GetHeight()); + } + } } void ShowPop (int popnum) @@ -279,7 +288,7 @@ public: bool MustDrawLog(EHudState state) { // Tell the base class to draw the log if the pop screen won't be displayed. - return (state == HUD_None); + return false; } private: @@ -554,12 +563,6 @@ private: } } } - - // Draw pop screen (log, keys, and status) - if (CurrentPop != POP_None && PopHeight < 0) - { - DrawPopScreen (screen->GetHeight()); - } } void DrawPopScreen (int bottom)