From 116bca4b0bb45f392835f9b10aabd33716627e25 Mon Sep 17 00:00:00 2001 From: Marisa the Magician Date: Fri, 23 Dec 2022 18:26:12 +0100 Subject: [PATCH] Show "all keys" doors as multicolor in the minimap. Deprecate IsValidLockNum and GetLockColor utility functions. --- language.version | 4 ++-- zscript/hud/swwm_hud_topstuff.zsc | 23 ++++++++++++++++++++++- zscript/swwm_thinkers.zsc | 11 +++++++---- zscript/utility/swwm_utility_map.zsc | 4 ++-- 4 files changed, 33 insertions(+), 9 deletions(-) diff --git a/language.version b/language.version index a0849b9c8..198f2b0fe 100644 --- a/language.version +++ b/language.version @@ -1,3 +1,3 @@ [default] -SWWM_MODVER="\cyDEMOLITIONIST \cw1.3pre r703 \cu(Wed 21 Dec 18:20:16 CET 2022)\c-"; -SWWM_SHORTVER="\cw1.3pre r703 \cu(2022-12-21 18:20:16)\c-"; +SWWM_MODVER="\cyDEMOLITIONIST \cw1.3pre r704 \cu(Fri 23 Dec 18:26:13 CET 2022)\c-"; +SWWM_SHORTVER="\cw1.3pre r704 \cu(2022-12-23 18:26:13)\c-"; diff --git a/zscript/hud/swwm_hud_topstuff.zsc b/zscript/hud/swwm_hud_topstuff.zsc index b4aa154df..c6b3a809d 100644 --- a/zscript/hud/swwm_hud_topstuff.zsc +++ b/zscript/hud/swwm_hud_topstuff.zsc @@ -518,7 +518,28 @@ extend Class SWWMStatusBar && (lock > 0) && (lock < 256) ) { let lcol = SWWMUtility.GetLockColor(lock); - if ( lcol ) col = lcol; + if ( !lcol ) + { + // "all keys" locks lack a color + // so we cycle through the colors of all available keys + if ( gameinfo.gametype&GAME_Doom ) + { + Color cols[3] = {0xFFFF0000,0xFF0000FF,0xFFFFFF00}; + col = cols[int(((gametic+fractic)*3)/GameTicRate)%3]; + } + else if ( gameinfo.gametype&GAME_Heretic ) + { + Color cols[3] = {0xFFFFFF00,0xFF00FF00,0xFF0000FF}; + col = cols[int(((gametic+fractic)*3)/GameTicRate)%3]; + } + else if ( gameinfo.gametype&GAME_Hexen ) + { + Color cols[11] = {0xFF969696,0xFFFFDA00,0xFF4040FF,0xFFFF8000,0xFF00FF00,0xFF2F97FF,0xFF9A98BC,0xFF9C4C00,0xFFFFD900,0xFF40FF40,0xFFFF4040}; + col = cols[int(((gametic+fractic)*11)/GameTicRate)%11]; + } + else col = mm_lockedcolor; // fallback + } + else if ( lcol != -1 ) col = lcol; else col = mm_lockedcolor; } else if ( mm_specialwallcolor && ShowTriggerLine(l) ) diff --git a/zscript/swwm_thinkers.zsc b/zscript/swwm_thinkers.zsc index ee681a485..a939a4d6a 100644 --- a/zscript/swwm_thinkers.zsc +++ b/zscript/swwm_thinkers.zsc @@ -198,13 +198,16 @@ Class SWWMCachedLockInfo : SWWMStaticThinker { let ti = ThinkerIterator.Create("SWWMCachedLockInfo",STAT_STATIC); SWWMCachedLockInfo cli = SWWMCachedLockInfo(ti.Next()); - if ( !cli ) return 0; + if ( !cli ) return -1; foreach ( e:cli.ent ) { - if ( (e.locknumber == l) && e.hascolor ) - return e.mapcolor; + if ( e.locknumber == l ) + { + if ( e.hascolor ) return e.mapcolor; + return 0; + } } - return 0; + return -1; } static SWWMCachedLockInfo GetInstance() diff --git a/zscript/utility/swwm_utility_map.zsc b/zscript/utility/swwm_utility_map.zsc index 259a93498..89234278b 100644 --- a/zscript/utility/swwm_utility_map.zsc +++ b/zscript/utility/swwm_utility_map.zsc @@ -208,13 +208,13 @@ extend Class SWWMUtility return false; } - static bool IsValidLockNum( int l ) + deprecated("4.11","Use Key.IsLockDefined() instead") static bool IsValidLockNum( int l ) { if ( (l < 1) || (l > 255) ) return true; return SWWMCachedLockInfo.IsValidLock(l); } - static Color GetLockColor( int l ) + deprecated("4.11","Use Key.GetMapColorForLock() instead") static Color GetLockColor( int l ) { return SWWMCachedLockInfo.GetLockColor(l); }