Store last color setting; hook server join in a cleaner way

This commit is contained in:
Paul Chote
2010-07-17 00:21:11 +12:00
parent 8b3a65717e
commit 5b333f4bba
3 changed files with 29 additions and 6 deletions

View File

@@ -56,6 +56,9 @@ namespace OpenRA.GameRules
public string LastServer = "localhost:1234";
public string Replay = null;
public string PlayerName = "Newbie";
public Color PlayerColor1 = Color.FromArgb(255,160,238);
public Color PlayerColor2 = Color.FromArgb(68,0,56);
public string[] InitialMods = { "ra" };
// Server settings

View File

@@ -22,6 +22,7 @@ using System.Collections.Generic;
using System.Drawing;
using System.Linq;
using OpenRA.FileFormats;
using OpenRA.Network;
using OpenRA.Traits;
namespace OpenRA.Widgets.Delegates
@@ -104,7 +105,7 @@ namespace OpenRA.Widgets.Delegates
"lockteams {0}".F(!Game.LobbyInfo.GlobalSettings.LockTeams)));
return true;
};
Game.LobbyInfoChanged += JoinedServer;
Game.LobbyInfoChanged += UpdatePlayerList;
Game.AddChatLine += lobby.GetWidget<ChatDisplayWidget>("CHAT_DISPLAY").AddLine;
@@ -158,6 +159,10 @@ namespace OpenRA.Widgets.Delegates
{
var c1 = ColorFromHSL(hf, sf, lf);
var c2 = ColorFromHSL(hf, sf, r*lf);
Game.Settings.PlayerColor1 = c1;
Game.Settings.PlayerColor2 = c2;
Game.Settings.Save();
Game.IssueOrder(Order.Command("color {0},{1},{2},{3},{4},{5}".F(c1.R,c1.G,c1.B,c2.R,c2.G,c2.B)));
}
@@ -205,6 +210,24 @@ namespace OpenRA.Widgets.Delegates
Map = Game.AvailableMaps[MapUid];
}
bool hasJoined = false;
void JoinedServer()
{
if (hasJoined)
return;
hasJoined = true;
if (Game.LocalClient.Name != Game.Settings.PlayerName)
Game.IssueOrder(Order.Command("name " + Game.Settings.PlayerName));
if (Game.LocalClient.Color1 != Game.Settings.PlayerColor1 || Game.LocalClient.Color2 != Game.Settings.PlayerColor2)
{
var c1 = Game.Settings.PlayerColor1;
var c2 = Game.Settings.PlayerColor2;
Game.IssueOrder(Order.Command("color {0},{1},{2},{3},{4},{5}".F(c1.R,c1.G,c1.B,c2.R,c2.G,c2.B)));
}
}
void UpdatePlayerList()
{
// This causes problems for people who are in the process of editing their names (the widgets vanish from beneath them)

View File

@@ -55,9 +55,6 @@ namespace OpenRA
public void SetLocalPlayer(int index)
{
localPlayerIndex = index;
if (Game.LobbyInfo.Clients.Count > 0 && !string.IsNullOrEmpty(Game.Settings.PlayerName)
&& Game.LobbyInfo.Clients[index].Name != Game.Settings.PlayerName)
Game.IssueOrder(Order.Command("name " + Game.Settings.PlayerName));
}
public readonly Actor WorldActor;