Core.Object | +--Engine.Actor | +--Engine.HUD | +--RuneI.RuneHUD | +--Arena.ArenaHUD
float
BackgroundFade
Texture
DisplayNumbers[10]
simulated
DrawCountdownTimer(Canvas Canvas)
DrawFragCount(Canvas Canvas, int x, int y)
DrawQueueNumbers(Canvas Canvas)
PostRender(Canvas Canvas)
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 }