convert Map.SpawnPoints to int2[]; tidy

This commit is contained in:
Chris Forbes
2011-10-18 20:34:00 +13:00
parent 0f7a744ef7
commit 59fdceb4fd
7 changed files with 23 additions and 14 deletions

View File

@@ -41,7 +41,14 @@ namespace OpenRA
[FieldLoader.Ignore] public Lazy<Dictionary<string, ActorReference>> Actors; [FieldLoader.Ignore] public Lazy<Dictionary<string, ActorReference>> Actors;
public int PlayerCount { get { return Players.Count(p => p.Value.Playable); } } public int PlayerCount { get { return Players.Count(p => p.Value.Playable); } }
public IEnumerable<int2> SpawnPoints { get { return Actors.Value.Values.Where(a => a.Type == "mpspawn").Select(a => a.InitDict.Get<LocationInit>().value); } }
public int2[] GetSpawnPoints()
{
return Actors.Value.Values
.Where(a => a.Type == "mpspawn")
.Select(a => a.InitDict.Get<LocationInit>().value)
.ToArray();
}
public Rectangle Bounds; public Rectangle Bounds;
@@ -420,7 +427,8 @@ namespace OpenRA
NonCombatant = true NonCombatant = true
}); });
for (int index = 0; index < SpawnPoints.Count(); index++) var numSpawns = GetSpawnPoints().Length;
for (var index = 0; index < numSpawns; index++)
{ {
var p = new PlayerReference var p = new PlayerReference
{ {

View File

@@ -91,7 +91,7 @@ namespace OpenRA.Widgets
// Overlay spawnpoints // Overlay spawnpoints
var colors = SpawnColors(); var colors = SpawnColors();
foreach (var p in map.SpawnPoints) foreach (var p in map.GetSpawnPoints())
{ {
var owned = colors.ContainsKey(p); var owned = colors.ContainsKey(p);
var pos = ConvertToPreview(map, p); var pos = ConvertToPreview(map, p);

View File

@@ -123,7 +123,7 @@ namespace OpenRA.Mods.Cnc.Widgets.Logic
|| orderManager.LocalClient.State == Session.ClientState.Ready) || orderManager.LocalClient.State == Session.ClientState.Ready)
return; return;
var p = map.SpawnPoints var p = map.GetSpawnPoints()
.Select((sp, i) => Pair.New(mapPreview.ConvertToPreview(map, sp), i)) .Select((sp, i) => Pair.New(mapPreview.ConvertToPreview(map, sp), i))
.Where(a => (a.First - mi.Location).LengthSquared < 64) .Where(a => (a.First - mi.Location).LengthSquared < 64)
.Select(a => a.Second + 1) .Select(a => a.Second + 1)
@@ -278,8 +278,8 @@ namespace OpenRA.Mods.Cnc.Widgets.Logic
Func<int, ScrollItemWidget, ScrollItemWidget> setupItem = (ii, itemTemplate) => Func<int, ScrollItemWidget, ScrollItemWidget> setupItem = (ii, itemTemplate) =>
{ {
var item = ScrollItemWidget.Setup(itemTemplate, var item = ScrollItemWidget.Setup(itemTemplate,
() => client.SpawnPoint == ii, () => client.SpawnPoint == ii,
() => orderManager.IssueOrder(Order.Command("spawn {0} {1}".F(client.Index, ii)))); () => orderManager.IssueOrder(Order.Command("spawn {0} {1}".F(client.Index, ii))));
item.GetWidget<LabelWidget>("LABEL").GetText = () => ii == 0 ? "-" : ii.ToString(); item.GetWidget<LabelWidget>("LABEL").GetText = () => ii == 0 ? "-" : ii.ToString();
return item; return item;
}; };
@@ -288,7 +288,7 @@ namespace OpenRA.Mods.Cnc.Widgets.Logic
.Where(c => c.SpawnPoint != 0 && c.SpawnPoint != client.SpawnPoint && c.Slot != null) .Where(c => c.SpawnPoint != 0 && c.SpawnPoint != client.SpawnPoint && c.Slot != null)
.Select(c => c.SpawnPoint).ToList(); .Select(c => c.SpawnPoint).ToList();
var options = Graphics.Util.MakeArray(Map.SpawnPoints.Count() + 1, i => i).Except(taken).ToList(); var options = Graphics.Util.MakeArray(Map.GetSpawnPoints().Length + 1, i => i).Except(taken).ToList();
dropdown.ShowDropDown("TEAM_DROPDOWN_TEMPLATE", 150, options, setupItem); dropdown.ShowDropDown("TEAM_DROPDOWN_TEMPLATE", 150, options, setupItem);
} }

View File

@@ -29,8 +29,8 @@ namespace OpenRA.Mods.RA
public void WorldLoaded(World world) public void WorldLoaded(World world)
{ {
var taken = world.LobbyInfo.Clients.Where(c => c.SpawnPoint != 0 && c.Slot != null) var taken = world.LobbyInfo.Clients.Where(c => c.SpawnPoint != 0 && c.Slot != null)
.Select(c => world.Map.SpawnPoints.ElementAt(c.SpawnPoint - 1)).ToList(); .Select(c => world.Map.GetSpawnPoints()[c.SpawnPoint-1]).ToList();
var available = world.Map.SpawnPoints.Except(taken).ToList(); var available = world.Map.GetSpawnPoints().Except(taken).ToList();
// Set spawn // Set spawn
foreach (var kv in world.LobbyInfo.Slots) foreach (var kv in world.LobbyInfo.Slots)
@@ -41,7 +41,7 @@ namespace OpenRA.Mods.RA
var client = world.LobbyInfo.ClientInSlot(kv.Key); var client = world.LobbyInfo.ClientInSlot(kv.Key);
var spid = (client == null || client.SpawnPoint == 0) var spid = (client == null || client.SpawnPoint == 0)
? ChooseSpawnPoint(world, available, taken) ? ChooseSpawnPoint(world, available, taken)
: world.Map.SpawnPoints.ElementAt(client.SpawnPoint - 1); : world.Map.GetSpawnPoints()[client.SpawnPoint-1];
Start.Add(player, spid); Start.Add(player, spid);
} }

View File

@@ -381,7 +381,7 @@ namespace OpenRA.Mods.RA.Server
return true; return true;
int spawnPoint; int spawnPoint;
if (!int.TryParse(parts[1], out spawnPoint) || spawnPoint < 0 || spawnPoint > server.Map.SpawnPoints.Count()) if (!int.TryParse(parts[1], out spawnPoint) || spawnPoint < 0 || spawnPoint > server.Map.GetSpawnPoints().Length)
{ {
Log.Write("server", "Invalid spawn point: {0}", parts[1]); Log.Write("server", "Invalid spawn point: {0}", parts[1]);
return true; return true;

View File

@@ -70,7 +70,7 @@ namespace OpenRA.Mods.RA.Widgets.Logic
|| orderManager.LocalClient.State == Session.ClientState.Ready) || orderManager.LocalClient.State == Session.ClientState.Ready)
return; return;
var p = map.SpawnPoints var p = map.GetSpawnPoints()
.Select((sp, i) => Pair.New(mapPreview.ConvertToPreview(map, sp), i)) .Select((sp, i) => Pair.New(mapPreview.ConvertToPreview(map, sp), i))
.Where(a => (a.First - mi.Location).LengthSquared < 64) .Where(a => (a.First - mi.Location).LengthSquared < 64)
.Select(a => a.Second + 1) .Select(a => a.Second + 1)

View File

@@ -97,7 +97,7 @@ namespace OpenRA.Mods.RA.Widgets.Logic
return item; return item;
}; };
var options = Graphics.Util.MakeArray(map.SpawnPoints.Count() + 1, i => i).ToList(); var options = Graphics.Util.MakeArray(map.GetSpawnPoints().Length + 1, i => i).ToList();
dropdown.ShowDropDown("TEAM_DROPDOWN_TEMPLATE", 150, options, setupItem); dropdown.ShowDropDown("TEAM_DROPDOWN_TEMPLATE", 150, options, setupItem);
} }
@@ -121,10 +121,11 @@ namespace OpenRA.Mods.RA.Widgets.Logic
public static Dictionary<int2, Color> GetSpawnColors(OrderManager orderManager, Map map) public static Dictionary<int2, Color> GetSpawnColors(OrderManager orderManager, Map map)
{ {
var spawns = map.GetSpawnPoints();
return orderManager.LobbyInfo.Clients return orderManager.LobbyInfo.Clients
.Where( c => c.SpawnPoint != 0 ) .Where( c => c.SpawnPoint != 0 )
.ToDictionary( .ToDictionary(
c => Map.SpawnPoints.ElementAt( c.SpawnPoint - 1 ), c => spawns[c.SpawnPoint - 1],
c => c.ColorRamp.GetColor(0)); c => c.ColorRamp.GetColor(0));
} }
} }