Move ChooseInitialMap to MapCache.

This commit is contained in:
Paul Chote
2015-07-04 13:02:10 +01:00
parent 728bad9565
commit 2150a5e865
6 changed files with 19 additions and 19 deletions

View File

@@ -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());

View File

@@ -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]; }

View File

@@ -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<T, U>

View File

@@ -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();

View File

@@ -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: () => { });

View File

@@ -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<ButtonWidget>("CREATE_BUTTON").OnClick = CreateAndJoin;