#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.Text;
using IjwFramework.Types;
using System.Drawing;
namespace OpenRa.Game
{
@@ -10,7 +11,7 @@ namespace OpenRa.Game
{
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 bool isChatting = false;
@@ -19,7 +20,7 @@ namespace OpenRa.Game
if (isChatting && typing.Length > 0)
{
Game.controller.AddOrder(Order.Chat(Game.LocalPlayer, typing));
AddLine(Game.LocalPlayer.PlayerName, typing);
AddLine(Game.LocalPlayer, typing);
}
typing = "";
@@ -37,9 +38,26 @@ namespace OpenRa.Game
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);
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 );
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())
{
@@ -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);
renderer.DrawText(line.First, p, Color.Red);
renderer.DrawText(line.Second, p + new int2(size.X + 10, 0), Color.White);
var size = renderer.MeasureText(line.b);
renderer.DrawText(line.b, p, line.a);
renderer.DrawText(line.c, p + new int2(size.X + 10, 0), Color.White);
}
string currentTab = "Building";

View File

@@ -3,6 +3,7 @@ using System.Linq;
using IjwFramework.Types;
using OpenRa.Game.GameRules;
using OpenRa.Game.Traits;
using System.Drawing;
namespace OpenRa.Game
{
@@ -99,30 +100,30 @@ namespace OpenRa.Game
}
case "Chat":
{
Game.chat.AddLine(order.Player.PlayerName + ":", order.TargetString);
Game.chat.AddLine(order.Player, order.TargetString);
break;
}
case "ToggleReady":
{
Game.chat.AddLine(order.Player.PlayerName, "is " + order.TargetString );
Game.chat.AddLine(order.Player, "is " + order.TargetString );
break;
}
case "AssignPlayer":
{
Game.LocalPlayer = order.Player;
Game.chat.AddLine(order.Player.PlayerName, "is now YOU.");
Game.chat.AddLine(order.Player, "is now YOU.");
break;
}
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;
break;
}
case "SetRace":
{
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;
}
case "SetLag":
@@ -130,24 +131,24 @@ namespace OpenRa.Game
int lag = int.Parse(order.TargetString);
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;
}
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;
}
case "SetPalette":
{
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;
break;
}
case "StartGame":
{
Game.chat.AddLine("Server:", "The game has started.");
Game.chat.AddLine(Color.White, "Server", "The game has started.");
Game.orderManager.StartGame();
break;
}