Remove direct access to MapPreview.Rules.

This commit is contained in:
Paul Chote
2021-04-04 16:40:46 +01:00
committed by teinarss
parent 53e6d974f0
commit abee274f88
22 changed files with 57 additions and 54 deletions

View File

@@ -357,7 +357,7 @@ namespace OpenRA.Mods.Common.Server
}
var botType = parts[2];
var botInfo = server.Map.Rules.Actors[SystemActors.Player].TraitInfos<IBotInfo>()
var botInfo = server.Map.PlayerActorInfo.TraitInfos<IBotInfo>()
.FirstOrDefault(b => b.Type == botType);
if (botInfo == null)
@@ -386,7 +386,7 @@ namespace OpenRA.Mods.Common.Server
// Pick a random color for the bot
var validator = server.ModData.Manifest.Get<ColorValidator>();
var terrainColors = server.Map.Rules.TerrainInfo.RestrictedPlayerColors;
var terrainColors = server.ModData.DefaultTerrainInfo[server.Map.TileSet].RestrictedPlayerColors;
var playerColors = server.LobbyInfo.Clients.Select(c => c.Color)
.Concat(server.Map.Players.Players.Values.Select(p => p.Color));
bot.Color = bot.PreferredColor = validator.RandomPresetColor(server.Random, terrainColors, playerColors);
@@ -437,10 +437,10 @@ namespace OpenRA.Mods.Common.Server
.Where(ss => ss != null)
.ToDictionary(ss => ss.PlayerReference, ss => ss);
LoadMapSettings(server, server.LobbyInfo.GlobalSettings, server.Map.Rules);
LoadMapSettings(server, server.LobbyInfo.GlobalSettings, server.Map);
// Reset client states
var selectableFactions = server.Map.Rules.Actors[SystemActors.World].TraitInfos<FactionInfo>()
var selectableFactions = server.Map.WorldActorInfo.TraitInfos<FactionInfo>()
.Where(f => f.Selectable)
.Select(f => f.InternalName)
.ToList();
@@ -457,7 +457,7 @@ namespace OpenRA.Mods.Common.Server
// - Players who now lack a slot are made observers
// - Bots who now lack a slot are dropped
// - Bots who are not defined in the map rules are dropped
var botTypes = server.Map.Rules.Actors[SystemActors.Player].TraitInfos<IBotInfo>().Select(t => t.Type);
var botTypes = server.Map.PlayerActorInfo.TraitInfos<IBotInfo>().Select(t => t.Type);
var slots = server.LobbyInfo.Slots.Keys.ToArray();
var i = 0;
foreach (var os in oldSlots)
@@ -534,9 +534,9 @@ namespace OpenRA.Mods.Common.Server
return true;
}
var allOptions = server.Map.Rules.Actors[SystemActors.Player].TraitInfos<ILobbyOptions>()
.Concat(server.Map.Rules.Actors[SystemActors.World].TraitInfos<ILobbyOptions>())
.SelectMany(t => t.LobbyOptions(server.Map.Rules));
var allOptions = server.Map.PlayerActorInfo.TraitInfos<ILobbyOptions>()
.Concat(server.Map.WorldActorInfo.TraitInfos<ILobbyOptions>())
.SelectMany(t => t.LobbyOptions(server.Map));
// Overwrite keys with duplicate ids
var options = new Dictionary<string, LobbyOption>();
@@ -775,7 +775,7 @@ namespace OpenRA.Mods.Common.Server
if (server.LobbyInfo.Slots[targetClient.Slot].LockFaction)
return true;
var factions = server.Map.Rules.Actors[SystemActors.World].TraitInfos<FactionInfo>()
var factions = server.Map.WorldActorInfo.TraitInfos<FactionInfo>()
.Where(f => f.Selectable).Select(f => f.InternalName);
if (!factions.Contains(parts[1]))
@@ -1018,7 +1018,7 @@ namespace OpenRA.Mods.Common.Server
.Where(s => s != null)
.ToDictionary(s => s.PlayerReference, s => s);
LoadMapSettings(server, server.LobbyInfo.GlobalSettings, server.Map.Rules);
LoadMapSettings(server, server.LobbyInfo.GlobalSettings, server.Map);
}
}
@@ -1041,13 +1041,13 @@ namespace OpenRA.Mods.Common.Server
};
}
public static void LoadMapSettings(S server, Session.Global gs, Ruleset rules)
public static void LoadMapSettings(S server, Session.Global gs, MapPreview map)
{
lock (server.LobbyInfo)
{
var options = rules.Actors[SystemActors.Player].TraitInfos<ILobbyOptions>()
.Concat(rules.Actors[SystemActors.World].TraitInfos<ILobbyOptions>())
.SelectMany(t => t.LobbyOptions(rules));
var options = map.PlayerActorInfo.TraitInfos<ILobbyOptions>()
.Concat(map.WorldActorInfo.TraitInfos<ILobbyOptions>())
.SelectMany(t => t.LobbyOptions(map));
foreach (var o in options)
{
@@ -1090,7 +1090,7 @@ namespace OpenRA.Mods.Common.Server
server.SendOrderTo(connectionToEcho, "Message", message);
};
var terrainColors = server.Map.Rules.TerrainInfo.RestrictedPlayerColors;
var terrainColors = server.ModData.DefaultTerrainInfo[server.Map.TileSet].RestrictedPlayerColors;
var playerColors = server.LobbyInfo.Clients.Where(c => c.Index != playerIndex).Select(c => c.Color)
.Concat(server.Map.Players.Players.Values.Select(p => p.Color)).ToList();
@@ -1100,7 +1100,7 @@ namespace OpenRA.Mods.Common.Server
static string MissionBriefingOrDefault(S server)
{
var missionData = server.Map.Rules.Actors[SystemActors.World].TraitInfoOrDefault<MissionDataInfo>();
var missionData = server.Map.WorldActorInfo.TraitInfoOrDefault<MissionDataInfo>();
if (missionData != null && !string.IsNullOrEmpty(missionData.Briefing))
return missionData.Briefing.Replace("\\n", "\n");