Some ultrawide accommodations.
This commit is contained in:
parent
1fb0b7a7f5
commit
aa2921e67e
9 changed files with 83 additions and 74 deletions
|
|
@ -564,7 +564,7 @@ extend Class SWWMHandler
|
|||
if ( !bbar_f ) bbar_f = TexMan.CheckForTexture("graphics/HUD/BossHealthBarBox.png");
|
||||
if ( !bbar_r ) bbar_r = TexMan.CheckForTexture("graphics/HUD/BossHealthBar.png");
|
||||
if ( !bbar_d ) bbar_d = TexMan.CheckForTexture("graphics/HUD/BossHealthBarDecay.png");
|
||||
Vector2 vpos = ((bar.ss.x-300)/2.,bar.ss.y-(bar.margin+50));
|
||||
Vector2 vpos = ((bar.ss.x-300)/2.,bar.ss.y-(bar.ymargin+50));
|
||||
Screen.DrawTexture(bbar_f,false,vpos.x-2,vpos.y-2,DTA_VirtualWidthF,bar.ss.x,DTA_VirtualHeightF,bar.ss.y,DTA_KeepRatio,true,DTA_Alpha,bossalpha);
|
||||
if ( hmax )
|
||||
{
|
||||
|
|
|
|||
|
|
@ -105,7 +105,7 @@ Class SWWMStatusBar : BaseStatusBar
|
|||
double hs0, hs1, hs2;
|
||||
Vector2 ss;
|
||||
Vector2 ss0, ss1, ss2;
|
||||
int margin;
|
||||
int ymargin, xmargin;
|
||||
double FracTic;
|
||||
double FrameTime;
|
||||
double PrevFrame;
|
||||
|
|
@ -632,7 +632,7 @@ Class SWWMStatusBar : BaseStatusBar
|
|||
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);
|
||||
margin = clamp(swwm_hudmargin,0,10);
|
||||
ymargin = clamp(swwm_hudmargin,0,10);
|
||||
hs0 = hs;
|
||||
hs1 = max(hs-1.,1.);
|
||||
hs2 = max(hs-2.,1.);
|
||||
|
|
@ -659,6 +659,9 @@ Class SWWMStatusBar : BaseStatusBar
|
|||
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);
|
||||
FracTic = TicFrac;
|
||||
if ( (players[consoleplayer].Camera is 'Demolitionist') && (state <= HUD_Fullscreen) )
|
||||
{
|
||||
|
|
@ -675,7 +678,7 @@ Class SWWMStatusBar : BaseStatusBar
|
|||
if ( state == HUD_AltHud )
|
||||
{
|
||||
String str = StringTable.Localize("$SWWM_WARNALTHUD");
|
||||
Screen.DrawText(NewSmallFont,Font.CR_RED,(ss.x-NewSmallFont.StringWidth(str))/2,margin,str,DTA_VirtualWidthF,ss.x,DTA_VirtualHeightF,ss.y,DTA_KeepRatio,true);
|
||||
Screen.DrawText(NewSmallFont,Font.CR_RED,(ss.x-NewSmallFont.StringWidth(str))/2,ymargin,str,DTA_VirtualWidthF,ss.x,DTA_VirtualHeightF,ss.y,DTA_KeepRatio,true);
|
||||
}
|
||||
PrevFrame = CurFrame;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -48,8 +48,8 @@ extend Class SWWMStatusBar
|
|||
{
|
||||
int invy = 61;
|
||||
// active items (armor / powerups)
|
||||
double xx = margin+2;
|
||||
double yy = ss.y-(margin+invy+9);
|
||||
double xx = xmargin+2;
|
||||
double yy = ss.y-(ymargin+invy+9);
|
||||
bool drewarmor = false;
|
||||
for ( Inventory i=CPlayer.mo.Inv; i; i=i.Inv )
|
||||
{
|
||||
|
|
@ -58,7 +58,7 @@ extend Class SWWMStatusBar
|
|||
yy -= 34;
|
||||
drewarmor = true;
|
||||
}
|
||||
yy = ss.y-(margin+invy+9);
|
||||
yy = ss.y-(ymargin+invy+9);
|
||||
if ( drewarmor )
|
||||
{
|
||||
xx += 36;
|
||||
|
|
@ -115,8 +115,8 @@ extend Class SWWMStatusBar
|
|||
DrawInvIcon(next[1],xx+70,yy+2,1./3.);
|
||||
return;
|
||||
}
|
||||
Screen.DrawTexture(InventoryTex,false,margin+36,ss.y-(margin+invy+2),DTA_VirtualWidthF,ss.x,DTA_VirtualHeightF,ss.y,DTA_KeepRatio,true);
|
||||
DrawInvIcon(CPlayer.mo.InvSel,margin+38,ss.y-(margin+invy),selected:true);
|
||||
Screen.DrawTexture(InventoryTex,false,xmargin+36,ss.y-(ymargin+invy+2),DTA_VirtualWidthF,ss.x,DTA_VirtualHeightF,ss.y,DTA_KeepRatio,true);
|
||||
DrawInvIcon(CPlayer.mo.InvSel,xmargin+38,ss.y-(ymargin+invy),selected:true);
|
||||
}
|
||||
|
||||
override void DrawPowerups()
|
||||
|
|
|
|||
|
|
@ -237,7 +237,7 @@ extend Class SWWMStatusBar
|
|||
PickupQueue.Delete(i);
|
||||
break;
|
||||
}
|
||||
m.UpdateText(int(ss.x*.75));
|
||||
m.UpdateText(int(min(ss.x,ss.y/.5625)*.75));
|
||||
PickupQueue.Push(m);
|
||||
}
|
||||
else
|
||||
|
|
@ -285,7 +285,7 @@ extend Class SWWMStatusBar
|
|||
if ( (ntagstr != "") && (tagtime > 0) )
|
||||
{
|
||||
nalph = clamp(tagtime/20.,0.,1.);
|
||||
yy = ss.y-(margin+50);
|
||||
yy = ss.y-(ymargin+50);
|
||||
// shift up if boss healthbar is present
|
||||
if ( hnd && (hnd.bossalpha > 0.) ) yy -= int(40*clamp(hnd.bossalpha*2.,0.,1.));
|
||||
int len = mSmallFont.StringWidth(ntagstr);
|
||||
|
|
@ -296,14 +296,14 @@ extend Class SWWMStatusBar
|
|||
if ( PickupQueue.Size() <= 0 ) return;
|
||||
// reverse order since they're drawn bottom to top
|
||||
int mend = max(0,PickupQueue.Size()-MAXPICKUP);
|
||||
yy = ss.y-(margin+50);
|
||||
yy = ss.y-(ymargin+50);
|
||||
// shift up if boss healthbar is present
|
||||
if ( hnd && (hnd.bossalpha > 0.) ) yy -= int(40*clamp(hnd.bossalpha*2.,0.,1.));
|
||||
// shift up again if nametag is present
|
||||
if ( nalph > 0. ) yy -= int((mSmallFont.GetHeight()+6)*clamp(nalph*2.,0.,1.));
|
||||
for ( int i=PickupQueue.Size()-1; i>=mend; i-- )
|
||||
{
|
||||
PickupQueue[i].UpdateText(int(ss.x*.75));
|
||||
PickupQueue[i].UpdateText(int(min(ss.x,ss.y/.5625)*.75));
|
||||
double curtime = (PickupQueue[i].tic+GameTicRate*PICKDURATION)-(level.totaltime+fractic);
|
||||
double alph = clamp(curtime/20.,0.,1.);
|
||||
let l = PickupQueue[i].l;
|
||||
|
|
@ -339,7 +339,7 @@ extend Class SWWMStatusBar
|
|||
if ( !midl || (midsz != int(ss.x*ssp)) )
|
||||
{
|
||||
if ( midl ) midl.Destroy();
|
||||
midl = mSmallFont.BreakLines(midstr,int(ss.x*ssp));
|
||||
midl = mSmallFont.BreakLines(midstr,int(min(ss.x,ss.y/.5625)*ssp));
|
||||
}
|
||||
int h = mSmallFont.GetHeight();
|
||||
int maxlen = 0;
|
||||
|
|
@ -358,8 +358,8 @@ extend Class SWWMStatusBar
|
|||
}
|
||||
if ( MainQueue.Size() <= 0 ) return;
|
||||
int mstart = max(0,MainQueue.Size()-((chatopen>=gametic)?MAXSHOWNBIG:MAXSHOWN));
|
||||
xx = margin;
|
||||
yy = margin;
|
||||
xx = xmargin;
|
||||
yy = ymargin;
|
||||
bool smol = (ss.x<640);
|
||||
Screen.DrawTexture(ChatTex[smol?3:0],false,xx,yy,DTA_VirtualWidthF,ss.x,DTA_VirtualHeightF,ss.y,DTA_KeepRatio,true,DTA_Alpha,boxalph);
|
||||
yy += 2;
|
||||
|
|
|
|||
|
|
@ -115,23 +115,23 @@ extend Class SWWMStatusBar
|
|||
{
|
||||
int facecol = CVar.GetCVar('swwm_tagcolor',CPlayer).GetInt();
|
||||
if ( (facecol < 0) || (facecol > 15) ) facecol = 0;
|
||||
Screen.DrawTexture(FaceTex[0],false,margin+shake.x,ss.y-(margin+32)+shake.y,DTA_VirtualWidthF,ss.x,DTA_VirtualHeightF,ss.y,DTA_KeepRatio,true,DTA_SrcWidth,32,DTA_SrcHeight,32,DTA_DestWidth,32,DTA_DestHeight,32,DTA_SrcX,32*(facecol%4),DTA_SrcY,32*(facecol/4));
|
||||
Screen.DrawTexture(FaceTex[0],false,xmargin+shake.x,ss.y-(ymargin+32)+shake.y,DTA_VirtualWidthF,ss.x,DTA_VirtualHeightF,ss.y,DTA_KeepRatio,true,DTA_SrcWidth,32,DTA_SrcHeight,32,DTA_DestWidth,32,DTA_DestHeight,32,DTA_SrcX,32*(facecol%4),DTA_SrcY,32*(facecol/4));
|
||||
bool raging = CPlayer.mo.FindInventory("RagekitPower");
|
||||
bool angy = CPlayer.mo.FindInventory("AngeryPower");
|
||||
if ( raging && angy ) Screen.DrawTexture(FaceTex[16],false,margin+shake.x,ss.y-(margin+32)+shake.y,DTA_VirtualWidthF,ss.x,DTA_VirtualHeightF,ss.y,DTA_KeepRatio,true);
|
||||
else if ( raging ) Screen.DrawTexture(FaceTex[15],false,margin+shake.x,ss.y-(margin+32)+shake.y,DTA_VirtualWidthF,ss.x,DTA_VirtualHeightF,ss.y,DTA_KeepRatio,true);
|
||||
else if ( angy ) Screen.DrawTexture(FaceTex[13],false,margin+shake.x,ss.y-(margin+32)+shake.y,DTA_VirtualWidthF,ss.x,DTA_VirtualHeightF,ss.y,DTA_KeepRatio,true);
|
||||
Screen.DrawTexture(FaceTex[1],false,margin+shake.x,ss.y-(margin+32)+shake.y,DTA_VirtualWidthF,ss.x,DTA_VirtualHeightF,ss.y,DTA_KeepRatio,true,DTA_Color,Color(255,255,0,0),DTA_Alpha,min(1.,noiz));
|
||||
if ( raging && angy ) Screen.DrawTexture(FaceTex[16],false,xmargin+shake.x,ss.y-(ymargin+32)+shake.y,DTA_VirtualWidthF,ss.x,DTA_VirtualHeightF,ss.y,DTA_KeepRatio,true);
|
||||
else if ( raging ) Screen.DrawTexture(FaceTex[15],false,xmargin+shake.x,ss.y-(ymargin+32)+shake.y,DTA_VirtualWidthF,ss.x,DTA_VirtualHeightF,ss.y,DTA_KeepRatio,true);
|
||||
else if ( angy ) Screen.DrawTexture(FaceTex[13],false,xmargin+shake.x,ss.y-(ymargin+32)+shake.y,DTA_VirtualWidthF,ss.x,DTA_VirtualHeightF,ss.y,DTA_KeepRatio,true);
|
||||
Screen.DrawTexture(FaceTex[1],false,xmargin+shake.x,ss.y-(ymargin+32)+shake.y,DTA_VirtualWidthF,ss.x,DTA_VirtualHeightF,ss.y,DTA_KeepRatio,true,DTA_Color,Color(255,255,0,0),DTA_Alpha,min(1.,noiz));
|
||||
if ( (CPlayer.Health > 0) && (isInvulnerable() || CPlayer.mo.FindInventory("InvinciballPower")) )
|
||||
Screen.DrawTexture(FaceTex[1],false,margin+shake.x,ss.y-(margin+32)+shake.y,DTA_VirtualWidthF,ss.x,DTA_VirtualHeightF,ss.y,DTA_KeepRatio,true,DTA_Alpha,.8+.1*sin(gametic+fractic));
|
||||
Screen.DrawTexture(FaceTex[1],false,xmargin+shake.x,ss.y-(ymargin+32)+shake.y,DTA_VirtualWidthF,ss.x,DTA_VirtualHeightF,ss.y,DTA_KeepRatio,true,DTA_Alpha,.8+.1*sin(gametic+fractic));
|
||||
}
|
||||
else
|
||||
{
|
||||
Screen.DrawTexture(FaceTex[0],false,margin+shake.x,ss.y-(margin+32)+shake.y,DTA_VirtualWidthF,ss.x,DTA_VirtualHeightF,ss.y,DTA_KeepRatio,true,DTA_SrcWidth,32,DTA_SrcHeight,32,DTA_DestWidth,32,DTA_DestHeight,32,DTA_FillColor,Color(0,0,0),DTA_Alpha,.25*(1.-min(1.,noiz)));
|
||||
Screen.DrawTexture(FaceTex[1],false,margin+shake.x,ss.y-(margin+32)+shake.y,DTA_VirtualWidthF,ss.x,DTA_VirtualHeightF,ss.y,DTA_KeepRatio,true,DTA_FillColor,Color(255,0,0),DTA_Alpha,.25*min(1.,noiz));
|
||||
Screen.DrawTexture(FaceTex[0],false,xmargin+shake.x,ss.y-(ymargin+32)+shake.y,DTA_VirtualWidthF,ss.x,DTA_VirtualHeightF,ss.y,DTA_KeepRatio,true,DTA_SrcWidth,32,DTA_SrcHeight,32,DTA_DestWidth,32,DTA_DestHeight,32,DTA_FillColor,Color(0,0,0),DTA_Alpha,.25*(1.-min(1.,noiz)));
|
||||
Screen.DrawTexture(FaceTex[1],false,xmargin+shake.x,ss.y-(ymargin+32)+shake.y,DTA_VirtualWidthF,ss.x,DTA_VirtualHeightF,ss.y,DTA_KeepRatio,true,DTA_FillColor,Color(255,0,0),DTA_Alpha,.25*min(1.,noiz));
|
||||
}
|
||||
Screen.DrawTexture(FaceTex[GetFaceTex(demo)],false,margin+shake.x,ss.y-(margin+32)+shake.y,DTA_VirtualWidthF,ss.x,DTA_VirtualHeightF,ss.y,DTA_KeepRatio,true);
|
||||
if ( CPlayer.mo.FindInventory("BarrierPower") ) Screen.DrawTexture(FaceTex[14],false,margin+shake.x,ss.y-(margin+32)+shake.y,DTA_VirtualWidthF,ss.x,DTA_VirtualHeightF,ss.y,DTA_KeepRatio,true,DTA_Alpha,.5,DTA_LegacyRenderStyle,STYLE_Add);
|
||||
Screen.DrawTexture(FaceTex[GetFaceTex(demo)],false,xmargin+shake.x,ss.y-(ymargin+32)+shake.y,DTA_VirtualWidthF,ss.x,DTA_VirtualHeightF,ss.y,DTA_KeepRatio,true);
|
||||
if ( CPlayer.mo.FindInventory("BarrierPower") ) Screen.DrawTexture(FaceTex[14],false,xmargin+shake.x,ss.y-(ymargin+32)+shake.y,DTA_VirtualWidthF,ss.x,DTA_VirtualHeightF,ss.y,DTA_KeepRatio,true,DTA_Alpha,.5,DTA_LegacyRenderStyle,STYLE_Add);
|
||||
}
|
||||
|
||||
private void DrawStatus()
|
||||
|
|
@ -139,7 +139,7 @@ extend Class SWWMStatusBar
|
|||
DrawMugshot();
|
||||
int ox = 36;
|
||||
int oy = 5;
|
||||
Screen.DrawTexture(StatusTex,false,margin+ox,ss.y-(margin+22+oy),DTA_VirtualWidthF,ss.x,DTA_VirtualHeightF,ss.y,DTA_KeepRatio,true);
|
||||
Screen.DrawTexture(StatusTex,false,xmargin+ox,ss.y-(ymargin+22+oy),DTA_VirtualWidthF,ss.x,DTA_VirtualHeightF,ss.y,DTA_KeepRatio,true);
|
||||
String str;
|
||||
double ht = clamp(HealthInter.GetValue(fractic),0,10000);
|
||||
str = String.Format("%3d",clamp(round(ht),0,999));
|
||||
|
|
@ -151,34 +151,34 @@ extend Class SWWMStatusBar
|
|||
else if ( round(ht) > 100 ) hcolor = MCR_AQUA;
|
||||
if ( isInvulnerable() || CPlayer.mo.FindInventory("InvinciballPower") )
|
||||
{
|
||||
Screen.DrawTexture(HealthTex[0],false,margin+3+ox,ss.y-(margin+19+oy),DTA_VirtualWidthF,ss.x,DTA_VirtualHeightF,ss.y,DTA_KeepRatio,true,DTA_WindowRightF,hw,DTA_ColorOverlay,Color(255,0,0,0));
|
||||
Screen.DrawTexture(HealthTex[4],false,margin+2+ox,ss.y-(margin+20+oy),DTA_VirtualWidthF,ss.x,DTA_VirtualHeightF,ss.y,DTA_KeepRatio,true,DTA_WindowRightF,hw);
|
||||
Screen.DrawTexture(HealthTex[0],false,xmargin+3+ox,ss.y-(ymargin+19+oy),DTA_VirtualWidthF,ss.x,DTA_VirtualHeightF,ss.y,DTA_KeepRatio,true,DTA_WindowRightF,hw,DTA_ColorOverlay,Color(255,0,0,0));
|
||||
Screen.DrawTexture(HealthTex[4],false,xmargin+2+ox,ss.y-(ymargin+20+oy),DTA_VirtualWidthF,ss.x,DTA_VirtualHeightF,ss.y,DTA_KeepRatio,true,DTA_WindowRightF,hw);
|
||||
hcolor = MCR_WHITE;
|
||||
}
|
||||
else
|
||||
{
|
||||
Screen.DrawTexture(HealthTex[0],false,margin+3+ox,ss.y-(margin+19+oy),DTA_VirtualWidthF,ss.x,DTA_VirtualHeightF,ss.y,DTA_KeepRatio,true,DTA_WindowRightF,hw,DTA_ColorOverlay,Color(255,0,0,0));
|
||||
Screen.DrawTexture(HealthTex[0],false,margin+2+ox,ss.y-(margin+20+oy),DTA_VirtualWidthF,ss.x,DTA_VirtualHeightF,ss.y,DTA_KeepRatio,true,DTA_WindowRightF,hw);
|
||||
Screen.DrawTexture(HealthTex[0],false,xmargin+3+ox,ss.y-(ymargin+19+oy),DTA_VirtualWidthF,ss.x,DTA_VirtualHeightF,ss.y,DTA_KeepRatio,true,DTA_WindowRightF,hw,DTA_ColorOverlay,Color(255,0,0,0));
|
||||
Screen.DrawTexture(HealthTex[0],false,xmargin+2+ox,ss.y-(ymargin+20+oy),DTA_VirtualWidthF,ss.x,DTA_VirtualHeightF,ss.y,DTA_KeepRatio,true,DTA_WindowRightF,hw);
|
||||
if ( ht > 100 )
|
||||
{
|
||||
hw = min(ht-100,100);
|
||||
Screen.DrawTexture(HealthTex[1],false,margin+2+ox,ss.y-(margin+20+oy),DTA_VirtualWidthF,ss.x,DTA_VirtualHeightF,ss.y,DTA_KeepRatio,true,DTA_WindowRightF,hw);
|
||||
Screen.DrawTexture(HealthTex[1],false,xmargin+2+ox,ss.y-(ymargin+20+oy),DTA_VirtualWidthF,ss.x,DTA_VirtualHeightF,ss.y,DTA_KeepRatio,true,DTA_WindowRightF,hw);
|
||||
}
|
||||
if ( ht > 200 )
|
||||
{
|
||||
hw = min(ht-200,300)/3.;
|
||||
Screen.DrawTexture(HealthTex[2],false,margin+2+ox,ss.y-(margin+20+oy),DTA_VirtualWidthF,ss.x,DTA_VirtualHeightF,ss.y,DTA_KeepRatio,true,DTA_WindowRightF,hw);
|
||||
Screen.DrawTexture(HealthTex[2],false,xmargin+2+ox,ss.y-(ymargin+20+oy),DTA_VirtualWidthF,ss.x,DTA_VirtualHeightF,ss.y,DTA_KeepRatio,true,DTA_WindowRightF,hw);
|
||||
}
|
||||
if ( ht > 500 )
|
||||
{
|
||||
hw = min(ht-500,500)/5.;
|
||||
Screen.DrawTexture(HealthTex[3],false,margin+2+ox,ss.y-(margin+20+oy),DTA_VirtualWidthF,ss.x,DTA_VirtualHeightF,ss.y,DTA_KeepRatio,true,DTA_WindowRightF,hw);
|
||||
Screen.DrawTexture(HealthTex[3],false,xmargin+2+ox,ss.y-(ymargin+20+oy),DTA_VirtualWidthF,ss.x,DTA_VirtualHeightF,ss.y,DTA_KeepRatio,true,DTA_WindowRightF,hw);
|
||||
}
|
||||
}
|
||||
if ( CPlayer.mo.FindInventory("DivineSpriteEffect") )
|
||||
{
|
||||
double falph = clamp((ht-1000)/6000.,0.,1.);
|
||||
Screen.DrawTexture(HealthTex[5],false,margin+2+ox,ss.y-(margin+20+oy),DTA_VirtualWidthF,ss.x,DTA_VirtualHeightF,ss.y,DTA_KeepRatio,true,DTA_Alpha,falph,DTA_LegacyRenderStyle,STYLE_Add);
|
||||
Screen.DrawTexture(HealthTex[5],false,xmargin+2+ox,ss.y-(ymargin+20+oy),DTA_VirtualWidthF,ss.x,DTA_VirtualHeightF,ss.y,DTA_KeepRatio,true,DTA_Alpha,falph,DTA_LegacyRenderStyle,STYLE_Add);
|
||||
String tst;
|
||||
double alph = .1;
|
||||
int trl = 9;
|
||||
|
|
@ -187,41 +187,41 @@ extend Class SWWMStatusBar
|
|||
tst = "AAA";
|
||||
SWWMUtility.ObscureText(tst,(gametic-trl)/3,true);
|
||||
trl--;
|
||||
Screen.DrawText(MiniHUDFont,mhudfontcol[MCR_WHITE],margin+107+ox,ss.y-(margin+20+oy),tst,DTA_VirtualWidthF,ss.x,DTA_VirtualHeightF,ss.y,DTA_KeepRatio,true,DTA_Alpha,falph*alph,DTA_LegacyRenderStyle,STYLE_Add);
|
||||
Screen.DrawText(MiniHUDFont,mhudfontcol[MCR_WHITE],xmargin+107+ox,ss.y-(ymargin+20+oy),tst,DTA_VirtualWidthF,ss.x,DTA_VirtualHeightF,ss.y,DTA_KeepRatio,true,DTA_Alpha,falph*alph,DTA_LegacyRenderStyle,STYLE_Add);
|
||||
}
|
||||
Screen.DrawText(MiniHUDFont,mhudfontcol[hcolor],margin+107+ox,ss.y-(margin+20+oy),String.Format("%3d",clamp(round(ht),0,999)),DTA_VirtualWidthF,ss.x,DTA_VirtualHeightF,ss.y,DTA_KeepRatio,true,DTA_Alpha,1.-falph);
|
||||
Screen.DrawText(MiniHUDFont,mhudfontcol[hcolor],xmargin+107+ox,ss.y-(ymargin+20+oy),String.Format("%3d",clamp(round(ht),0,999)),DTA_VirtualWidthF,ss.x,DTA_VirtualHeightF,ss.y,DTA_KeepRatio,true,DTA_Alpha,1.-falph);
|
||||
}
|
||||
else
|
||||
{
|
||||
Screen.DrawText(MiniHUDFont,mhudfontcol[hcolor],margin+107+ox,ss.y-(margin+20+oy),String.Format("%3d",clamp(round(ht),0,999)),DTA_VirtualWidthF,ss.x,DTA_VirtualHeightF,ss.y,DTA_KeepRatio,true);
|
||||
Screen.DrawText(MiniHUDFont,mhudfontcol[hcolor],xmargin+107+ox,ss.y-(ymargin+20+oy),String.Format("%3d",clamp(round(ht),0,999)),DTA_VirtualWidthF,ss.x,DTA_VirtualHeightF,ss.y,DTA_KeepRatio,true);
|
||||
int f = HealthFlash;
|
||||
if ( f && (gametic < f) )
|
||||
{
|
||||
double alph = max((f-(gametic+FracTic))/25.,0.)**1.5;
|
||||
Screen.DrawTexture(HealthTex[7],false,margin+2+ox,ss.y-(margin+20+oy),DTA_VirtualWidthF,ss.x,DTA_VirtualHeightF,ss.y,DTA_KeepRatio,true,DTA_WindowRightF,bhw,DTA_LegacyRenderStyle,STYLE_Add,DTA_Alpha,alph);
|
||||
Screen.DrawText(MiniHUDFont,mhudfontcol[MCR_FLASH],margin+107+ox,ss.y-(margin+20+oy),str,DTA_VirtualWidthF,ss.x,DTA_VirtualHeightF,ss.y,DTA_KeepRatio,true,DTA_LegacyRenderStyle,STYLE_Add,DTA_Alpha,alph);
|
||||
Screen.DrawTexture(HealthTex[7],false,xmargin+2+ox,ss.y-(ymargin+20+oy),DTA_VirtualWidthF,ss.x,DTA_VirtualHeightF,ss.y,DTA_KeepRatio,true,DTA_WindowRightF,bhw,DTA_LegacyRenderStyle,STYLE_Add,DTA_Alpha,alph);
|
||||
Screen.DrawText(MiniHUDFont,mhudfontcol[MCR_FLASH],xmargin+107+ox,ss.y-(ymargin+20+oy),str,DTA_VirtualWidthF,ss.x,DTA_VirtualHeightF,ss.y,DTA_KeepRatio,true,DTA_LegacyRenderStyle,STYLE_Add,DTA_Alpha,alph);
|
||||
}
|
||||
if ( (CPlayer.health > 0) && (CPlayer.health <= 25) && (PulsePhase <= 15) && (hcolor != MCR_WHITE) )
|
||||
{
|
||||
double alph = clamp(sin((PulsePhase-FracTic)*12.),0.,1.);
|
||||
Screen.DrawTexture(HealthTex[6],false,margin+2+ox,ss.y-(margin+20+oy),DTA_VirtualWidthF,ss.x,DTA_VirtualHeightF,ss.y,DTA_KeepRatio,true,DTA_WindowRightF,hw,DTA_Alpha,alph);
|
||||
Screen.DrawText(MiniHUDFont,mhudfontcol[MCR_REDFLASH],margin+107+ox,ss.y-(margin+20+oy),str,DTA_VirtualWidthF,ss.x,DTA_VirtualHeightF,ss.y,DTA_KeepRatio,true,DTA_Alpha,alph);
|
||||
Screen.DrawTexture(HealthTex[6],false,xmargin+2+ox,ss.y-(ymargin+20+oy),DTA_VirtualWidthF,ss.x,DTA_VirtualHeightF,ss.y,DTA_KeepRatio,true,DTA_WindowRightF,hw,DTA_Alpha,alph);
|
||||
Screen.DrawText(MiniHUDFont,mhudfontcol[MCR_REDFLASH],xmargin+107+ox,ss.y-(ymargin+20+oy),str,DTA_VirtualWidthF,ss.x,DTA_VirtualHeightF,ss.y,DTA_KeepRatio,true,DTA_Alpha,alph);
|
||||
}
|
||||
ht = clamp(LagHealthInter.GetValue(fractic),0,1000);
|
||||
double hwl = min(ht,100);
|
||||
if ( hwl > bhw )
|
||||
{
|
||||
Screen.DrawTexture(HealthTex[8],false,margin+3+ox,ss.y-(margin+19+oy),DTA_VirtualWidthF,ss.x,DTA_VirtualHeightF,ss.y,DTA_KeepRatio,true,DTA_WindowLeftF,bhw,DTA_WindowRightF,hwl,DTA_ColorOverlay,Color(255,0,0,0));
|
||||
Screen.DrawTexture(HealthTex[8],false,margin+2+ox,ss.y-(margin+20+oy),DTA_VirtualWidthF,ss.x,DTA_VirtualHeightF,ss.y,DTA_KeepRatio,true,DTA_WindowLeftF,bhw,DTA_WindowRightF,hwl);
|
||||
Screen.DrawTexture(HealthTex[8],false,xmargin+3+ox,ss.y-(ymargin+19+oy),DTA_VirtualWidthF,ss.x,DTA_VirtualHeightF,ss.y,DTA_KeepRatio,true,DTA_WindowLeftF,bhw,DTA_WindowRightF,hwl,DTA_ColorOverlay,Color(255,0,0,0));
|
||||
Screen.DrawTexture(HealthTex[8],false,xmargin+2+ox,ss.y-(ymargin+20+oy),DTA_VirtualWidthF,ss.x,DTA_VirtualHeightF,ss.y,DTA_KeepRatio,true,DTA_WindowLeftF,bhw,DTA_WindowRightF,hwl);
|
||||
}
|
||||
}
|
||||
double ft = clamp(FuelInter.GetValue(fractic),0,120);
|
||||
Screen.DrawTexture(FuelTex[swwm_superfuel],false,margin+3+ox,ss.y-(margin+7+oy),DTA_VirtualWidthF,ss.x,DTA_VirtualHeightF,ss.y,DTA_KeepRatio,true,DTA_WindowRightF,ft,DTA_ColorOverlay,Color(255,0,0,0));
|
||||
Screen.DrawTexture(FuelTex[swwm_superfuel],false,margin+2+ox,ss.y-(margin+8+oy),DTA_VirtualWidthF,ss.x,DTA_VirtualHeightF,ss.y,DTA_KeepRatio,true,DTA_WindowRightF,ft);
|
||||
Screen.DrawTexture(FuelTex[swwm_superfuel],false,xmargin+3+ox,ss.y-(ymargin+7+oy),DTA_VirtualWidthF,ss.x,DTA_VirtualHeightF,ss.y,DTA_KeepRatio,true,DTA_WindowRightF,ft,DTA_ColorOverlay,Color(255,0,0,0));
|
||||
Screen.DrawTexture(FuelTex[swwm_superfuel],false,xmargin+2+ox,ss.y-(ymargin+8+oy),DTA_VirtualWidthF,ss.x,DTA_VirtualHeightF,ss.y,DTA_KeepRatio,true,DTA_WindowRightF,ft);
|
||||
let d = Demolitionist(CPlayer.mo);
|
||||
bool blink = (!d || (d.dashfuel > 20) || ((gametic%10) < 5));
|
||||
double dt = clamp(DashInter.GetValue(fractic),0,120);
|
||||
Screen.DrawTexture(DashTex,false,margin+3+ox,ss.y-(margin+4+oy),DTA_VirtualWidthF,ss.x,DTA_VirtualHeightF,ss.y,DTA_KeepRatio,true,DTA_WindowRightF,dt,DTA_ColorOverlay,Color(255,0,0,0));
|
||||
Screen.DrawTexture(DashTex,false,margin+2+ox,ss.y-(margin+5+oy),DTA_VirtualWidthF,ss.x,DTA_VirtualHeightF,ss.y,DTA_KeepRatio,true,DTA_WindowRightF,dt,DTA_ColorOverlay,Color(blink?0:96,0,0,0));
|
||||
Screen.DrawTexture(DashTex,false,xmargin+3+ox,ss.y-(ymargin+4+oy),DTA_VirtualWidthF,ss.x,DTA_VirtualHeightF,ss.y,DTA_KeepRatio,true,DTA_WindowRightF,dt,DTA_ColorOverlay,Color(255,0,0,0));
|
||||
Screen.DrawTexture(DashTex,false,xmargin+2+ox,ss.y-(ymargin+5+oy),DTA_VirtualWidthF,ss.x,DTA_VirtualHeightF,ss.y,DTA_KeepRatio,true,DTA_WindowRightF,dt,DTA_ColorOverlay,Color(blink?0:96,0,0,0));
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -787,13 +787,13 @@ extend Class SWWMStatusBar
|
|||
|
||||
private void DrawTopStuff()
|
||||
{
|
||||
int xx, yy = margin;
|
||||
int xx = xmargin, yy = ymargin;
|
||||
// obviously, don't draw the minimap if the automap is open
|
||||
if ( !automapactive && swwm_mm_enable )
|
||||
{
|
||||
bool smol = (ss.x<480);
|
||||
int hsz = smol?HALFMAPSIZE_SMALL:HALFMAPSIZE;
|
||||
xx = int(ss.x-(margin+(hsz+2)*2));
|
||||
xx = int(ss.x-(xmargin+(hsz+2)*2));
|
||||
Screen.DrawTexture(MiniBox[smol],false,xx,yy,DTA_VirtualWidthF,ss.x,DTA_VirtualHeightF,ss.y,DTA_KeepRatio,true);
|
||||
DrawMinimap(xx,yy,smol);
|
||||
yy += ((hsz+2)*2)+5;
|
||||
|
|
@ -803,7 +803,7 @@ extend Class SWWMStatusBar
|
|||
bool pstats = swwm_percentstats;
|
||||
if ( automapactive || (fstats > 0) )
|
||||
{
|
||||
xx = int(ss.x-(margin+2));
|
||||
xx = int(ss.x-(xmargin+2));
|
||||
String str;
|
||||
if ( automapactive || (fstats > 1) )
|
||||
{
|
||||
|
|
@ -992,7 +992,7 @@ extend Class SWWMStatusBar
|
|||
{
|
||||
yy += 9;
|
||||
if ( playercount <= 1 ) return;
|
||||
xx = int(ss.x-(margin+2));
|
||||
xx = int(ss.x-(xmargin+2));
|
||||
String str;
|
||||
if ( teamplay )
|
||||
{
|
||||
|
|
@ -1028,7 +1028,7 @@ extend Class SWWMStatusBar
|
|||
return;
|
||||
}
|
||||
// draw key icons
|
||||
Vector2 keypos = (ss.x-(margin+2),yy);
|
||||
Vector2 keypos = (ss.x-(xmargin+2),yy);
|
||||
int colc = 0;
|
||||
double colh = 0;
|
||||
int n = Key.GetKeyTypeCount();
|
||||
|
|
@ -1058,7 +1058,7 @@ extend Class SWWMStatusBar
|
|||
colh = max(colh,siz.y);
|
||||
if ( ++colc == maxcolc )
|
||||
{
|
||||
keypos.x = ss.x-(margin+2);
|
||||
keypos.x = ss.x-(xmargin+2);
|
||||
keypos.y += colh+2;
|
||||
colh = colc = 0;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -64,8 +64,8 @@ extend Class SWWMStatusBar
|
|||
|
||||
private void DrawWeapons()
|
||||
{
|
||||
Screen.DrawTexture(WeaponTex,false,ss.x-(margin+80),ss.y-(margin+10),DTA_VirtualWidthF,ss.x,DTA_VirtualHeightF,ss.y,DTA_KeepRatio,true);
|
||||
double xx = ss.x-(margin+78), yy = ss.y-(margin+8);
|
||||
Screen.DrawTexture(WeaponTex,false,ss.x-(xmargin+80),ss.y-(ymargin+10),DTA_VirtualWidthF,ss.x,DTA_VirtualHeightF,ss.y,DTA_KeepRatio,true);
|
||||
double xx = ss.x-(xmargin+78), yy = ss.y-(ymargin+8);
|
||||
for ( int i=1; i<=10; i++,xx+=8 )
|
||||
{
|
||||
int ncolor = mhudfontcol[MCR_WHITE];
|
||||
|
|
@ -129,8 +129,8 @@ extend Class SWWMStatusBar
|
|||
Screen.DrawText(MiniHUDFont,mhudfontcol[MCR_FLASH],xx,yy,String.Format("%d",(i%10)),DTA_VirtualWidthF,ss.x,DTA_VirtualHeightF,ss.y,DTA_KeepRatio,true,DTA_Alpha,alph,DTA_LegacyRenderStyle,STYLE_Add);
|
||||
}
|
||||
}
|
||||
xx = ss.x-(margin+54);
|
||||
yy = ss.y-(margin+14);
|
||||
xx = ss.x-(xmargin+54);
|
||||
yy = ss.y-(ymargin+14);
|
||||
bool bDrewAmmo = false;
|
||||
bool checkowned = !swwm_hudallammo;
|
||||
Array<SWWMWeapon> OwnedWeapons;
|
||||
|
|
@ -248,9 +248,9 @@ extend Class SWWMStatusBar
|
|||
int scr = int(ScoreInter.GetValue());
|
||||
int dcnt = 8-int(Log10(clamp(scr,1,999999999)));
|
||||
String sstr = String.Format("%9d",clamp(scr,0,999999999));
|
||||
xx = ss.x-(margin+48);
|
||||
xx = ss.x-(xmargin+48);
|
||||
if ( bDrewAmmo ) yy -= 12;
|
||||
else yy = ss.y-(margin+22);
|
||||
else yy = ss.y-(ymargin+22);
|
||||
Screen.DrawTexture(ScoreTex,false,xx,yy,DTA_VirtualWidthF,ss.x,DTA_VirtualHeightF,ss.y,DTA_KeepRatio,true);
|
||||
xx += 10;
|
||||
yy += 2;
|
||||
|
|
@ -258,11 +258,11 @@ extend Class SWWMStatusBar
|
|||
Screen.DrawText(MiniHUDFont,mhudfontcol[MCR_BRASS],xx,yy,sstr,DTA_VirtualWidthF,ss.x,DTA_VirtualHeightF,ss.y,DTA_KeepRatio,true);
|
||||
int bx = bDrewAmmo?56:50;
|
||||
// ammo display
|
||||
if ( CPlayer.ReadyWeapon is 'SWWMWeapon' ) SWWMWeapon(CPlayer.ReadyWeapon).DrawWeapon(FracTic,ss.x-(margin+bx),ss.y-(margin+12),hs,ss);
|
||||
if ( CPlayer.ReadyWeapon is 'SWWMWeapon' ) SWWMWeapon(CPlayer.ReadyWeapon).DrawWeapon(FracTic,ss.x-(xmargin+bx),ss.y-(ymargin+12),hs,ss);
|
||||
else if ( CPlayer.ReadyWeapon )
|
||||
{
|
||||
// generic display
|
||||
double xx = ss.x-(margin+bx+2), yy = ss.y-(margin+22);
|
||||
double xx = ss.x-(xmargin+bx+2), yy = ss.y-(ymargin+22);
|
||||
String str;
|
||||
int len;
|
||||
if ( CPlayer.ReadyWeapon.Ammo2 && (CPlayer.ReadyWeapon.Ammo2 != CPlayer.ReadyWeapon.Ammo1) )
|
||||
|
|
@ -280,7 +280,7 @@ extend Class SWWMStatusBar
|
|||
Screen.DrawText(MiniHUDFont,mhudfontcol[(CPlayer.ReadyWeapon.Ammo2.Amount<=0)?MCR_RED:MCR_BRASS],xx,yy+2,str,DTA_VirtualWidthF,ss.x,DTA_VirtualHeightF,ss.y,DTA_KeepRatio,true);
|
||||
yy += 12;
|
||||
}
|
||||
xx = ss.x-(margin+bx+2);
|
||||
xx = ss.x-(xmargin+bx+2);
|
||||
if ( CPlayer.ReadyWeapon.Ammo1 )
|
||||
{
|
||||
str = String.Format("%d",CPlayer.ReadyWeapon.Ammo1.Amount);
|
||||
|
|
|
|||
|
|
@ -86,7 +86,7 @@ Class SWWMOneLiner : HUDMessageBase
|
|||
|
||||
override void Draw( int bottom, int visibility )
|
||||
{
|
||||
int margin = swwm_hudmargin;
|
||||
int ymargin = clamp(swwm_hudmargin,0,10);
|
||||
double hs;
|
||||
Vector2 ss;
|
||||
if ( SWWMStatusBar(StatusBar) )
|
||||
|
|
@ -101,7 +101,7 @@ Class SWWMOneLiner : HUDMessageBase
|
|||
}
|
||||
if ( whichline == "" ) return; // don't draw empty strings
|
||||
// split so it can fit
|
||||
if ( !l ) l = mSmallFont.BreakLines(whichline,int(ss.x*.5));
|
||||
if ( !l ) l = mSmallFont.BreakLines(whichline,int(min(ss.x,ss.y/.5625)*.5));
|
||||
int maxlen = 0;
|
||||
for ( int i=0; i<l.Count(); i++ )
|
||||
{
|
||||
|
|
@ -114,8 +114,8 @@ Class SWWMOneLiner : HUDMessageBase
|
|||
double fcurtime = curtime-fractic;
|
||||
double alph = clamp((fcurtime/20.)+1.,0.,1.);
|
||||
alph *= clamp((lifespan-fcurtime)/10.,0.,1.);
|
||||
Screen.Dim("Black",alph*.8,int((Screen.GetWidth()-(maxlen+12)*hs)/2.),int(bottom-(margin+2+fh)*hs),int((maxlen+12)*hs),int((fh+4)*hs));
|
||||
int yy = margin+fh;
|
||||
Screen.Dim("Black",alph*.8,int((Screen.GetWidth()-(maxlen+12)*hs)/2.),int(bottom-(ymargin+2+fh)*hs),int((maxlen+12)*hs),int((fh+4)*hs));
|
||||
int yy = ymargin+fh;
|
||||
for ( int i=0; i<l.Count(); i++ )
|
||||
{
|
||||
int len = mSmallFont.StringWidth(l.StringAt(i));
|
||||
|
|
@ -188,7 +188,7 @@ Class SWWMAchievementNotification : HUDMessageBase
|
|||
|
||||
override void Draw( int bottom, int visibility )
|
||||
{
|
||||
double margin = swwm_hudmargin;
|
||||
double ymargin = clamp(swwm_hudmargin,0,10);
|
||||
double hs;
|
||||
Vector2 ss;
|
||||
if ( SWWMStatusBar(StatusBar) )
|
||||
|
|
@ -204,7 +204,7 @@ Class SWWMAchievementNotification : HUDMessageBase
|
|||
double fractic = System.GetTimeFrac();
|
||||
double ftics = tics+fractic;
|
||||
double alpha = (ftics<fadeintics)?(ftics/fadeintics):(ftics<(fadeintics+holdtics))?1.:(1.-(ftics-(fadeintics+holdtics))/fadeouttics);
|
||||
Vector2 pos = (int(ss.x-256)/2,(ss.y-(margin+36))+int(margin+40)*(1.-alpha));
|
||||
Vector2 pos = (int(ss.x-256)/2,(ss.y-(ymargin+36))+int(ymargin+40)*(1.-alpha));
|
||||
if ( !l ) l = mTinyFont.BreakLines(txt,200);
|
||||
int th = 14+(9*l.Count());
|
||||
Screen.DrawTexture(frame,false,pos.x,pos.y,DTA_VirtualWidthF,ss.x,DTA_VirtualHeightF,ss.y,DTA_KeepRatio,true,DTA_Alpha,alpha);
|
||||
|
|
@ -253,15 +253,18 @@ Class SWWMWeaponTooltip : HUDMessageBase
|
|||
override void Draw( int bottom, int visibility )
|
||||
{
|
||||
if ( tics <= 0 ) return;
|
||||
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);
|
||||
}
|
||||
|
|
@ -279,7 +282,7 @@ Class SWWMWeaponTooltip : HUDMessageBase
|
|||
}
|
||||
int cw = int(ceil((max(w1,w)+8)/6.))*6;
|
||||
int h = mSmallFont.GetHeight()+8+mTinyFont.GetHeight()*l.Count();
|
||||
Vector2 pos = (int(ss.x/2),ss.y-(swwm_hudmargin+80+h));
|
||||
Vector2 pos = (int(ss.x/2),ss.y-(ymargin+80+h));
|
||||
Screen.Dim("Black",.5*alpha,int((pos.x-(cw+4)/2)*hs),int((pos.y-2)*hs),int((cw+4)*hs),int((h+4)*hs));
|
||||
Screen.DrawText(mSmallFont,Font.CR_FIRE,pos.x-w1/2,pos.y,wpn,DTA_VirtualWidthF,ss.x,DTA_VirtualHeightF,ss.y,DTA_KeepRatio,true,DTA_Alpha,alpha);
|
||||
for ( int i=0; i<cw; i+=6 )
|
||||
|
|
@ -543,21 +546,24 @@ Class SWWMDirectMessage : HUDMessageBase
|
|||
override void Draw( int bottom, int visibility )
|
||||
{
|
||||
if ( (seqnum < 0) || (seqnum > (seqcnt+1)) ) return;
|
||||
int ymargin;
|
||||
double alph = 1.;
|
||||
double fractic = System.GetTimeFrac();
|
||||
if ( seqnum == 0 ) alph = (fadein+fractic)/15.;
|
||||
else if ( seqnum == (seqcnt+1) ) alph = 1.-(fadeout+fractic)/30.;
|
||||
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);
|
||||
}
|
||||
origin = (int(ss.x-270)/2,swwm_hudmargin+70);
|
||||
origin = (int(ss.x-270)/2,ymargin+70);
|
||||
Screen.DrawTexture(MessageBox,false,origin.x,origin.y,DTA_VirtualWidthF,ss.x,DTA_VirtualHeightF,ss.y,DTA_KeepRatio,true,DTA_Alpha,alph);
|
||||
if ( (seqnum < 1) || (seqnum > seqcnt) ) return;
|
||||
DrawAvatar(fractic);
|
||||
|
|
@ -932,7 +938,7 @@ Class DSMapTitle : HUDMessageBase
|
|||
double wfact = clamp(ftics/double(ultics),0.,1.);
|
||||
int wsub = MySubStringWidth(txtsub);
|
||||
int w = MyStringWidth(txt);
|
||||
int capw = int(ss.x-250);
|
||||
int capw = int(min(ss.x,ss.y/.5625)-250); // limit to 16:9, avoids super-long text in ultrawide
|
||||
if ( (w < capw) && !hasnewline )
|
||||
{
|
||||
DrawUnderline(xx,yy+1,ss,(w+32)*wfact,alpha);
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue