From 62bd060e49765e811252c1de3515fc4d27b0acfc Mon Sep 17 00:00:00 2001 From: Marisa the Magician Date: Wed, 20 Dec 2023 16:14:29 +0100 Subject: [PATCH] Split automatic scaling factors of HUD. --- language.def_menu | 6 ++-- language.es_menu | 6 ++-- language.version | 4 +-- menudef.txt | 6 ++-- zscript/hud/swwm_hud.zsc | 54 +++++++++++++++-------------------- zscript/hud/swwm_hudextra.zsc | 4 ++- 6 files changed, 37 insertions(+), 43 deletions(-) diff --git a/language.def_menu b/language.def_menu index 7adb98ea8..32af5a52f 100644 --- a/language.def_menu +++ b/language.def_menu @@ -283,9 +283,9 @@ TOOLTIP_SWWM_USEWEAPONBAR = "Enables an alternate method for scrolling through w TOOLTIP_SWWM_PERCENTSTATS = "Shows kills/items/secrets in the HUD as percentages, rather than counters."; TOOLTIP_SWWM_TARGETVALS = "Healthbars will show the current and maximum health values of the target."; TOOLTIP_SWWM_HUDSCALE = "If higher than zero, manually set the scale of the HUD. Keep in mind that HUD elements may overlap if set too high."; -TOOLTIP_SWWM_HUDSCALE0 = "If non-zero, manually set the scale of Damage Numbers. Usually, this is equal to the primary HUD scale."; -TOOLTIP_SWWM_HUDSCALE1 = "If non-zero, manually set the scale of Healthbars, Score Numbers and Item Sense. Usually, this is one less than the primary HUD scale."; -TOOLTIP_SWWM_HUDSCALE2 = "If non-zero, manually set the scale of Interest Points. Usually, this is two less than the primary HUD scale."; +TOOLTIP_SWWM_HUDSCALE0 = "If higher than zero, manually set the scale of Damage Numbers. Usually, this is equal to the primary HUD scale."; +TOOLTIP_SWWM_HUDSCALE1 = "If higher than zero, manually set the scale of Healthbars, Score Numbers and Item Sense. Usually, this is one less than the primary HUD scale."; +TOOLTIP_SWWM_HUDSCALE2 = "If higher than zero, manually set the scale of Interest Points. Usually, this is two less than the primary HUD scale."; TOOLTIP_SWWM_ALTCLEAR = "Use an alternate, less visually intense effect for getting 100% completion on a level."; TOOLTIP_SWWMACHIEVEMENTMENU = "View your achievements."; TOOLTIP_SWWM_MM_ENABLE = "Displays a minimap on the top right corner of the screen."; diff --git a/language.es_menu b/language.es_menu index 9d27ce7db..ee1917839 100644 --- a/language.es_menu +++ b/language.es_menu @@ -278,9 +278,9 @@ TOOLTIP_SWWM_USEWEAPONBAR = "Habilita un método alternativo para hacer scroll p TOOLTIP_SWWM_PERCENTSTATS = "Muestra las estadísticas de bajas/ítems/secretos en el HUD como porcentajes, en lugar de contadores."; TOOLTIP_SWWM_TARGETVALS = "Las barras de salud mostrarán los valores de salud actual y máximo del objetivo."; TOOLTIP_SWWM_HUDSCALE = "Si es mayor que cero, especifica manualmente la escala del HUD. Ten en cuenta que los elementos del HUD pueden solaparse si es muy alta."; -TOOLTIP_SWWM_HUDSCALE0 = "Si no es cero, especifica manualmente la escala de los Números de Daño. Normalmente, es igual a la escala primaria del HUD."; -TOOLTIP_SWWM_HUDSCALE1 = "Si no es cero, especifica manualmente la escala de las Barras de Salud, Números de Puntuación y Sensor de Ítems. Normalmente, es igual a dos menos que la escala primaria del HUD."; -TOOLTIP_SWWM_HUDSCALE2 = "Si no es cero, especifica manualmente la escala de los Puntos de Interés. Normalmente, es igual a tres menos que la escala primaria del HUD."; +TOOLTIP_SWWM_HUDSCALE0 = "Si es mayor que cero, especifica manualmente la escala de los Números de Daño. Normalmente, es igual a la escala primaria del HUD."; +TOOLTIP_SWWM_HUDSCALE1 = "Si es mayor que cero, especifica manualmente la escala de las Barras de Salud, Números de Puntuación y Sensor de Ítems. Normalmente, es igual a dos menos que la escala primaria del HUD."; +TOOLTIP_SWWM_HUDSCALE2 = "Si es mayor que cero, especifica manualmente la escala de los Puntos de Interés. Normalmente, es igual a tres menos que la escala primaria del HUD."; TOOLTIP_SWWM_ALTCLEAR = "Usa un efecto alternativo de menor intensidad visual al completar un nivel al 100%."; TOOLTIP_SWWMACHIEVEMENTMENU = "Revisa tus logros."; TOOLTIP_SWWM_MM_ENABLE = "Muestra un minimapa en la esquina superior derecha de la pantalla."; diff --git a/language.version b/language.version index 97fec2ef8..e26fa1063 100644 --- a/language.version +++ b/language.version @@ -1,3 +1,3 @@ [default] -SWWM_MODVER="\cyDEMOLITIONIST \cw1.3pre r1060 \cu(Tue 19 Dec 19:23:52 CET 2023)\c-"; -SWWM_SHORTVER="\cw1.3pre r1060 \cu(2023-12-19 19:23:52)\c-"; +SWWM_MODVER="\cyDEMOLITIONIST \cw1.3pre r1061 \cu(Wed 20 Dec 16:14:29 CET 2023)\c-"; +SWWM_SHORTVER="\cw1.3pre r1061 \cu(2023-12-20 16:14:29)\c-"; diff --git a/menudef.txt b/menudef.txt index a3fe5b530..e5cf052a7 100644 --- a/menudef.txt +++ b/menudef.txt @@ -139,9 +139,9 @@ OptionMenu "SWWMOptionMenu" Option "$SWWM_UNIQSTATS", "swwm_uniqstats", "YesNo" Slider "$SWWM_HUDMARGIN", "swwm_hudmargin", 0, 10, 1, 0 SWWMScaleField "$SWWM_HUDSCALE", "swwm_hudscale", "$SWWM_HS_AUTOL", "$SWWM_HS_AUTOT" - SWWMScaleField "$SWWM_HUDSCALE0", "swwm_hudscale0", "$SWWM_HS_AUTO" - SWWMScaleField "$SWWM_HUDSCALE1", "swwm_hudscale1", "$SWWM_HS_AUTO" - SWWMScaleField "$SWWM_HUDSCALE2", "swwm_hudscale2", "$SWWM_HS_AUTO" + SWWMScaleField "$SWWM_HUDSCALE0", "swwm_hudscale0", "$SWWM_HS_AUTOL", "$SWWM_HS_AUTOT" + SWWMScaleField "$SWWM_HUDSCALE1", "swwm_hudscale1", "$SWWM_HS_AUTOL", "$SWWM_HS_AUTOT" + SWWMScaleField "$SWWM_HUDSCALE2", "swwm_hudscale2", "$SWWM_HS_AUTOL", "$SWWM_HS_AUTOT" Option "$SWWM_HUDALLAMMO", "swwm_hudallammo", "YesNo" Option "$SWWM_MM_ENABLE", "swwm_mm_enable", "YesNo" Option "$SWWM_MM_MISSILES", "swwm_mm_missiles", "YesNo" diff --git a/zscript/hud/swwm_hud.zsc b/zscript/hud/swwm_hud.zsc index de740817a..38b37709f 100644 --- a/zscript/hud/swwm_hud.zsc +++ b/zscript/hud/swwm_hud.zsc @@ -101,10 +101,9 @@ Class SWWMStatusBar : BaseStatusBar SWWMHandler hnd; // shared stuff - double hs; - double hs0, hs1, hs2; - Vector2 ss; - Vector2 ss0, ss1, ss2; + double hsA, hsT; + double hs, hs0, hs1, hs2; + Vector2 ss, ss0, ss1, ss2; int ymargin, xmargin; double FracTic; double FrameTime; @@ -629,36 +628,29 @@ Class SWWMStatusBar : BaseStatusBar return; } if ( !hnd ) hnd = SWWMHandler(EventHandler.Find("SWWMHandler")); - if ( swwm_hudscale < 0 ) hs = max(min(floor(Screen.GetWidth()/480.),floor(Screen.GetHeight()/270.)),1.); - else hs = max(min(floor(Screen.GetWidth()/640.),floor(Screen.GetHeight()/360.)),1.); - ss = (Screen.GetWidth()/hs,Screen.GetHeight()/hs); + hsA = max(min(floor(Screen.GetWidth()/640.),floor(Screen.GetHeight()/360.)),1.); + hsT = max(min(floor(Screen.GetWidth()/480.),floor(Screen.GetHeight()/270.)),1.); ymargin = clamp(swwm_hudmargin,0,10); - hs0 = hs; - hs1 = max(hs-1.,1.); - hs2 = max(hs-2.,1.); - ss0 = ss; + int hudscale = swwm_hudscale; + int hudscale0 = swwm_hudscale0; + int hudscale1 = swwm_hudscale1; + int hudscale2 = swwm_hudscale2; + if ( hudscale > 0 ) hs = hudscale; + else if ( hudscale < 0 ) hs = hsT; + else hs = hsA; + if ( hudscale0 > 0 ) hs0 = hudscale0; + else if ( hudscale0 < 0 ) hs0 = hsT; + else hs0 = hsA; + if ( hudscale1 > 0 ) hs1 = hudscale1; + else if ( hudscale1 < 0 ) hs1 = max(hsT-1.,1.); + else hs1 = max(hsA-1.,1.); + if ( hudscale2 > 0 ) hs2 = hudscale2; + else if ( hudscale2 < 0 ) hs2 = max(hsT-2.,1.); + else hs2 = max(hsA-2.,1.); + ss = (Screen.GetWidth()/hs,Screen.GetHeight()/hs); + ss0 = (Screen.GetWidth()/hs0,Screen.GetHeight()/hs0); ss1 = (Screen.GetWidth()/hs1,Screen.GetHeight()/hs1); ss2 = (Screen.GetWidth()/hs2,Screen.GetHeight()/hs2); - if ( swwm_hudscale > 0 ) - { - hs = swwm_hudscale; - ss = (Screen.GetWidth()/hs,Screen.GetHeight()/hs); - } - if ( swwm_hudscale0 > 0 ) - { - hs0 = swwm_hudscale0; - ss0 = (Screen.GetWidth()/hs0,Screen.GetHeight()/hs0); - } - if ( swwm_hudscale1 > 0 ) - { - hs1 = swwm_hudscale1; - ss1 = (Screen.GetWidth()/hs1,Screen.GetHeight()/hs1); - } - if ( swwm_hudscale2 > 0 ) - { - hs2 = swwm_hudscale2; - ss2 = (Screen.GetWidth()/hs2,Screen.GetHeight()/hs2); - } // calculate margin for ultrawide screens, mostly so hud // elements don't get too spread out xmargin = ymargin+max(int(ss.x-ss.y/.5625)/2,0); diff --git a/zscript/hud/swwm_hudextra.zsc b/zscript/hud/swwm_hudextra.zsc index 64398393d..516df00d5 100644 --- a/zscript/hud/swwm_hudextra.zsc +++ b/zscript/hud/swwm_hudextra.zsc @@ -190,16 +190,18 @@ Class SWWMAchievementNotification : HUDMessageBase override void Draw( int bottom, int visibility ) { - double ymargin = clamp(swwm_hudmargin,0,10); + double ymargin; double hs; Vector2 ss; if ( SWWMStatusBar(StatusBar) ) { + ymargin = SWWMStatusBar(StatusBar).ymargin; hs = SWWMStatusBar(StatusBar).hs; ss = SWWMStatusBar(StatusBar).ss; } else { + ymargin = clamp(swwm_hudmargin,0,10); hs = max(min(floor(Screen.GetWidth()/640.),floor(Screen.GetHeight()/360.)),1.); ss = (Screen.GetWidth()/hs,Screen.GetHeight()/hs); }