From b5c2703eba053b7f39f753aa20bbf6bc70f22a61 Mon Sep 17 00:00:00 2001 From: Paul Chote Date: Tue, 29 Mar 2016 22:36:48 +0100 Subject: [PATCH] Pass random to ChooseInitialMap. --- OpenRA.Game/Game.cs | 2 +- OpenRA.Game/Map/MapCache.cs | 5 +++-- OpenRA.Mods.Common/Widgets/Logic/MainMenuLogic.cs | 2 +- OpenRA.Mods.Common/Widgets/Logic/MapChooserLogic.cs | 10 ++++++---- .../Widgets/Logic/ServerCreationLogic.cs | 2 +- 5 files changed, 12 insertions(+), 9 deletions(-) diff --git a/OpenRA.Game/Game.cs b/OpenRA.Game/Game.cs index 425877fb82..373fb11504 100644 --- a/OpenRA.Game/Game.cs +++ b/OpenRA.Game/Game.cs @@ -402,7 +402,7 @@ namespace OpenRA { while (true) { - Settings.Server.Map = ModData.MapCache.ChooseInitialMap(Settings.Server.Map); + Settings.Server.Map = ModData.MapCache.ChooseInitialMap(Settings.Server.Map, CosmeticRandom); Settings.Save(); CreateServer(Settings.Server.Clone()); diff --git a/OpenRA.Game/Map/MapCache.cs b/OpenRA.Game/Map/MapCache.cs index b116df9d63..671f57d7f3 100644 --- a/OpenRA.Game/Map/MapCache.cs +++ b/OpenRA.Game/Map/MapCache.cs @@ -20,6 +20,7 @@ using System.Threading; using OpenRA.FileSystem; using OpenRA.Graphics; using OpenRA.Primitives; +using OpenRA.Support; namespace OpenRA { @@ -237,11 +238,11 @@ namespace OpenRA }); } - public string ChooseInitialMap(string initialUid) + public string ChooseInitialMap(string initialUid, MersenneTwister random) { if (string.IsNullOrEmpty(initialUid) || previews[initialUid].Status != MapStatus.Available) { - var selected = previews.Values.Where(x => x.SuitableForInitialMap).RandomOrDefault(Game.CosmeticRandom) ?? + var selected = previews.Values.Where(x => x.SuitableForInitialMap).RandomOrDefault(random) ?? previews.Values.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 7e97082330..835df544d2 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 = Game.ModData.MapCache.ChooseInitialMap(Game.Settings.Server.Map); + var map = Game.ModData.MapCache.ChooseInitialMap(Game.Settings.Server.Map, Game.CosmeticRandom); 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 8ce3421e5a..f87535b3fc 100644 --- a/OpenRA.Mods.Common/Widgets/Logic/MapChooserLogic.cs +++ b/OpenRA.Mods.Common/Widgets/Logic/MapChooserLogic.cs @@ -126,12 +126,13 @@ namespace OpenRA.Mods.Common.Widgets.Logic if (initialMap == null && tabMaps.Keys.Contains(initialTab) && tabMaps[initialTab].Any()) { - selectedUid = Game.ModData.MapCache.ChooseInitialMap(tabMaps[initialTab].Select(mp => mp.Uid).First()); + selectedUid = Game.ModData.MapCache.ChooseInitialMap(tabMaps[initialTab].Select(mp => mp.Uid).First(), + Game.CosmeticRandom); currentTab = initialTab; } else { - selectedUid = Game.ModData.MapCache.ChooseInitialMap(initialMap); + selectedUid = Game.ModData.MapCache.ChooseInitialMap(initialMap, Game.CosmeticRandom); currentTab = tabMaps.Keys.FirstOrDefault(k => tabMaps[k].Select(mp => mp.Uid).Contains(selectedUid)); } @@ -313,7 +314,8 @@ namespace OpenRA.Mods.Common.Widgets.Logic { modData.MapCache[map].Delete(); if (selectedUid == map) - selectedUid = Game.ModData.MapCache.ChooseInitialMap(tabMaps[currentTab].Select(mp => mp.Uid).FirstOrDefault()); + selectedUid = Game.ModData.MapCache.ChooseInitialMap(tabMaps[currentTab].Select(mp => mp.Uid).FirstOrDefault(), + Game.CosmeticRandom); } catch (Exception ex) { @@ -348,7 +350,7 @@ namespace OpenRA.Mods.Common.Widgets.Logic { maps.Do(m => DeleteMap(m)); if (after != null) - after(Game.ModData.MapCache.ChooseInitialMap(null)); + after(Game.ModData.MapCache.ChooseInitialMap(null, Game.CosmeticRandom)); }, confirmText: "Delete", onCancel: () => { }); diff --git a/OpenRA.Mods.Common/Widgets/Logic/ServerCreationLogic.cs b/OpenRA.Mods.Common/Widgets/Logic/ServerCreationLogic.cs index 7e678638bd..1ced376947 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[modData.MapCache.ChooseInitialMap(Game.Settings.Server.Map)]; + preview = modData.MapCache[modData.MapCache.ChooseInitialMap(Game.Settings.Server.Map, Game.CosmeticRandom)]; panel.Get("CREATE_BUTTON").OnClick = CreateAndJoin;