From 2150a5e86507992ec3fdd3b792058e13077b7a67 Mon Sep 17 00:00:00 2001 From: Paul Chote Date: Sat, 4 Jul 2015 13:02:10 +0100 Subject: [PATCH] Move ChooseInitialMap to MapCache. --- OpenRA.Game/Game.cs | 2 +- OpenRA.Game/Map/MapCache.cs | 12 ++++++++++++ OpenRA.Game/Widgets/WidgetUtils.cs | 12 ------------ OpenRA.Mods.Common/Widgets/Logic/MainMenuLogic.cs | 2 +- OpenRA.Mods.Common/Widgets/Logic/MapChooserLogic.cs | 8 ++++---- .../Widgets/Logic/ServerCreationLogic.cs | 2 +- 6 files changed, 19 insertions(+), 19 deletions(-) diff --git a/OpenRA.Game/Game.cs b/OpenRA.Game/Game.cs index a3938158cb..425877fb82 100644 --- a/OpenRA.Game/Game.cs +++ b/OpenRA.Game/Game.cs @@ -402,7 +402,7 @@ namespace OpenRA { while (true) { - Settings.Server.Map = WidgetUtils.ChooseInitialMap(Settings.Server.Map); + Settings.Server.Map = ModData.MapCache.ChooseInitialMap(Settings.Server.Map); Settings.Save(); CreateServer(Settings.Server.Clone()); diff --git a/OpenRA.Game/Map/MapCache.cs b/OpenRA.Game/Map/MapCache.cs index a05bd954f3..367a1b0fb9 100644 --- a/OpenRA.Game/Map/MapCache.cs +++ b/OpenRA.Game/Map/MapCache.cs @@ -237,6 +237,18 @@ namespace OpenRA }); } + public string ChooseInitialMap(string initialUid) + { + if (string.IsNullOrEmpty(initialUid) || previews[initialUid].Status != MapStatus.Available) + { + var selected = previews.Values.Where(x => x.SuitableForInitialMap).RandomOrDefault(Game.CosmeticRandom) ?? + previews.Values.First(m => m.Status == MapStatus.Available && m.Visibility.HasFlag(MapVisibility.Lobby)); + return selected.Uid; + } + + return initialUid; + } + public MapPreview this[string key] { get { return previews[key]; } diff --git a/OpenRA.Game/Widgets/WidgetUtils.cs b/OpenRA.Game/Widgets/WidgetUtils.cs index acd01e4e77..7bf71d6b4c 100644 --- a/OpenRA.Game/Widgets/WidgetUtils.cs +++ b/OpenRA.Game/Widgets/WidgetUtils.cs @@ -248,18 +248,6 @@ namespace OpenRA.Widgets return trimmed; } - - public static string ChooseInitialMap(string initialUid) - { - 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.Visibility.HasFlag(MapVisibility.Lobby)); - return selected.Uid; - } - - return initialUid; - } } public class CachedTransform diff --git a/OpenRA.Mods.Common/Widgets/Logic/MainMenuLogic.cs b/OpenRA.Mods.Common/Widgets/Logic/MainMenuLogic.cs index 8150aebb37..7e97082330 100644 --- a/OpenRA.Mods.Common/Widgets/Logic/MainMenuLogic.cs +++ b/OpenRA.Mods.Common/Widgets/Logic/MainMenuLogic.cs @@ -380,7 +380,7 @@ namespace OpenRA.Mods.Common.Widgets.Logic void StartSkirmishGame() { - var map = WidgetUtils.ChooseInitialMap(Game.Settings.Server.Map); + var map = Game.ModData.MapCache.ChooseInitialMap(Game.Settings.Server.Map); Game.Settings.Server.Map = map; Game.Settings.Save(); diff --git a/OpenRA.Mods.Common/Widgets/Logic/MapChooserLogic.cs b/OpenRA.Mods.Common/Widgets/Logic/MapChooserLogic.cs index 9d84fef4be..8ce3421e5a 100644 --- a/OpenRA.Mods.Common/Widgets/Logic/MapChooserLogic.cs +++ b/OpenRA.Mods.Common/Widgets/Logic/MapChooserLogic.cs @@ -126,12 +126,12 @@ namespace OpenRA.Mods.Common.Widgets.Logic if (initialMap == null && tabMaps.Keys.Contains(initialTab) && tabMaps[initialTab].Any()) { - selectedUid = WidgetUtils.ChooseInitialMap(tabMaps[initialTab].Select(mp => mp.Uid).First()); + selectedUid = Game.ModData.MapCache.ChooseInitialMap(tabMaps[initialTab].Select(mp => mp.Uid).First()); currentTab = initialTab; } else { - selectedUid = WidgetUtils.ChooseInitialMap(initialMap); + selectedUid = Game.ModData.MapCache.ChooseInitialMap(initialMap); currentTab = tabMaps.Keys.FirstOrDefault(k => tabMaps[k].Select(mp => mp.Uid).Contains(selectedUid)); } @@ -313,7 +313,7 @@ namespace OpenRA.Mods.Common.Widgets.Logic { modData.MapCache[map].Delete(); if (selectedUid == map) - selectedUid = WidgetUtils.ChooseInitialMap(tabMaps[currentTab].Select(mp => mp.Uid).FirstOrDefault()); + selectedUid = Game.ModData.MapCache.ChooseInitialMap(tabMaps[currentTab].Select(mp => mp.Uid).FirstOrDefault()); } catch (Exception ex) { @@ -348,7 +348,7 @@ namespace OpenRA.Mods.Common.Widgets.Logic { maps.Do(m => DeleteMap(m)); if (after != null) - after(WidgetUtils.ChooseInitialMap(null)); + after(Game.ModData.MapCache.ChooseInitialMap(null)); }, confirmText: "Delete", onCancel: () => { }); diff --git a/OpenRA.Mods.Common/Widgets/Logic/ServerCreationLogic.cs b/OpenRA.Mods.Common/Widgets/Logic/ServerCreationLogic.cs index 78f23e20d9..7e678638bd 100644 --- a/OpenRA.Mods.Common/Widgets/Logic/ServerCreationLogic.cs +++ b/OpenRA.Mods.Common/Widgets/Logic/ServerCreationLogic.cs @@ -32,7 +32,7 @@ namespace OpenRA.Mods.Common.Widgets.Logic this.onExit = onExit; var settings = Game.Settings; - preview = modData.MapCache[WidgetUtils.ChooseInitialMap(Game.Settings.Server.Map)]; + preview = modData.MapCache[modData.MapCache.ChooseInitialMap(Game.Settings.Server.Map)]; panel.Get("CREATE_BUTTON").OnClick = CreateAndJoin;