#106 player colors in chat

This commit is contained in:
Chris Forbes
2009-12-05 11:10:08 +13:00
parent 165037f833
commit 7a7e0fff04
3 changed files with 37 additions and 18 deletions

View File

@@ -3,6 +3,7 @@ using System.Collections.Generic;
using System.Linq; using System.Linq;
using System.Text; using System.Text;
using IjwFramework.Types; using IjwFramework.Types;
using System.Drawing;
namespace OpenRa.Game namespace OpenRa.Game
{ {
@@ -10,7 +11,7 @@ namespace OpenRa.Game
{ {
const int logLength = 10; const int logLength = 10;
public List<Pair<string, string>> recentLines = new List<Pair<string, string>>(); public List<Tuple<Color, string, string>> recentLines = new List<Tuple<Color, string, string>>();
public string typing = ""; public string typing = "";
public bool isChatting = false; public bool isChatting = false;
@@ -19,7 +20,7 @@ namespace OpenRa.Game
if (isChatting && typing.Length > 0) if (isChatting && typing.Length > 0)
{ {
Game.controller.AddOrder(Order.Chat(Game.LocalPlayer, typing)); Game.controller.AddOrder(Order.Chat(Game.LocalPlayer, typing));
AddLine(Game.LocalPlayer.PlayerName, typing); AddLine(Game.LocalPlayer, typing);
} }
typing = ""; typing = "";
@@ -37,9 +38,26 @@ namespace OpenRa.Game
typing += c; typing += c;
} }
public void AddLine(string from, string text) static readonly Color[] paletteColors =
{ {
recentLines.Add(Pair.New(from, text)); Color.FromArgb(228, 200, 112),
Color.FromArgb(56, 72, 125),
Color.FromArgb(238, 0, 0),
Color.FromArgb(198,97,0),
Color.FromArgb(28,109,97),
Color.FromArgb(153,76,53),
Color.FromArgb(76,101,60),
Color.FromArgb(133,113,101),
};
public void AddLine(Player p, string text)
{
AddLine(paletteColors[p.Palette], p.PlayerName, text);
}
public void AddLine(Color c, string from, string text)
{
recentLines.Add(Tuple.New(c, from, text));
Game.PlaySound("rabeep1.aud", false); Game.PlaySound("rabeep1.aud", false);
while (recentLines.Count > logLength) recentLines.RemoveAt(0); while (recentLines.Count > logLength) recentLines.RemoveAt(0);
} }

View File

@@ -129,7 +129,7 @@ namespace OpenRa.Game
var chatpos = new int2( 400, Game.viewport.Height - 20 ); var chatpos = new int2( 400, Game.viewport.Height - 20 );
if (Game.chat.isChatting) if (Game.chat.isChatting)
RenderChatLine(Pair.New("Chat:", Game.chat.typing), chatpos); RenderChatLine(Tuple.New(Color.White, "Chat:", Game.chat.typing), chatpos);
foreach (var line in Game.chat.recentLines.AsEnumerable().Reverse()) foreach (var line in Game.chat.recentLines.AsEnumerable().Reverse())
{ {
@@ -138,11 +138,11 @@ namespace OpenRa.Game
} }
} }
void RenderChatLine(Pair<string, string> line, int2 p) void RenderChatLine(Tuple<Color, string, string> line, int2 p)
{ {
var size = renderer.MeasureText(line.First); var size = renderer.MeasureText(line.b);
renderer.DrawText(line.First, p, Color.Red); renderer.DrawText(line.b, p, line.a);
renderer.DrawText(line.Second, p + new int2(size.X + 10, 0), Color.White); renderer.DrawText(line.c, p + new int2(size.X + 10, 0), Color.White);
} }
string currentTab = "Building"; string currentTab = "Building";

View File

@@ -3,6 +3,7 @@ using System.Linq;
using IjwFramework.Types; using IjwFramework.Types;
using OpenRa.Game.GameRules; using OpenRa.Game.GameRules;
using OpenRa.Game.Traits; using OpenRa.Game.Traits;
using System.Drawing;
namespace OpenRa.Game namespace OpenRa.Game
{ {
@@ -99,30 +100,30 @@ namespace OpenRa.Game
} }
case "Chat": case "Chat":
{ {
Game.chat.AddLine(order.Player.PlayerName + ":", order.TargetString); Game.chat.AddLine(order.Player, order.TargetString);
break; break;
} }
case "ToggleReady": case "ToggleReady":
{ {
Game.chat.AddLine(order.Player.PlayerName, "is " + order.TargetString ); Game.chat.AddLine(order.Player, "is " + order.TargetString );
break; break;
} }
case "AssignPlayer": case "AssignPlayer":
{ {
Game.LocalPlayer = order.Player; Game.LocalPlayer = order.Player;
Game.chat.AddLine(order.Player.PlayerName, "is now YOU."); Game.chat.AddLine(order.Player, "is now YOU.");
break; break;
} }
case "SetName": case "SetName":
{ {
Game.chat.AddLine(order.Player.PlayerName, "is now known as " + order.TargetString); Game.chat.AddLine(order.Player, "is now known as " + order.TargetString);
order.Player.PlayerName = order.TargetString; order.Player.PlayerName = order.TargetString;
break; break;
} }
case "SetRace": case "SetRace":
{ {
order.Player.Race = order.TargetString == "0" ? Race.Soviet : Race.Allies; order.Player.Race = order.TargetString == "0" ? Race.Soviet : Race.Allies;
Game.chat.AddLine(order.Player.PlayerName, "is now playing {0}".F(order.Player.Race)); Game.chat.AddLine(order.Player, "is now playing {0}".F(order.Player.Race));
break; break;
} }
case "SetLag": case "SetLag":
@@ -130,24 +131,24 @@ namespace OpenRa.Game
int lag = int.Parse(order.TargetString); int lag = int.Parse(order.TargetString);
if (Game.orderManager.GameStarted) if (Game.orderManager.GameStarted)
{ {
Game.chat.AddLine("Server", "Failed to change lag to {0} frames".F(lag)); Game.chat.AddLine(Color.White, "Server", "Failed to change lag to {0} frames".F(lag));
return; return;
} }
Game.orderManager.FramesAhead = lag; Game.orderManager.FramesAhead = lag;
Game.chat.AddLine("Server", "Order lag is now {0} frames.".F(lag)); Game.chat.AddLine(Color.White, "Server", "Order lag is now {0} frames.".F(lag));
break; break;
} }
case "SetPalette": case "SetPalette":
{ {
int palette = int.Parse(order.TargetString); int palette = int.Parse(order.TargetString);
Game.chat.AddLine(order.Player.PlayerName, "has changed color to {0}".F(palette)); Game.chat.AddLine(order.Player, "has changed color to {0}".F(palette));
order.Player.Palette = palette; order.Player.Palette = palette;
break; break;
} }
case "StartGame": case "StartGame":
{ {
Game.chat.AddLine("Server:", "The game has started."); Game.chat.AddLine(Color.White, "Server", "The game has started.");
Game.orderManager.StartGame(); Game.orderManager.StartGame();
break; break;
} }