ship out ChooseInitialStance from Game

This commit is contained in:
Chris Forbes
2010-08-23 18:34:47 +12:00
parent 09d9396123
commit 3880326787
2 changed files with 25 additions and 24 deletions

View File

@@ -6,10 +6,11 @@
* as published by the Free Software Foundation. For more information,
* see LICENSE.
*/
#endregion
using System.Collections.Generic;
using System.Linq;
#endregion
using System.Collections.Generic;
using System.Linq;
using OpenRA.Network;
using OpenRA.Traits;
namespace OpenRA.Mods.RA
@@ -32,8 +33,27 @@ namespace OpenRA.Mods.RA
foreach (var q in w.players.Values)
{
if (!p.Stances.ContainsKey(q))
p.Stances[q] = Game.ChooseInitialStance(p, q);
p.Stances[q] = ChooseInitialStance(p, q);
}
}
static Stance ChooseInitialStance(Player p, Player q)
{
if (p == q) return Stance.Ally;
// Hack: All map players are neutral wrt everyone else
if (p.Index < 0 || q.Index < 0) return Stance.Neutral;
var pc = GetClientForPlayer(p);
var qc = GetClientForPlayer(q);
return pc.Team != 0 && pc.Team == qc.Team
? Stance.Ally : Stance.Enemy;
}
static Session.Client GetClientForPlayer(Player p)
{
return Game.LobbyInfo.Clients.Single(c => c.Index == p.Index);
}
}
}