Core.Object | +--Engine.Actor | +--Engine.Info | +--Engine.ScoreBoard | +--UnrealShare.UnrealScoreBoard | +--UnrealShare.UnrealTeamScoreBoard
color
AltTeamColor[4]
int
PlayerCounts[4]
TeamColor[4]
string
TeamName[4]
void
DrawName(Canvas Canvas, int I, float XOffset, int LoopCount)
DrawPing(Canvas Canvas, int I, float XOffset, int LoopCount)
DrawScore(Canvas Canvas, int I, float XOffset, int LoopCount)
ShowScores(Canvas Canvas)
00001 //============================================================================= 00002 // UnrealTeamScoreBoard 00003 //============================================================================= 00004 class UnrealTeamScoreBoard extends UnrealScoreBoard; 00005 00006 var int PlayerCounts[4]; 00007 var localized string TeamName[4]; 00008 var() color TeamColor[4]; 00009 var() color AltTeamColor[4]; 00010 00011 function DrawName( canvas Canvas, int I, float XOffset, int LoopCount ) 00012 { 00013 local float YOffset; 00014 00015 switch (Teams[I]) 00016 { 00017 case 0: 00018 YOffset = Canvas.ClipY/4 + (LoopCount * 16); 00019 break; 00020 case 1: 00021 YOffset = Canvas.ClipY/4 + (LoopCount * 16); 00022 break; 00023 case 2: 00024 YOffset = Canvas.ClipY/4 + (PlayerCounts[0] * 16) + 48 + (LoopCount * 16); 00025 break; 00026 case 3: 00027 YOffset = Canvas.ClipY/4 + (PlayerCounts[1] * 16) + 48 + (LoopCount * 16); 00028 break; 00029 } 00030 00031 Canvas.SetPos(XOffset, YOffset); 00032 Canvas.DrawText(PlayerNames[I], false); 00033 } 00034 00035 function DrawPing( canvas Canvas, int I, float XOffset, int LoopCount ) 00036 { 00037 local float XL, YL; 00038 local float YOffset; 00039 00040 if (Level.Netmode == NM_Standalone) 00041 return; 00042 00043 switch (Teams[I]) 00044 { 00045 case 0: 00046 YOffset = Canvas.ClipY/4 + (LoopCount * 16); 00047 break; 00048 case 1: 00049 YOffset = Canvas.ClipY/4 + (LoopCount * 16); 00050 break; 00051 case 2: 00052 YOffset = Canvas.ClipY/4 + (PlayerCounts[0] * 16) + 48 + (LoopCount * 16); 00053 break; 00054 case 3: 00055 YOffset = Canvas.ClipY/4 + (PlayerCounts[1] * 16) + 48 + (LoopCount * 16); 00056 break; 00057 } 00058 00059 Canvas.StrLen(Pings[I], XL, YL); 00060 Canvas.SetPos(XOffset - XL - 8, YOffset); 00061 Canvas.Font = Font'TinyWhiteFont'; 00062 Canvas.DrawColor.R = 255; 00063 Canvas.DrawColor.G = 255; 00064 Canvas.DrawColor.B = 255; 00065 Canvas.DrawText(Pings[I], false); 00066 Canvas.Font = RegFont; 00067 } 00068 00069 function DrawScore( canvas Canvas, int I, float XOffset, int LoopCount ) 00070 { 00071 local float XL, YL; 00072 local float YOffset; 00073 00074 switch (Teams[I]) 00075 { 00076 case 0: 00077 XOffset = Canvas.ClipX/2 - Canvas.ClipX/8; 00078 YOffset = Canvas.ClipY/4 + (LoopCount * 16); 00079 break; 00080 case 1: 00081 XOffset = Canvas.ClipX - Canvas.ClipX/8; 00082 YOffset = Canvas.ClipY/4 + (LoopCount * 16); 00083 break; 00084 case 2: 00085 XOffset = Canvas.ClipX/2 - Canvas.ClipX/8; 00086 YOffset = Canvas.ClipY/4 + (PlayerCounts[0] * 16) + 48 + (LoopCount * 16); 00087 break; 00088 case 3: 00089 XOffset = Canvas.ClipX - Canvas.ClipX/8; 00090 YOffset = Canvas.ClipY/4 + (PlayerCounts[1] * 16) + 48 + (LoopCount * 16); 00091 break; 00092 } 00093 00094 Canvas.StrLen(Scores[I], XL, YL); 00095 XOffset -= XL; 00096 Canvas.SetPos(XOffset, YOffset); 00097 00098 if(Scores[I] >= 100.0) 00099 Canvas.CurX -= 6.0; 00100 if(Scores[I] >= 10.0) 00101 Canvas.CurX -= 6.0; 00102 if(Scores[I] < 0.0) 00103 Canvas.CurX -= 6.0; 00104 Canvas.DrawText(int(Scores[I]), false); 00105 } 00106 00107 function ShowScores( canvas Canvas ) 00108 { 00109 local PlayerReplicationInfo PRI; 00110 local int PlayerCount, I, XOffset; 00111 local int LoopCountTeam[4]; 00112 local float XL, YL, YOffset; 00113 local TeamInfo TI; 00114 00115 Canvas.Font = RegFont; 00116 00117 // Header 00118 DrawHeader(Canvas); 00119 00120 // Trailer 00121 DrawTrailer(Canvas); 00122 00123 for ( I=0; I<16; I++ ) 00124 Scores[I] = -500; 00125 00126 for ( I=0; I<4; I++ ) 00127 PlayerCounts[I] = 0; 00128 00129 PlayerCount = 0; 00130 foreach AllActors (class'PlayerReplicationInfo', PRI) 00131 if ( !PRI.bIsSpectator ) 00132 { 00133 if (PlayerCount >= 16) 00134 break; 00135 00136 PlayerNames[PlayerCount] = PRI.PlayerName; 00137 TeamNames[PlayerCount] = PRI.TeamName; 00138 Scores[PlayerCount] = PRI.Score; 00139 Teams[PlayerCount] = PRI.Team; 00140 Pings[PlayerCount] = PRI.Ping; 00141 00142 PlayerCount++; 00143 PlayerCounts[PRI.Team]++; 00144 } 00145 SortScores(PlayerCount); 00146 00147 for ( I=0; I<PlayerCount; I++ ) 00148 { 00149 if ( Teams[I] % 2 == 1 ) 00150 XOffset = Canvas.ClipX/8 + Canvas.ClipX/2; 00151 else 00152 XOffset = Canvas.ClipX/8; 00153 Canvas.DrawColor = AltTeamColor[Teams[I]]; 00154 00155 // Player name 00156 DrawName( Canvas, I, XOffset, LoopCountTeam[Teams[I]] ); 00157 00158 // Player ping 00159 DrawPing( Canvas, I, XOffset, LoopCountTeam[Teams[I]] ); 00160 00161 // Player score 00162 Canvas.DrawColor = TeamColor[Teams[I]]; 00163 DrawScore( Canvas, I, XOffset, LoopCountTeam[Teams[I]] ); 00164 00165 LoopCountTeam[Teams[I]]++; 00166 } 00167 00168 foreach AllActors(class'TeamInfo', TI) 00169 { 00170 if (PlayerCounts[TI.TeamIndex] > 0) 00171 { 00172 if ( TI.TeamIndex % 2 == 1 ) 00173 XOffset = Canvas.ClipX/8 + Canvas.ClipX/2; 00174 else 00175 XOffset = Canvas.ClipX/8; 00176 if ( TI.TeamIndex > 1 ) 00177 { 00178 if (PlayerCounts[TI.TeamIndex - 2] > 0) 00179 YOffset = Canvas.ClipY/4 + PlayerCounts[TI.TeamIndex - 2] * 16 + 32; 00180 else 00181 YOffset = Canvas.ClipY/4 - 16; 00182 } 00183 Canvas.DrawColor = TeamColor[TI.TeamIndex]; 00184 Canvas.SetPos(XOffset, Canvas.ClipY/4 - 16); 00185 Canvas.StrLen(TeamName[TI.TeamIndex], XL, YL); 00186 Canvas.DrawText(TeamName[TI.TeamIndex], false); 00187 Canvas.SetPos(XOffset + 96, Canvas.ClipY/4 - 16); 00188 Canvas.DrawText(int(TI.Score), false); 00189 } 00190 } 00191 00192 Canvas.DrawColor.R = 255; 00193 Canvas.DrawColor.G = 255; 00194 Canvas.DrawColor.B = 255; 00195 } 00196 00197 defaultproperties 00198 { 00199 TeamName(0)="Red Team: " 00200 TeamName(1)="Blue Team: " 00201 TeamName(2)="Green Team: " 00202 TeamName(3)="Gold Team: " 00203 TeamColor(0)=(R=255) 00204 TeamColor(1)=(G=128,B=255) 00205 TeamColor(2)=(G=255) 00206 TeamColor(3)=(R=255,G=255) 00207 AltTeamColor(0)=(R=200) 00208 AltTeamColor(1)=(G=94,B=187) 00209 AltTeamColor(2)=(G=128) 00210 AltTeamColor(3)=(R=255,G=255,B=128) 00211 }