From 8e26bd044649df5cdcfce2034eab54aaaec81bcb Mon Sep 17 00:00:00 2001 From: wraitii Date: Wed, 16 Jun 2021 15:52:19 +0000 Subject: [PATCH] Fix bug with map-dependent random settings Settings like Landscape, Daytime & team placement are map dependent. If "random" map is chosen, we first must select the map before selecting these. This wasn't done correctly and so starting "random" map that picked e.g. Unknown could fail. Biomes were already correctly handled. Reported by: langbart Fixes #6227 Differential Revision: https://code.wildfiregames.com/D4173 This was SVN commit r25800. --- .../data/mods/public/gui/gamesettings/attributes/Daytime.js | 4 ++++ .../data/mods/public/gui/gamesettings/attributes/Landscape.js | 4 ++++ .../mods/public/gui/gamesettings/attributes/TeamPlacement.js | 4 ++++ 3 files changed, 12 insertions(+) diff --git a/binaries/data/mods/public/gui/gamesettings/attributes/Daytime.js b/binaries/data/mods/public/gui/gamesettings/attributes/Daytime.js index e023c42637..f579516acc 100644 --- a/binaries/data/mods/public/gui/gamesettings/attributes/Daytime.js +++ b/binaries/data/mods/public/gui/gamesettings/attributes/Daytime.js @@ -46,6 +46,10 @@ GameSettings.prototype.Attributes.Daytime = class Daytime extends GameSetting pickRandomItems() { + // If the map is random, we need to wait until it is selected. + if (this.settings.map.map === "random") + return true; + if (this.value !== "random") return false; this.value = pickRandom(this.data).Id; diff --git a/binaries/data/mods/public/gui/gamesettings/attributes/Landscape.js b/binaries/data/mods/public/gui/gamesettings/attributes/Landscape.js index 0f7cfef81e..c1456b0601 100644 --- a/binaries/data/mods/public/gui/gamesettings/attributes/Landscape.js +++ b/binaries/data/mods/public/gui/gamesettings/attributes/Landscape.js @@ -56,6 +56,10 @@ GameSettings.prototype.Attributes.Landscape = class Landscape extends GameSettin pickRandomItems() { + // If the map is random, we need to wait until it is selected. + if (this.settings.map.map === "random") + return true; + if (!this.value || !this.value.startsWith("random")) return false; diff --git a/binaries/data/mods/public/gui/gamesettings/attributes/TeamPlacement.js b/binaries/data/mods/public/gui/gamesettings/attributes/TeamPlacement.js index c24165ded6..694128cd36 100644 --- a/binaries/data/mods/public/gui/gamesettings/attributes/TeamPlacement.js +++ b/binaries/data/mods/public/gui/gamesettings/attributes/TeamPlacement.js @@ -39,6 +39,10 @@ GameSettings.prototype.Attributes.TeamPlacement = class TeamPlacement extends Ga pickRandomItems() { + // If the map is random, we need to wait until it is selected. + if (this.settings.map.map === "random") + return true; + if (this.value !== "random") return false; this.value = pickRandom(this.available).Id;