convert Map.SpawnPoints to int2[]; tidy
This commit is contained in:
@@ -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
|
||||
{
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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));
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user