Move ChooseInitialMap to MapCache.
This commit is contained in:
@@ -402,7 +402,7 @@ namespace OpenRA
|
|||||||
{
|
{
|
||||||
while (true)
|
while (true)
|
||||||
{
|
{
|
||||||
Settings.Server.Map = WidgetUtils.ChooseInitialMap(Settings.Server.Map);
|
Settings.Server.Map = ModData.MapCache.ChooseInitialMap(Settings.Server.Map);
|
||||||
Settings.Save();
|
Settings.Save();
|
||||||
CreateServer(Settings.Server.Clone());
|
CreateServer(Settings.Server.Clone());
|
||||||
|
|
||||||
|
|||||||
@@ -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]
|
public MapPreview this[string key]
|
||||||
{
|
{
|
||||||
get { return previews[key]; }
|
get { return previews[key]; }
|
||||||
|
|||||||
@@ -248,18 +248,6 @@ namespace OpenRA.Widgets
|
|||||||
|
|
||||||
return trimmed;
|
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>
|
public class CachedTransform<T, U>
|
||||||
|
|||||||
@@ -380,7 +380,7 @@ namespace OpenRA.Mods.Common.Widgets.Logic
|
|||||||
|
|
||||||
void StartSkirmishGame()
|
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.Server.Map = map;
|
||||||
Game.Settings.Save();
|
Game.Settings.Save();
|
||||||
|
|
||||||
|
|||||||
@@ -126,12 +126,12 @@ namespace OpenRA.Mods.Common.Widgets.Logic
|
|||||||
|
|
||||||
if (initialMap == null && tabMaps.Keys.Contains(initialTab) && tabMaps[initialTab].Any())
|
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;
|
currentTab = initialTab;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
selectedUid = WidgetUtils.ChooseInitialMap(initialMap);
|
selectedUid = Game.ModData.MapCache.ChooseInitialMap(initialMap);
|
||||||
currentTab = tabMaps.Keys.FirstOrDefault(k => tabMaps[k].Select(mp => mp.Uid).Contains(selectedUid));
|
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();
|
modData.MapCache[map].Delete();
|
||||||
if (selectedUid == map)
|
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)
|
catch (Exception ex)
|
||||||
{
|
{
|
||||||
@@ -348,7 +348,7 @@ namespace OpenRA.Mods.Common.Widgets.Logic
|
|||||||
{
|
{
|
||||||
maps.Do(m => DeleteMap(m));
|
maps.Do(m => DeleteMap(m));
|
||||||
if (after != null)
|
if (after != null)
|
||||||
after(WidgetUtils.ChooseInitialMap(null));
|
after(Game.ModData.MapCache.ChooseInitialMap(null));
|
||||||
},
|
},
|
||||||
confirmText: "Delete",
|
confirmText: "Delete",
|
||||||
onCancel: () => { });
|
onCancel: () => { });
|
||||||
|
|||||||
@@ -32,7 +32,7 @@ namespace OpenRA.Mods.Common.Widgets.Logic
|
|||||||
this.onExit = onExit;
|
this.onExit = onExit;
|
||||||
|
|
||||||
var settings = Game.Settings;
|
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;
|
panel.Get<ButtonWidget>("CREATE_BUTTON").OnClick = CreateAndJoin;
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user