Alt HUD style fully implemented.

This commit is contained in:
Mari the Deer 2022-06-04 01:00:47 +02:00
commit 7c8fe3a11f
6 changed files with 302 additions and 2 deletions

View file

Before

Width:  |  Height:  |  Size: 82 B

After

Width:  |  Height:  |  Size: 82 B

Before After
Before After

View file

@ -208,6 +208,7 @@ SWWM_NODEATHEXIT = "Disable Death Exits";
SWWM_EXTENDEDPICKUP = "Extend Item Size";
SWWM_VOICELOG = "Log Player Comments";
SWWM_SKIPSKILL = "Skip Skill Confirmation";
SWWM_ALTHUD = "Alternate HUD Style";
SWWM_MMTITLE = "Minimap Settings";
SWWM_MM_ENABLE = "Show Minimap";
SWWM_MM_ROTATE = "Rotate Minimap";
@ -378,6 +379,7 @@ TOOLTIP_SWWM_NODEATHEXIT = "This option completely negates the effects of death
TOOLTIP_SWWM_EXTENDEDPICKUP = "Gives all items a vanilla-sized \"virtual hitbox\" that allows picking them up from farther away. Requires a map restart if changed.";
TOOLTIP_SWWM_VOICELOG = "Subtitled player comments will be saved to the Messages tab of the Demolitionist Menu.";
TOOLTIP_SWWM_SKIPSKILL = "Skips confirmation of skill selection, if you get tired of seeing it every time.";
TOOLTIP_SWWM_ALTHUD = "Switches the HUD style to one akin to the Demolitionist Side Mods.";
TOOLTIP_SWWMMINIMAPMENU = "Configure the minimap.";
TOOLTIP_SWWMACHIEVEMENTMENU = "View your achievements.";
TOOLTIP_SWWM_MM_ENABLE = "Displays a minimap under the score counter.";

View file

@ -207,6 +207,7 @@ SWWM_NODEATHEXIT = "Desactivar Salidas de Muerte";
SWWM_EXTENDEDPICKUP = "Extender Tamaño de Ítem";
SWWM_VOICELOG = "Registrar Comentarios de Jugador";
SWWM_SKIPSKILL = "Saltar Confirmación de Dificultad";
SWWM_ALTHUD = "Estilo de HUD Alternativo";
SWWM_MMTITLE = "Opciones de Minimapa";
SWWM_MM_ENABLE = "Mostrar Minimapa";
SWWM_MM_ROTATE = "Rotar Minimapa";
@ -382,6 +383,7 @@ TOOLTIP_SWWM_NODEATHEXIT = "Esta opción invalida completamente los efectos de l
TOOLTIP_SWWM_EXTENDEDPICKUP = "Da a todos los ítems una \"hitbox virtual\" de tamaño vanilla que permite recogerlos a mayor distancia. Requiere reinicio de mapa si se cambia.";
TOOLTIP_SWWM_VOICELOG = "Los comentarios de jugador subtitulados se guardarán en la pestaña de Mensajes del Menú de Demolicionista.";
TOOLTIP_SWWM_SKIPSKILL = "Salta la confirmación de selección de dificultad, si te has cansado de verla todo el tiempo.";
TOOLTIP_SWWM_ALTHUD = "Cambia el estilo de HUD a uno parecido al de los Mods Paralelos de Demolicionista.";
TOOLTIP_SWWMMINIMAPMENU = "Configura el minimapa.";
TOOLTIP_SWWMACHIEVEMENTMENU = "Revisa tus logros.";
TOOLTIP_SWWM_MM_ENABLE = "Muestra un minimapa bajo el contador de puntuación.";

View file

@ -1,3 +1,3 @@
[default]
SWWM_MODVER="\cyDEMOLITIONIST \cw1.3pre r91 \cu(Fri 3 Jun 21:43:08 CEST 2022)\c-";
SWWM_SHORTVER="\cw1.3pre r91 \cu(2022-06-03 21:43:08)\c-";
SWWM_MODVER="\cyDEMOLITIONIST \cw1.3pre r92 \cu(Sat 4 Jun 01:00:47 CEST 2022)\c-";
SWWM_SHORTVER="\cw1.3pre r92 \cu(2022-06-04 01:00:47)\c-";

View file

@ -118,6 +118,7 @@ OptionMenu "SWWMOptionMenu"
Option "$SWWM_FORCESTATS", "swwm_forcestats", "SWWMForceStats"
Option "$SWWM_UNIQSTATS", "swwm_uniqstats", "YesNo"
Slider "$SWWM_HUDMARGIN", "swwm_hudmargin", 0, 20, 1, 0
Option "$SWWM_ALTHUD", "swwm_althud", "YesNo"
Slider "$SWWM_MAXMSG", "swwm_maxshown", 1, 10, 1, 0
Slider "$SWWM_MAXMSGBIG", "swwm_maxshownbig", 1, 20, 1, 0
Slider "$SWWM_MAXPICK", "swwm_maxpickup", 1, 10, 1, 0

View file

@ -1 +1,296 @@
// DrawWeaponAlt code for all weapons
// Deep Impact
extend Class DeepImpact
{
ui TextureID AltWeaponBox, AltAmmoBar;
override void DrawWeaponAlt( double TicFrac, double bx, double by, double hs, Vector2 ss )
{
if ( !AltWeaponBox ) AltWeaponBox = TexMan.CheckForTexture("graphics/AltHUD/DeepImpactDisplay.png",TexMan.Type_Any);
if ( !AltAmmoBar ) AltAmmoBar = TexMan.CheckForTexture("graphics/AltHUD/DeepImpactBar.png",TexMan.Type_Any);
Screen.DrawTexture(AltWeaponBox,false,bx-7,by-24,DTA_VirtualWidthF,ss.x,DTA_VirtualHeightF,ss.y,DTA_KeepRatio,true);
int chg = clamp(ChargeInter?ChargeInter.GetValue():clipcount,0,100);
int ct = int(((by-2)-(chg*20./100.))*hs);
bool blinking = (failtime>gametic)&&((failtime-gametic)%8>=4);
Screen.DrawTexture(AltAmmoBar,false,bx-5,by-22,DTA_VirtualWidthF,ss.x,DTA_VirtualHeightF,ss.y,DTA_KeepRatio,true,DTA_ClipTop,ct,DTA_ColorOverlay,blinking?Color(128,0,0,0):Color(0,0,0,0));
}
}
// Explodium Gun
extend Class ExplodiumGun
{
ui TextureID AltWeaponBox, AltRoundTex;
override void DrawWeaponAlt( double TicFrac, double bx, double by, double hs, Vector2 ss )
{
if ( !AltWeaponBox ) AltWeaponBox = TexMan.CheckForTexture("graphics/AltHUD/ExplodiumDisplay.png",TexMan.Type_Any);
if ( !AltRoundTex ) AltRoundTex = TexMan.CheckForTexture("graphics/AltHUD/ExplodiumRound.png",TexMan.Type_Any);
Screen.DrawTexture(AltWeaponBox,false,bx-9,by-21,DTA_VirtualWidthF,ss.x,DTA_VirtualHeightF,ss.y,DTA_KeepRatio,true);
if ( chambered ) Screen.DrawTexture(AltRoundTex,false,bx-7,by-19,DTA_VirtualWidthF,ss.x,DTA_VirtualHeightF,ss.y,DTA_KeepRatio,true);
for ( int i=0; i<clipcount; i++ ) Screen.DrawTexture(AltRoundTex,false,bx-7,by-(16-i*2),DTA_VirtualWidthF,ss.x,DTA_VirtualHeightF,ss.y,DTA_KeepRatio,true);
}
}
extend Class DualExplodiumGun
{
ui TextureID AltWeaponBox, AltRoundTex;
override void DrawWeaponAlt( double TicFrac, double bx, double by, double hs, Vector2 ss )
{
if ( !AltWeaponBox ) AltWeaponBox = TexMan.CheckForTexture("graphics/AltHUD/ExplodiumDisplay.png",TexMan.Type_Any);
if ( !AltRoundTex ) AltRoundTex = TexMan.CheckForTexture("graphics/AltHUD/ExplodiumRound.png",TexMan.Type_Any);
Screen.DrawTexture(AltWeaponBox,false,bx-20,by-21,DTA_VirtualWidthF,ss.x,DTA_VirtualHeightF,ss.y,DTA_KeepRatio,true);
if ( chambered ) Screen.DrawTexture(AltRoundTex,false,bx-18,by-19,DTA_VirtualWidthF,ss.x,DTA_VirtualHeightF,ss.y,DTA_KeepRatio,true);
for ( int i=0; i<clipcount; i++ ) Screen.DrawTexture(AltRoundTex,false,bx-18,by-(16-i*2),DTA_VirtualWidthF,ss.x,DTA_VirtualHeightF,ss.y,DTA_KeepRatio,true);
Screen.DrawTexture(AltWeaponBox,false,bx-9,by-21,DTA_VirtualWidthF,ss.x,DTA_VirtualHeightF,ss.y,DTA_KeepRatio,true);
if ( ExplodiumGun(SisterWeapon).chambered ) Screen.DrawTexture(AltRoundTex,false,bx-7,by-19,DTA_VirtualWidthF,ss.x,DTA_VirtualHeightF,ss.y,DTA_KeepRatio,true);
for ( int i=0; i<ExplodiumGun(SisterWeapon).clipcount; i++ ) Screen.DrawTexture(AltRoundTex,false,bx-7,by-(16-i*2),DTA_VirtualWidthF,ss.x,DTA_VirtualHeightF,ss.y,DTA_KeepRatio,true);
}
}
// Spreadgun
extend Class Spreadgun
{
ui TextureID AltWeaponBox, AltRoundTex[7];
override void DrawWeaponAlt( double TicFrac, double bx, double by, double hs, Vector2 ss )
{
static const Class<Ammo> types[] = {"RedShell","GreenShell","WhiteShell","BlueShell","BlackShell","PurpleShell","GoldShell"};
if ( !AltWeaponBox ) AltWeaponBox = TexMan.CheckForTexture("graphics/AltHUD/SpreadgunDisplay.png",TexMan.Type_Any);
if ( !AltRoundTex[0] ) AltRoundTex[0] = TexMan.CheckForTexture("graphics/AltHUD/ShellRed.png",TexMan.Type_Any);
if ( !AltRoundTex[1] ) AltRoundTex[1] = TexMan.CheckForTexture("graphics/AltHUD/ShellGreen.png",TexMan.Type_Any);
if ( !AltRoundTex[2] ) AltRoundTex[2] = TexMan.CheckForTexture("graphics/AltHUD/ShellWhite.png",TexMan.Type_Any);
if ( !AltRoundTex[3] ) AltRoundTex[3] = TexMan.CheckForTexture("graphics/AltHUD/ShellBlue.png",TexMan.Type_Any);
if ( !AltRoundTex[4] ) AltRoundTex[4] = TexMan.CheckForTexture("graphics/AltHUD/ShellBlack.png",TexMan.Type_Any);
if ( !AltRoundTex[5] ) AltRoundTex[5] = TexMan.CheckForTexture("graphics/AltHUD/ShellPurple.png",TexMan.Type_Any);
if ( !AltRoundTex[6] ) AltRoundTex[6] = TexMan.CheckForTexture("graphics/AltHUD/ShellGold.png",TexMan.Type_Any);
Screen.DrawTexture(AltWeaponBox,false,bx-9,by-6,DTA_VirtualWidthF,ss.x,DTA_VirtualHeightF,ss.y,DTA_KeepRatio,true);
if ( !chambered ) return;
for ( int i=0; i<7; i++ )
{
if ( loadammo != types[i] ) continue;
Screen.DrawTexture(AltRoundTex[i],false,bx-7,by-4,DTA_VirtualWidthF,ss.x,DTA_VirtualHeightF,ss.y,DTA_KeepRatio,true,DTA_ColorOverlay,Color(fired?128:0,0,0,0));
break;
}
}
}
// Wallbuster (less of a fuck in the alt hud)
extend Class Wallbuster
{
ui TextureID AltWeaponBox, AltRoundTex[4], AltCursorTex;
override void DrawWeaponAlt( double TicFrac, double bx, double by, double hs, Vector2 ss )
{
static const Class<Ammo> types[] = {"RedShell","GreenShell","BlueShell","PurpleShell"};
if ( !AltWeaponBox ) AltWeaponBox = TexMan.CheckForTexture("graphics/AltHUD/WallbusterDisplay.png",TexMan.Type_Any);
if ( !AltRoundTex[0] ) AltRoundTex[0] = TexMan.CheckForTexture("graphics/AltHUD/ShellRed.png",TexMan.Type_Any);
if ( !AltRoundTex[1] ) AltRoundTex[1] = TexMan.CheckForTexture("graphics/AltHUD/ShellGreen.png",TexMan.Type_Any);
if ( !AltRoundTex[2] ) AltRoundTex[2] = TexMan.CheckForTexture("graphics/AltHUD/ShellBlue.png",TexMan.Type_Any);
if ( !AltRoundTex[3] ) AltRoundTex[3] = TexMan.CheckForTexture("graphics/AltHUD/ShellPurple.png",TexMan.Type_Any);
if ( !AltCursorTex ) AltCursorTex = TexMan.CheckForTexture("graphics/AltHUD/WallbusterCursor.png",TexMan.Type_Any);
Screen.DrawTexture(AltWeaponBox,false,bx-11,by-70,DTA_VirtualWidthF,ss.x,DTA_VirtualHeightF,ss.y,DTA_KeepRatio,true);
int curpos = 68-(rotation[5]*14+rotation[rotation[5]]*2);
Screen.DrawTexture(AltCursorTex,false,bx-9,by-curpos,DTA_VirtualWidthF,ss.x,DTA_VirtualHeightF,ss.y,DTA_KeepRatio,true);
for ( int i=0; i<25; i++ )
{
curpos = 68-(i*2+(i/5)*4);
if ( !loaded[i] ) continue;
for ( int j=0; j<4; j++ )
{
if ( loaded[i] != types[j] ) continue;
Screen.DrawTexture(AltRoundTex[j],false,bx-7,by-curpos,DTA_VirtualWidthF,ss.x,DTA_VirtualHeightF,ss.y,DTA_KeepRatio,true,DTA_ColorOverlay,Color(fired[i]?128:0,0,0,0));
break;
}
}
}
}
// Eviscerator
extend Class Eviscerator
{
ui TextureID AltWeaponBox, AltRoundTex, AltSpreadIcon[2];
override void DrawWeaponAlt( double TicFrac, double bx, double by, double hs, Vector2 ss )
{
if ( !AltWeaponBox ) AltWeaponBox = TexMan.CheckForTexture("graphics/AltHUD/EvisceratorDisplay.png",TexMan.Type_Any);
if ( !AltRoundTex ) AltRoundTex = TexMan.CheckForTexture("graphics/AltHUD/EvisceratorRound.png",TexMan.Type_Any);
if ( !AltSpreadIcon[0] ) AltSpreadIcon[0] = TexMan.CheckForTexture("graphics/AltHUD/EvisceratorWide.png",TexMan.Type_Any);
if ( !AltSpreadIcon[1] ) AltSpreadIcon[1] = TexMan.CheckForTexture("graphics/AltHUD/EvisceratorTight.png",TexMan.Type_Any);
Screen.DrawTexture(AltWeaponBox,false,bx-9,by-18,DTA_VirtualWidthF,ss.x,DTA_VirtualHeightF,ss.y,DTA_KeepRatio,true);
Screen.DrawTexture(AltRoundTex,false,bx-7,by-7,DTA_VirtualWidthF,ss.x,DTA_VirtualHeightF,ss.y,DTA_KeepRatio,true,DTA_ColorOverlay,chambered?Color(0,0,0,0):Color(128,0,0,0));
Screen.DrawTexture(AltSpreadIcon[extended],false,bx-7,by-16,DTA_VirtualWidthF,ss.x,DTA_VirtualHeightF,ss.y,DTA_KeepRatio,true);
}
}
// Hellblazer
extend Class Hellblazer
{
ui TextureID AltWeaponBox, AltRoundTex[4];
override void DrawWeaponAlt( double TicFrac, double bx, double by, double hs, Vector2 ss )
{
static const Class<Ammo> types[] = {"HellblazerMissiles","HellblazerCrackshots","HellblazerRavagers","HellblazerWarheads"};
if ( !AltWeaponBox ) AltWeaponBox = TexMan.CheckForTexture("graphics/AltHUD/HellblazerDisplay.png",TexMan.Type_Any);
if ( !AltRoundTex[0] ) AltRoundTex[0] = TexMan.CheckForTexture("graphics/AltHUD/HellblazerMissile.png",TexMan.Type_Any);
if ( !AltRoundTex[1] ) AltRoundTex[1] = TexMan.CheckForTexture("graphics/AltHUD/HellblazerCrackshot.png",TexMan.Type_Any);
if ( !AltRoundTex[2] ) AltRoundTex[2] = TexMan.CheckForTexture("graphics/AltHUD/HellblazerRavager.png",TexMan.Type_Any);
if ( !AltRoundTex[3] ) AltRoundTex[3] = TexMan.CheckForTexture("graphics/AltHUD/HellblazerWarhead.png",TexMan.Type_Any);
Screen.DrawTexture(AltWeaponBox,false,bx-12,by-28,DTA_VirtualWidthF,ss.x,DTA_VirtualHeightF,ss.y,DTA_KeepRatio,true);
int curtype = 0;
for ( int i=0; i<4; i++ )
{
if ( loadammo != types[i] ) continue;
curtype = i;
break;
}
int yy = 26;
switch ( curtype )
{
case 0:
for ( int i=0; i<6; i++ )
{
Screen.DrawTexture(AltRoundTex[0],false,bx-10,by-yy,DTA_VirtualWidthF,ss.x,DTA_VirtualHeightF,ss.y,DTA_KeepRatio,true,DTA_ColorOverlay,((i<=magpos)&&(i>=(magpos-preload)))?magstate[i]?Color(128,0,0,0):Color(0,0,0,0):magstate[i]?Color(160,0,0,0):Color(96,0,0,0),DTA_Desaturate,magstate[i]?192:0);
yy -= 4;
}
break;
case 1:
yy = 24;
for ( int i=0; i<3; i++ )
{
Screen.DrawTexture(AltRoundTex[1],false,bx-10,by-yy,DTA_VirtualWidthF,ss.x,DTA_VirtualHeightF,ss.y,DTA_KeepRatio,true,DTA_ColorOverlay,((i<=magpos)&&(i>=(magpos-preload)))?magstate[i]?Color(128,0,0,0):Color(0,0,0,0):magstate[i]?Color(160,0,0,0):Color(96,0,0,0),DTA_Desaturate,magstate[i]?192:0);
yy -= 8;
}
break;
case 2:
yy = 24;
for ( int i=0; i<3; i++ )
{
Screen.DrawTexture(AltRoundTex[2],false,bx-10,by-yy,DTA_VirtualWidthF,ss.x,DTA_VirtualHeightF,ss.y,DTA_KeepRatio,true,DTA_ColorOverlay,((i<=magpos)&&(i>=(magpos-preload)))?magstate[i]?Color(128,0,0,0):Color(0,0,0,0):magstate[i]?Color(160,0,0,0):Color(96,0,0,0),DTA_Desaturate,magstate[i]?192:0);
yy -= 8;
}
break;
case 3:
yy = 22;
for ( int i=0; i<2; i++ )
{
Screen.DrawTexture(AltRoundTex[3],false,bx-10,by-yy,DTA_VirtualWidthF,ss.x,DTA_VirtualHeightF,ss.y,DTA_KeepRatio,true,DTA_ColorOverlay,((i<=magpos)&&(i>=(magpos-preload)))?magstate[i]?Color(128,0,0,0):Color(0,0,0,0):magstate[i]?Color(160,0,0,0):Color(96,0,0,0),DTA_Desaturate,magstate[i]?192:0);
yy -= 12;
}
break;
}
}
}
// Biospark Carbine
extend Class Sparkster
{
ui TextureID AltWeaponBox, AltRoundTex[2];
override void DrawWeaponAlt( double TicFrac, double bx, double by, double hs, Vector2 ss )
{
if ( !AltWeaponBox ) AltWeaponBox = TexMan.CheckForTexture("graphics/AltHUD/BiosparkDisplay.png",TexMan.Type_Any);
if ( !AltRoundTex[0] ) AltRoundTex[0] = TexMan.CheckForTexture("graphics/AltHUD/BiosparkShot.png",TexMan.Type_Any);
if ( !AltRoundTex[1] ) AltRoundTex[1] = TexMan.CheckForTexture("graphics/AltHUD/BiosparkRed.png",TexMan.Type_Any);
bool blinking = (failtime>gametic)&&((failtime-gametic)%16>=8);
if ( doublestacc )
{
Screen.DrawTexture(AltWeaponBox,false,bx-6,by-24,DTA_VirtualWidthF,ss.x,DTA_VirtualHeightF,ss.y,DTA_KeepRatio,true);
Screen.DrawTexture(AltWeaponBox,false,bx-6,by-12,DTA_VirtualWidthF,ss.x,DTA_VirtualHeightF,ss.y,DTA_KeepRatio,true);
if ( nomag ) return;
bool bRed;
int yy = 22;
for ( int i=0; i<8; i++ )
{
if ( clipcount <= i ) Screen.DrawTexture(AltRoundTex[0],false,bx-4,by-yy,DTA_VirtualWidthF,ss.x,DTA_VirtualHeightF,ss.y,DTA_KeepRatio,true,DTA_Desaturate,255,DTA_ColorOverlay,Color(160,0,0,0));
else
{
bRed = ((i>=4)&&(clipcount<6)||(i<4)&&(clipcount<2));
Screen.DrawTexture(AltRoundTex[bRed],false,bx-4,by-yy,DTA_VirtualWidthF,ss.x,DTA_VirtualHeightF,ss.y,DTA_KeepRatio,true,DTA_ColorOverlay,Color(blinking?96:0,0,0,0));
}
yy -= 2;
if ( i == 3 ) yy -= 4;
}
}
else
{
Screen.DrawTexture(AltWeaponBox,false,bx-6,by-12,DTA_VirtualWidthF,ss.x,DTA_VirtualHeightF,ss.y,DTA_KeepRatio,true);
if ( nomag ) return;
bool bRed;
int yy = 10;
for ( int i=0; i<4; i++ )
{
if ( clipcount <= i ) Screen.DrawTexture(AltRoundTex[0],false,bx-4,by-yy,DTA_VirtualWidthF,ss.x,DTA_VirtualHeightF,ss.y,DTA_KeepRatio,true,DTA_Desaturate,255,DTA_ColorOverlay,Color(160,0,0,0));
else
{
bRed = (clipcount<2);
Screen.DrawTexture(AltRoundTex[bRed],false,bx-4,by-yy,DTA_VirtualWidthF,ss.x,DTA_VirtualHeightF,ss.y,DTA_KeepRatio,true,DTA_ColorOverlay,Color(blinking?96:0,0,0,0));
}
yy -= 2;
}
}
}
}
// Silver Bullet JET
extend Class SilverBullet
{
ui TextureID AltWeaponBox[2], AltZoomBar, AltRoundTex[4];
override void DrawWeaponAlt( double TicFrac, double bx, double by, double hs, Vector2 ss )
{
if ( !AltWeaponBox[0] ) AltWeaponBox[0] = TexMan.CheckForTexture("graphics/AltHUD/SilverBulletDisplay.png",TexMan.Type_Any);
if ( !AltWeaponBox[1] ) AltWeaponBox[1] = TexMan.CheckForTexture("graphics/AltHUD/SilverBulletZoomDisplay.png",TexMan.Type_Any);
if ( !AltZoomBar ) AltZoomBar = TexMan.CheckForTexture("graphics/AltHUD/SilverBulletZoomBar.png",TexMan.Type_Any);
if ( !AltRoundTex[0] ) AltRoundTex[0] = TexMan.CheckForTexture("graphics/AltHUD/SilverBulletXSB.png",TexMan.Type_Any);
if ( !AltRoundTex[1] ) AltRoundTex[1] = TexMan.CheckForTexture("graphics/AltHUD/SilverBulletFCB.png",TexMan.Type_Any);
if ( !AltRoundTex[2] ) AltRoundTex[2] = TexMan.CheckForTexture("graphics/AltHUD/SilverBulletXSBCasing.png",TexMan.Type_Any);
if ( !AltRoundTex[3] ) AltRoundTex[3] = TexMan.CheckForTexture("graphics/AltHUD/SilverBulletFCBCasing.png",TexMan.Type_Any);
int zl = clamp(ZoomInter?ZoomInter.GetValue():int(zoomlevel*10),0,160);
if ( zl >= 10 )
{
Screen.DrawTexture(AltWeaponBox[1],false,bx-14,by-26,DTA_VirtualWidthF,ss.x,DTA_VirtualHeightF,ss.y,DTA_KeepRatio,true);
double zw = zl*10./160.;
Screen.DrawTexture(AltZoomBar,false,bx-12,by-24,DTA_VirtualWidthF,ss.x,DTA_VirtualHeightF,ss.y,DTA_KeepRatio,true,DTA_WindowRightF,zw);
}
Screen.DrawTexture(AltWeaponBox[0],false,bx-14,by-17,DTA_VirtualWidthF,ss.x,DTA_VirtualHeightF,ss.y,DTA_KeepRatio,true);
if ( chambered ) Screen.DrawTexture(AltRoundTex[fcbchambered+fired*2],false,bx-12,by-15,DTA_VirtualWidthF,ss.x,DTA_VirtualHeightF,ss.y,DTA_KeepRatio,true);
for ( int i=0; i<clipcount; i++ )
Screen.DrawTexture(AltRoundTex[fcbloaded],false,bx-12,by-(12-i*2),DTA_VirtualWidthF,ss.x,DTA_VirtualHeightF,ss.y,DTA_KeepRatio,true);
}
}
// Candy Gun
extend Class CandyGun
{
ui TextureID AltWeaponBox, AltRoundTex;
override void DrawWeaponAlt( double TicFrac, double bx, double by, double hs, Vector2 ss )
{
if ( !AltWeaponBox ) AltWeaponBox = TexMan.CheckForTexture("graphics/AltHUD/ExplodiumDisplay.png",TexMan.Type_Any);
if ( !AltRoundTex ) AltRoundTex = TexMan.CheckForTexture("graphics/AltHUD/CandyRound.png",TexMan.Type_Any);
Screen.DrawTexture(AltWeaponBox,false,bx-9,by-21,DTA_VirtualWidthF,ss.x,DTA_VirtualHeightF,ss.y,DTA_KeepRatio,true);
if ( chambered ) Screen.DrawTexture(AltRoundTex,false,bx-7,by-19,DTA_VirtualWidthF,ss.x,DTA_VirtualHeightF,ss.y,DTA_KeepRatio,true);
for ( int i=0; i<clipcount; i++ ) Screen.DrawTexture(AltRoundTex,false,bx-7,by-(16-i*2),DTA_VirtualWidthF,ss.x,DTA_VirtualHeightF,ss.y,DTA_KeepRatio,true);
}
}
// Ynykron
extend Class Ynykron
{
ui TextureID AltWeaponBox, AltChargeBar[2], AltBoxSide[2];
override void DrawWeaponAlt( double TicFrac, double bx, double by, double hs, Vector2 ss )
{
if ( !AltWeaponBox ) AltWeaponBox = TexMan.CheckForTexture("graphics/AltHUD/YnykronDisplay.png",TexMan.Type_Any);
if ( !AltChargeBar[0] ) AltChargeBar[0] = TexMan.CheckForTexture("graphics/AltHUD/YnykronBarBeam.png",TexMan.Type_Any);
if ( !AltChargeBar[1] ) AltChargeBar[1] = TexMan.CheckForTexture("graphics/AltHUD/YnykronBarVortex.png",TexMan.Type_Any);
if ( !AltBoxSide[0] ) AltBoxSide[0] = TexMan.CheckForTexture("graphics/AltHUD/YnykronIconBeam.png",TexMan.Type_Any);
if ( !AltBoxSide[1] ) AltBoxSide[1] = TexMan.CheckForTexture("graphics/AltHUD/YnykronIconVortex.png",TexMan.Type_Any);
Screen.DrawTexture(AltWeaponBox,false,bx-9,by-38,DTA_VirtualWidthF,ss.x,DTA_VirtualHeightF,ss.y,DTA_KeepRatio,true);
int chg = clamp(ChargeInter?ChargeInter.GetValue():int(chargelevel*10),0,400);
int ct = int(((by-2)-chg/16.)*hs);
Screen.DrawTexture(AltBoxSide[inverted],false,bx-7,by-36,DTA_VirtualWidthF,ss.x,DTA_VirtualHeightF,ss.y,DTA_KeepRatio,true,DTA_ColorOverlay,clipcount?Color(0,0,0,0):Color(128,0,0,0));
Screen.DrawTexture(AltChargeBar[inverted],false,bx-7,by-27,DTA_VirtualWidthF,ss.x,DTA_VirtualHeightF,ss.y,DTA_KeepRatio,true,DTA_ColorOverlay,(chargestate==CS_READY)?Color(int(clamp(sin((level.maptime+TicFrac)*8)*40+24,0.,64.)),255,255,255):Color(0,0,0,0),DTA_ClipTop,ct);
}
}