#106 player colors in chat
This commit is contained in:
@@ -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);
|
||||
}
|
||||
|
||||
@@ -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";
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user