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

@@ -62,7 +62,7 @@ namespace OpenRA.Mods.Common.Traits
[Desc("Enable the path debug overlay by default.")]
public readonly bool PathDebug;
IEnumerable<LobbyOption> ILobbyOptions.LobbyOptions(Ruleset rules)
IEnumerable<LobbyOption> ILobbyOptions.LobbyOptions(MapPreview map)
{
yield return new LobbyBooleanOption("cheats", CheckboxLabel, CheckboxDescription, CheckboxVisible, CheckboxDisplayOrder, CheckboxEnabled, CheckboxLocked);
}

View File

@@ -56,7 +56,7 @@ namespace OpenRA.Mods.Common.Traits
[Desc("Monetery value of each resource type.", "Dictionary of [resource type]: [value per unit].")]
public readonly Dictionary<string, int> ResourceValues = new Dictionary<string, int>();
IEnumerable<LobbyOption> ILobbyOptions.LobbyOptions(Ruleset rules)
IEnumerable<LobbyOption> ILobbyOptions.LobbyOptions(MapPreview map)
{
var startingCash = SelectableCash.ToDictionary(c => c.ToString(), c => "$" + c.ToString());

View File

@@ -74,7 +74,7 @@ namespace OpenRA.Mods.Common.Traits
throw new YamlException("TimeLimitDefault must be a value from TimeLimitOptions");
}
IEnumerable<LobbyOption> ILobbyOptions.LobbyOptions(Ruleset rules)
IEnumerable<LobbyOption> ILobbyOptions.LobbyOptions(MapPreview map)
{
var timelimits = TimeLimitOptions.ToDictionary(c => c.ToString(), c =>
{

View File

@@ -77,7 +77,7 @@ namespace OpenRA.Mods.Common.Traits
[Desc("Spawn and remove the plane this far outside the map.")]
public readonly WDist Cordon = new WDist(5120);
IEnumerable<LobbyOption> ILobbyOptions.LobbyOptions(Ruleset rules)
IEnumerable<LobbyOption> ILobbyOptions.LobbyOptions(MapPreview map)
{
yield return new LobbyBooleanOption("crates", CheckboxLabel, CheckboxDescription, CheckboxVisible, CheckboxDisplayOrder, CheckboxEnabled, CheckboxLocked);
}

View File

@@ -28,9 +28,8 @@ namespace OpenRA.Mods.Common.Traits
/// </summary>
void ICreatePlayersInfo.CreateServerPlayers(MapPreview map, Session lobbyInfo, List<GameInformation.Player> players, MersenneTwister playerRandom)
{
var worldInfo = map.Rules.Actors[SystemActors.World];
var factions = worldInfo.TraitInfos<FactionInfo>().ToArray();
var assignSpawnLocations = worldInfo.TraitInfoOrDefault<IAssignSpawnPointsInfo>();
var factions = map.WorldActorInfo.TraitInfos<FactionInfo>().ToArray();
var assignSpawnLocations = map.WorldActorInfo.TraitInfoOrDefault<IAssignSpawnPointsInfo>();
var spawnState = assignSpawnLocations?.InitializeState(map, lobbyInfo);
// Create the unplayable map players -- neutral, shellmap, scripted, etc.
@@ -42,7 +41,7 @@ namespace OpenRA.Mods.Common.Traits
}
// Create the regular playable players.
var bots = map.Rules.Actors[SystemActors.Player].TraitInfos<IBotInfo>().ToArray();
var bots = map.PlayerActorInfo.TraitInfos<IBotInfo>().ToArray();
foreach (var kv in lobbyInfo.Slots)
{

View File

@@ -47,7 +47,7 @@ namespace OpenRA.Mods.Common.Traits
IEnumerable<string> ITechTreePrerequisiteInfo.Prerequisites(ActorInfo info) { return Prerequisites; }
IEnumerable<LobbyOption> ILobbyOptions.LobbyOptions(Ruleset rules)
IEnumerable<LobbyOption> ILobbyOptions.LobbyOptions(MapPreview map)
{
yield return new LobbyBooleanOption(ID, Label, Description,
Visible, DisplayOrder, Enabled, Locked);

View File

@@ -54,7 +54,7 @@ namespace OpenRA.Mods.Common.Traits
[Desc("Display order for the build radius checkbox in the lobby.")]
public readonly int BuildRadiusCheckboxDisplayOrder = 0;
IEnumerable<LobbyOption> ILobbyOptions.LobbyOptions(Ruleset rules)
IEnumerable<LobbyOption> ILobbyOptions.LobbyOptions(MapPreview map)
{
yield return new LobbyBooleanOption("allybuild", AllyBuildRadiusCheckboxLabel, AllyBuildRadiusCheckboxDescription,
AllyBuildRadiusCheckboxVisible, AllyBuildRadiusCheckboxDisplayOrder, AllyBuildRadiusCheckboxEnabled, AllyBuildRadiusCheckboxLocked);

View File

@@ -36,7 +36,7 @@ namespace OpenRA.Mods.Common.Traits
[Desc("Display order for the creeps checkbox in the lobby.")]
public readonly int CheckboxDisplayOrder = 0;
IEnumerable<LobbyOption> ILobbyOptions.LobbyOptions(Ruleset rules)
IEnumerable<LobbyOption> ILobbyOptions.LobbyOptions(MapPreview map)
{
yield return new LobbyBooleanOption("creeps", CheckboxLabel, CheckboxDescription, CheckboxVisible, CheckboxDisplayOrder, CheckboxEnabled, CheckboxLocked);
}

View File

@@ -73,12 +73,12 @@ namespace OpenRA.Mods.Common.Traits
[Desc("Display order for the game speed option in the lobby.")]
public readonly int GameSpeedDropdownDisplayOrder = 0;
IEnumerable<LobbyOption> ILobbyOptions.LobbyOptions(Ruleset rules)
IEnumerable<LobbyOption> ILobbyOptions.LobbyOptions(MapPreview map)
{
yield return new LobbyBooleanOption("shortgame", ShortGameCheckboxLabel, ShortGameCheckboxDescription,
ShortGameCheckboxVisible, ShortGameCheckboxDisplayOrder, ShortGameCheckboxEnabled, ShortGameCheckboxLocked);
var techLevels = rules.Actors[SystemActors.Player].TraitInfos<ProvidesTechPrerequisiteInfo>()
var techLevels = map.PlayerActorInfo.TraitInfos<ProvidesTechPrerequisiteInfo>()
.ToDictionary(t => t.Id, t => t.Name);
if (techLevels.Any())

View File

@@ -45,7 +45,7 @@ namespace OpenRA.Mods.Common.Traits
public override object Create(ActorInitializer init) { return new MapStartingLocations(this); }
IEnumerable<LobbyOption> ILobbyOptions.LobbyOptions(Ruleset rules)
IEnumerable<LobbyOption> ILobbyOptions.LobbyOptions(MapPreview map)
{
yield return new LobbyBooleanOption(
"separateteamspawns",

View File

@@ -45,7 +45,7 @@ namespace OpenRA.Mods.Common.Traits
[Desc("Display order for the option in the lobby.")]
public readonly int DisplayOrder = 0;
IEnumerable<LobbyOption> ILobbyOptions.LobbyOptions(Ruleset rules)
IEnumerable<LobbyOption> ILobbyOptions.LobbyOptions(MapPreview map)
{
yield return new LobbyOption(ID, Label, Description, Visible, DisplayOrder,
Values, Default, Locked);

View File

@@ -39,12 +39,12 @@ namespace OpenRA.Mods.Common.Traits
[Desc("Display order for the starting units option in the lobby.")]
public readonly int DropdownDisplayOrder = 0;
IEnumerable<LobbyOption> ILobbyOptions.LobbyOptions(Ruleset rules)
IEnumerable<LobbyOption> ILobbyOptions.LobbyOptions(MapPreview map)
{
var startingUnits = new Dictionary<string, string>();
// Duplicate classes are defined for different race variants
foreach (var t in rules.Actors[SystemActors.World].TraitInfos<StartingUnitsInfo>())
foreach (var t in map.WorldActorInfo.TraitInfos<StartingUnitsInfo>())
startingUnits[t.Class] = t.ClassName;
if (startingUnits.Any())