Arena
Class ArenaHUD

source: c:\runehov\Arena\Classes\ArenaHUD.uc
Core.Object
   |
   +--Engine.Actor
      |
      +--Engine.HUD
         |
         +--RuneI.RuneHUD
            |
            +--Arena.ArenaHUD
Direct Known Subclasses:None

class ArenaHUD
extends RuneI.RuneHUD

//============================================================================= // ArenaHUD. //=============================================================================
Variables
 float BackgroundFade
 Texture DisplayNumbers[10]


Function Summary
 
simulated
DrawCountdownTimer(Canvas Canvas)
 
simulated
DrawFragCount(Canvas Canvas, int x, int y)
 
simulated
DrawQueueNumbers(Canvas Canvas)
 
simulated
PostRender(Canvas Canvas)



Source Code


00001	//=============================================================================
00002	// ArenaHUD.
00003	//=============================================================================
00004	class ArenaHUD extends RuneHUD;
00005	
00006	#exec TEXTURE IMPORT NAME=TexZero FILE=Textures\0.pcx MIPS=OFF FLAGS=2
00007	#exec TEXTURE IMPORT NAME=TexOne FILE=Textures\1.pcx MIPS=OFF FLAGS=2
00008	#exec TEXTURE IMPORT NAME=TexTwo FILE=Textures\2.pcx MIPS=OFF FLAGS=2
00009	#exec TEXTURE IMPORT NAME=TexThree FILE=Textures\3.pcx MIPS=OFF FLAGS=2
00010	#exec TEXTURE IMPORT NAME=TexFour FILE=Textures\4.pcx MIPS=OFF FLAGS=2
00011	#exec TEXTURE IMPORT NAME=TexFive FILE=Textures\5.pcx MIPS=OFF FLAGS=2
00012	#exec TEXTURE IMPORT NAME=TexSix FILE=Textures\6.pcx MIPS=OFF FLAGS=2
00013	#exec TEXTURE IMPORT NAME=TexSeven FILE=Textures\7.pcx MIPS=OFF FLAGS=2
00014	#exec TEXTURE IMPORT NAME=TexEight FILE=Textures\8.pcx MIPS=OFF FLAGS=2
00015	#exec TEXTURE IMPORT NAME=TexNine FILE=Textures\9.pcx MIPS=OFF FLAGS=2
00016	
00017	var Texture DisplayNumbers[10];
00018	var float BackgroundFade;
00019	
00020	simulated function PostRender( canvas Canvas )
00021	{
00022		local PlayerPawn thePlayer;
00023	
00024		Super.PostRender(Canvas);
00025	
00026		thePlayer = PlayerPawn(Owner);
00027	
00028		if(thePlayer == None || HudMode == 0 || thePlayer.bShowMenu 
00029			|| thePlayer.bShowScores || Level.Pauser != "" || thePlayer.RendMap == 0)
00030		{
00031			return;
00032		}
00033	
00034		DrawCountdownTimer(Canvas);
00035		DrawQueueNumbers(Canvas);
00036	
00037		//Reset
00038		Canvas.Style = ERenderStyle.STY_Normal;		
00039		Canvas.DrawColor.R = 255;
00040		Canvas.DrawColor.G = 255;
00041		Canvas.DrawColor.B = 255;
00042	}
00043	
00044	simulated function DrawFragCount(canvas Canvas, int x, int y)
00045	{
00046		local float textwidth, textheight;
00047		local int score, loses;
00048		local string text;
00049		local PlayerPawn PlayerOwner;
00050	
00051		PlayerOwner = PlayerPawn(Owner);
00052	
00053		if ( PlayerOwner.PlayerReplicationInfo == None )
00054			return;
00055	
00056		score = int(PlayerOwner.PlayerReplicationInfo.Score);
00057		loses = int(PlayerOwner.PlayerReplicationInfo.Deaths);
00058	
00059	
00060		text = score$"-"$loses$" ";
00061		
00062		if(MyFonts != None)
00063			Canvas.Font = MyFonts.GetStaticLargeFont();
00064		else
00065			Canvas.Font = Canvas.LargeFont;
00066	
00067		Canvas.DrawTextRightJustify(text, X, Y);
00068	}
00069	
00070	simulated function DrawCountdownTimer(canvas Canvas)
00071	{
00072		local PlayerPawn PlayerOwner;
00073		local ArenaGameReplicationInfo ArenaRepInfo;
00074		local string strTime;
00075		local float XL, YL;
00076	
00077		PlayerOwner = PlayerPawn(Owner);
00078	
00079		if(PlayerOwner == None || PlayerOwner.GameReplicationInfo==None)
00080			return;
00081	
00082		if(PlayerOwner.PlayerReplicationInfo.Team == 255)
00083			return;
00084	
00085		ArenaRepInfo = ArenaGameReplicationInfo(PlayerOwner.GameReplicationInfo);
00086		if(ArenaRepInfo == None)
00087			return;
00088	
00089		if(!ArenaRepInfo.bDrawTimer)
00090			return;
00091	
00092		strTime = TwoDigitString(ArenaRepInfo.curTimer);
00093		if(ArenaRepInfo.curTimer <= 3)
00094			Canvas.SetColor(255, 0, 0);
00095		else
00096			Canvas.SetColor(255,255,255);
00097		
00098		Canvas.StrLen(strTime, XL, YL);
00099		Canvas.SetPos((Canvas.ClipX * 0.5) - (XL * 0.5), (Canvas.ClipY * 0.3) - (YL * 0.5));
00100		Canvas.DrawText(strTime, false);
00101	
00102		Canvas.SetColor(255,255,255);	
00103	}
00104	
00105	simulated function DrawQueueNumbers(canvas Canvas)
00106	{
00107		local RunePlayer P;
00108		local PlayerPawn PlayerOwner;
00109		local int SX,SY;
00110		local float scale, dist;
00111		local Texture Tex;
00112		local vector pos;
00113		local int i, dispNumber;
00114		local int onesDigit, tensDigit;
00115		local ArenaGameReplicationInfo ArenaRepInfo;
00116	
00117		PlayerOwner = PlayerPawn(Owner);
00118	
00119		if(PlayerOwner == None)
00120			return;
00121	
00122		//Never want to draw the numbers if Player is in the Arena...
00123		if(!PlayerOwner.Region.Zone.IsA('QueueZone'))
00124			return;
00125		
00126		Canvas.Style = ERenderStyle.STY_AlphaBlend;
00127		Canvas.AlphaScale = BackgroundFade;
00128	
00129		foreach AllActors(class'RunePlayer', P)
00130		{
00131			if(P.PlayerReplicationInfo == None || P.PlayerReplicationInfo.TeamID > 16)
00132				continue;
00133	
00134			dispNumber = P.PlayerReplicationInfo.TeamID;
00135	
00136			pos = P.Location + vect(0, 0, 1.3) * P.CollisionHeight;
00137			if(!FastTrace(pos, PlayerOwner.ViewLocation))
00138				continue;
00139	
00140			Canvas.TransformPoint(pos, SX, SY);
00141			if(SX > 0 && SX < Canvas.ClipX && SY > 0 && SY < Canvas.ClipY)
00142			{
00143				dist = VSize(P.Location - PlayerOwner.ViewLocation);
00144				if(dist > 600)
00145					continue;
00146	
00147				dist = FClamp(dist, 1, 600);
00148				scale = 500.0/dist * 0.75;
00149				scale = FClamp(scale, 0.01, 0.75);
00150	
00151				if(dispNumber > 9)
00152				{
00153					//Special Handling for multi-digits
00154					onesDigit = dispNumber % 10;
00155					tensDigit = dispNumber / 10;
00156					
00157					Canvas.SetPos(SX-(DisplayNumbers[0].USize*scale*0.5)*0.5, SY-DisplayNumbers[0].VSize*scale*0.5);
00158					Canvas.DrawIcon(DisplayNumbers[tensDigit], scale * 0.5);
00159					Canvas.SetPos(SX+(DisplayNumbers[0].USize*scale*0.5)*0.5, SY-DisplayNumbers[0].VSize*scale*0.5);
00160					Canvas.DrawIcon(DisplayNumbers[onesDigit], scale * 0.5);
00161				}
00162				else
00163				{
00164					Canvas.SetPos(SX-(DisplayNumbers[0].USize*scale*0.5)*0.5, SY-DisplayNumbers[0].VSize*scale*0.5);
00165					Canvas.DrawIcon(DisplayNumbers[dispNumber], scale * 0.5);
00166				}		
00167			}
00168		}
00169	
00170		Canvas.Style = ERenderStyle.STY_Normal;
00171		Canvas.AlphaScale = 1.0;
00172	
00173	}//end-function
00174	
00175	defaultproperties
00176	{
00177	    DisplayNumbers(0)=Texture'TexZero'
00178	    DisplayNumbers(1)=Texture'TexOne'
00179	    DisplayNumbers(2)=Texture'TexTwo'
00180	    DisplayNumbers(3)=Texture'TexThree'
00181	    DisplayNumbers(4)=Texture'TexFour'
00182	    DisplayNumbers(5)=Texture'TexFive'
00183	    DisplayNumbers(6)=Texture'TexSix'
00184	    DisplayNumbers(7)=Texture'TexSeven'
00185	    DisplayNumbers(8)=Texture'TexEight'
00186	    DisplayNumbers(9)=Texture'TexNine'
00187	    BackgroundFade=0.50
00188	}

End Source Code