diff --git a/OpenRA.Game/Game.cs b/OpenRA.Game/Game.cs index f2bdf80ec7..61491cc9ef 100644 --- a/OpenRA.Game/Game.cs +++ b/OpenRA.Game/Game.cs @@ -445,7 +445,7 @@ namespace OpenRA static string ChooseShellmap() { var shellmaps = ModData.MapCache - .Where(m => m.Status == MapStatus.Available && m.Map.Visibility.HasFlag(MapVisibility.Shellmap)) + .Where(m => m.Status == MapStatus.Available && m.Visibility.HasFlag(MapVisibility.Shellmap)) .Select(m => m.Uid); if (!shellmaps.Any()) diff --git a/OpenRA.Game/Map/MapPreview.cs b/OpenRA.Game/Map/MapPreview.cs index f8c35c9b40..3f09a31418 100644 --- a/OpenRA.Game/Map/MapPreview.cs +++ b/OpenRA.Game/Map/MapPreview.cs @@ -68,6 +68,7 @@ namespace OpenRA public Map Map { get; private set; } public MapStatus Status { get; private set; } public MapClassification Class { get; private set; } + public MapVisibility Visibility { get; private set; } public bool SuitableForInitialMap { get; private set; } public MapRuleStatus RuleStatus { get; private set; } @@ -111,6 +112,7 @@ namespace OpenRA GridType = gridType; Status = MapStatus.Unavailable; Class = MapClassification.Unknown; + Visibility = MapVisibility.Lobby; } public void UpdateFromMap(Map m, MapClassification classification) @@ -126,6 +128,7 @@ namespace OpenRA CustomPreview = m.CustomPreview; Status = MapStatus.Available; Class = classification; + Visibility = m.Visibility; var players = new MapPlayers(m.PlayerDefinitions).Players; PlayerCount = players.Count(x => x.Value.Playable); @@ -135,7 +138,7 @@ namespace OpenRA bool EvaluateUserFriendliness(Dictionary players) { - if (Status != MapStatus.Available || !Map.Visibility.HasFlag(MapVisibility.Lobby)) + if (Status != MapStatus.Available || !Visibility.HasFlag(MapVisibility.Lobby)) return false; // Other map types may have confusing settings or gameplay diff --git a/OpenRA.Game/Widgets/WidgetUtils.cs b/OpenRA.Game/Widgets/WidgetUtils.cs index c0bc0e250c..a1fb0f0670 100644 --- a/OpenRA.Game/Widgets/WidgetUtils.cs +++ b/OpenRA.Game/Widgets/WidgetUtils.cs @@ -255,7 +255,7 @@ namespace OpenRA.Widgets if (string.IsNullOrEmpty(initialUid) || Game.ModData.MapCache[initialUid].Status != MapStatus.Available) { var selected = Game.ModData.MapCache.Where(x => x.SuitableForInitialMap).RandomOrDefault(Game.CosmeticRandom) ?? - Game.ModData.MapCache.First(m => m.Status == MapStatus.Available && m.Map.Visibility.HasFlag(MapVisibility.Lobby)); + Game.ModData.MapCache.First(m => m.Status == MapStatus.Available && m.Visibility.HasFlag(MapVisibility.Lobby)); return selected.Uid; } diff --git a/OpenRA.Mods.Common/Widgets/Logic/MainMenuLogic.cs b/OpenRA.Mods.Common/Widgets/Logic/MainMenuLogic.cs index 7899d345a3..2d9d82bed4 100644 --- a/OpenRA.Mods.Common/Widgets/Logic/MainMenuLogic.cs +++ b/OpenRA.Mods.Common/Widgets/Logic/MainMenuLogic.cs @@ -104,7 +104,7 @@ namespace OpenRA.Mods.Common.Widgets.Logic var hasCampaign = Game.ModData.Manifest.Missions.Any(); var hasMissions = Game.ModData.MapCache - .Any(p => p.Status == MapStatus.Available && p.Map.Visibility.HasFlag(MapVisibility.MissionSelector)); + .Any(p => p.Status == MapStatus.Available && p.Visibility.HasFlag(MapVisibility.MissionSelector)); missionsButton.Disabled = !hasCampaign && !hasMissions; diff --git a/OpenRA.Mods.Common/Widgets/Logic/MapChooserLogic.cs b/OpenRA.Mods.Common/Widgets/Logic/MapChooserLogic.cs index fa205533c8..1c35e3f63c 100644 --- a/OpenRA.Mods.Common/Widgets/Logic/MapChooserLogic.cs +++ b/OpenRA.Mods.Common/Widgets/Logic/MapChooserLogic.cs @@ -143,7 +143,7 @@ namespace OpenRA.Mods.Common.Widgets.Logic void RefreshMaps(MapClassification tab, MapVisibility filter) { tabMaps[tab] = Game.ModData.MapCache.Where(m => m.Status == MapStatus.Available && - m.Class == tab && (m.Map.Visibility & filter) != 0).ToArray(); + m.Class == tab && (m.Visibility & filter) != 0).ToArray(); } void SetupMapTab(MapClassification tab, MapVisibility filter, string tabButtonName, string tabContainerName, ScrollItemWidget itemTemplate) diff --git a/OpenRA.Mods.Common/Widgets/Logic/MissionBrowserLogic.cs b/OpenRA.Mods.Common/Widgets/Logic/MissionBrowserLogic.cs index b87ce9c3d7..6038a25f3a 100644 --- a/OpenRA.Mods.Common/Widgets/Logic/MissionBrowserLogic.cs +++ b/OpenRA.Mods.Common/Widgets/Logic/MissionBrowserLogic.cs @@ -114,7 +114,7 @@ namespace OpenRA.Mods.Common.Widgets.Logic // Add an additional group for loose missions var looseMissions = modData.MapCache - .Where(p => p.Status == MapStatus.Available && p.Map.Visibility.HasFlag(MapVisibility.MissionSelector) && !allMaps.Contains(p.Map)) + .Where(p => p.Status == MapStatus.Available && p.Visibility.HasFlag(MapVisibility.MissionSelector) && !allMaps.Contains(p.Map)) .Select(p => p.Map); if (looseMissions.Any())