UnrealShare
Class UnrealTeamScoreBoard

source: e:\games\UnrealTournament\UnrealShare\Classes\UnrealTeamScoreBoard.uc
Core.Object
   |
   +--Engine.Actor
      |
      +--Engine.Info
         |
         +--Engine.ScoreBoard
            |
            +--UnrealShare.UnrealScoreBoard
               |
               +--UnrealShare.UnrealTeamScoreBoard
Direct Known Subclasses:None

class UnrealTeamScoreBoard
extends UnrealShare.UnrealScoreBoard

//============================================================================= // UnrealTeamScoreBoard //=============================================================================
Variables
 color AltTeamColor[4]
 int PlayerCounts[4]
 color TeamColor[4]
 string TeamName[4]


Function Summary
 void DrawName(Canvas Canvas, int I, float XOffset, int LoopCount)
 void DrawPing(Canvas Canvas, int I, float XOffset, int LoopCount)
 void DrawScore(Canvas Canvas, int I, float XOffset, int LoopCount)
 void ShowScores(Canvas Canvas)



Source Code


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	}

End Source Code