Split automatic scaling factors of HUD.

This commit is contained in:
Mari the Deer 2023-12-20 16:14:29 +01:00
commit 62bd060e49
6 changed files with 37 additions and 43 deletions

View file

@ -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.";

View file

@ -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.";

View file

@ -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-";

View file

@ -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"

View file

@ -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);

View file

@ -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);
}