remove a bit of duplication from UnitOrders

This commit is contained in:
Chris Forbes
2010-08-24 18:57:30 +12:00
parent d744cfe21b
commit e4b65256de

View File

@@ -16,6 +16,17 @@ namespace OpenRA.Network
{ {
static class UnitOrders static class UnitOrders
{ {
static Session.Client FindClientById(int id)
{
return Game.LobbyInfo.Clients.FirstOrDefault(c => c.Index == id);
}
static Player FindPlayerByClientId(int id)
{
/* todo: find the interactive player. */
return Game.world.players.Values.FirstOrDefault(p => p.ClientIndex == id);
}
public static void ProcessOrder( World world, int clientId, Order order ) public static void ProcessOrder( World world, int clientId, Order order )
{ {
// Drop exploiting orders // Drop exploiting orders
@@ -29,10 +40,10 @@ namespace OpenRA.Network
{ {
case "Chat": case "Chat":
{ {
var client = Game.LobbyInfo.Clients.FirstOrDefault(c => c.Index == clientId); var client = FindClientById(clientId);
if (client != null) if (client != null)
{ {
var player = world.players.Values.FirstOrDefault(p => p.Index == client.Index); var player = FindPlayerByClientId(clientId);
if (player != null && player.WinState == WinState.Lost) if (player != null && player.WinState == WinState.Lost)
Game.AddChatLine(client.Color1, client.Name + " (Dead)", order.TargetString); Game.AddChatLine(client.Color1, client.Name + " (Dead)", order.TargetString);
else else
@@ -42,10 +53,10 @@ namespace OpenRA.Network
} }
case "TeamChat": case "TeamChat":
{ {
var client = Game.LobbyInfo.Clients.FirstOrDefault(c => c.Index == clientId); var client = FindClientById(clientId);
if (client != null) if (client != null)
{ {
var player = world.players.Values.FirstOrDefault(p => p.Index == client.Index); var player = FindPlayerByClientId(clientId);
var display = (world.GameHasStarted) ? var display = (world.GameHasStarted) ?
player != null && (world.LocalPlayer != null && player.Stances[world.LocalPlayer] == Stance.Ally player != null && (world.LocalPlayer != null && player.Stances[world.LocalPlayer] == Stance.Ally
|| player.WinState == WinState.Lost) : || player.WinState == WinState.Lost) :