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;
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;
@@ -420,7 +427,8 @@ namespace OpenRA
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
{

View File

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

View File

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

View File

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

View File

@@ -381,7 +381,7 @@ namespace OpenRA.Mods.RA.Server
return true;
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]);
return true;

View File

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

View File

@@ -97,7 +97,7 @@ namespace OpenRA.Mods.RA.Widgets.Logic
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);
}
@@ -121,10 +121,11 @@ namespace OpenRA.Mods.RA.Widgets.Logic
public static Dictionary<int2, Color> GetSpawnColors(OrderManager orderManager, Map map)
{
var spawns = map.GetSpawnPoints();
return orderManager.LobbyInfo.Clients
.Where( c => c.SpawnPoint != 0 )
.ToDictionary(
c => Map.SpawnPoints.ElementAt( c.SpawnPoint - 1 ),
c => spawns[c.SpawnPoint - 1],
c => c.ColorRamp.GetColor(0));
}
}