diff --git a/src/g_statusbar/shared_sbar.cpp b/src/g_statusbar/shared_sbar.cpp index 6be4abf9f..4fc4720a0 100644 --- a/src/g_statusbar/shared_sbar.cpp +++ b/src/g_statusbar/shared_sbar.cpp @@ -588,6 +588,13 @@ DEFINE_ACTION_FUNCTION(DBaseStatusBar, BeginHUD) return 0; } +DEFINE_ACTION_FUNCTION(DBaseStatusBar, UpdateScreenGeometry) +{ + PARAM_SELF_PROLOGUE(DBaseStatusBar); + setsizeneeded = true; + return 0; +} + //--------------------------------------------------------------------------- // // PROC AttachToPlayer diff --git a/wadsrc/static/zscript/level_compatibility.txt b/wadsrc/static/zscript/level_compatibility.txt index e007e98dd..e7bd242be 100644 --- a/wadsrc/static/zscript/level_compatibility.txt +++ b/wadsrc/static/zscript/level_compatibility.txt @@ -5,6 +5,22 @@ class LevelCompatibility play { switch (checksum) { + case '9527DD0809FDA39CCFC316A21D135783': // HACX.WAD map05 + { + // fix non-functional self-referencing sector hack. + for(int i = 578; i < 582; i++) + SetLineSectorRef(i, Line.back, 91); + + for(int i = 707; i < 714; i++) + SetLineSectorRef(i, Line.back, 91); + + SetLineSectorRef(736, Line.front, 91); + SetLineSectorRef(659, Line.front, 91); + SetLineSpecial(659, Transfer_Heights, 60); + break; + } + + case 'E2B5D1400279335811C1C1C0B437D9C8': // Deathknights of the Dark Citadel, map54 { // This map has two gear boxes which are flagged for player cross diff --git a/wadsrc/static/zscript/statusbar/statusbar.txt b/wadsrc/static/zscript/statusbar/statusbar.txt index 6b74e3d01..385db36bf 100644 --- a/wadsrc/static/zscript/statusbar/statusbar.txt +++ b/wadsrc/static/zscript/statusbar/statusbar.txt @@ -318,6 +318,8 @@ class BaseStatusBar native ui native void BeginStatusBar(bool forceScaled = false, int resW = -1, int resH = -1, int rel = -1); native void BeginHUD(double Alpha = 1., bool forcescaled = false, int resW = -1, int resH = -1); + native void UpdateScreenGeometry(); + virtual void Init() { mSmallFont = HUDFont.Create("SmallFont"); @@ -330,7 +332,7 @@ class BaseStatusBar native ui native virtual clearscope void SetMugShotState (String state_name, bool wait_till_done=false, bool reset=false); virtual void FlashItem (class itemtype) { artiflashTick = 4; itemflashFade = 0.75; } - virtual void AttachToPlayer (PlayerInfo player) { CPlayer = player; } + virtual void AttachToPlayer (PlayerInfo player) { CPlayer = player; UpdateScreenGeometry(); } virtual void FlashCrosshair () { CrosshairSize = XHAIRPICKUPSIZE; } virtual void NewGame () { if (CPlayer != null) AttachToPlayer(CPlayer); } virtual void ShowPop (int popnum) { ShowLog = (popnum == POP_Log && !ShowLog); }