fix another minor bug in StartGame() wrt random vs most-distant spawnpoint choice for first auto player

This commit is contained in:
Chris Forbes
2010-02-13 21:26:38 +13:00
parent 3462607e9a
commit 7c1b753536

View File

@@ -225,11 +225,11 @@ namespace OpenRa
public static void StartGame() public static void StartGame()
{ {
Game.chat.Reset(); Game.chat.Reset();
var available = world.Map.SpawnPoints.ToList();
var taken = new List<int2>(); var taken = LobbyInfo.Clients.Where(c => c.SpawnPoint != 0)
.Select(c => world.Map.SpawnPoints.ElementAt(c.SpawnPoint - 1)).ToList();
available.RemoveAll( p => LobbyInfo.Clients.Any( c => c.SpawnPoint != 0
&& world.Map.SpawnPoints.ElementAt( c.SpawnPoint - 1 ) == p )); var available = world.Map.SpawnPoints.Except(taken).ToList();
foreach (var client in LobbyInfo.Clients) foreach (var client in LobbyInfo.Clients)
{ {
@@ -237,7 +237,8 @@ namespace OpenRa
? ChooseSpawnPoint(available, taken) ? ChooseSpawnPoint(available, taken)
: world.Map.SpawnPoints.ElementAt(client.SpawnPoint - 1); : world.Map.SpawnPoints.ElementAt(client.SpawnPoint - 1);
foreach (var ssu in world.players[client.Index].PlayerActor.traits.WithInterface<ISpawnStartingUnits>()) foreach (var ssu in world.players[client.Index].PlayerActor
.traits.WithInterface<ISpawnStartingUnits>())
ssu.SpawnStartingUnits(world.players[client.Index], sp); ssu.SpawnStartingUnits(world.players[client.Index], sp);
} }