Index: binaries/data/mods/public/gui/gamesetup/Controls/GameSettingsControl.js =================================================================== --- binaries/data/mods/public/gui/gamesetup/Controls/GameSettingsControl.js +++ binaries/data/mods/public/gui/gamesetup/Controls/GameSettingsControl.js @@ -10,7 +10,6 @@ this.mapCache = mapCache; this.gameSettingsFile = new GameSettingsFile(setupWindow); - this.previousMap = undefined; this.depth = 0; // This property may be read from publicly @@ -21,7 +20,6 @@ this.gameAttributesFinalizeHandlers = new Set(); this.pickRandomItemsHandlers = new Set(); this.assignPlayerHandlers = new Set(); - this.mapChangeHandlers = new Set(); setupWindow.registerLoadHandler(this.onLoad.bind(this)); setupWindow.registerGetHotloadDataHandler(this.onGetHotloadData.bind(this)); @@ -32,16 +30,6 @@ netMessages.registerNetMessageHandler("gamesetup", this.onGamesetupMessage.bind(this)); } - registerMapChangeHandler(handler) - { - this.mapChangeHandlers.add(handler); - } - - unregisterMapChangeHandler(handler) - { - this.mapChangeHandlers.delete(handler); - } - /** * This message is triggered everytime g_GameAttributes change. * Handlers may subsequently change g_GameAttributes and trigger this message again. @@ -178,16 +166,6 @@ g_GameAttributes.settings.PlayerData[i] = {}; } - // Map change handlers are triggered first, so that GameSettingControls can update their - // gameAttributes model prior to applying that model in their gameAttributesChangeHandler. - if (g_GameAttributes.map && this.previousMap != g_GameAttributes.map && g_GameAttributes.mapType) - { - this.previousMap = g_GameAttributes.map; - let mapData = this.mapCache.getMapData(g_GameAttributes.mapType, g_GameAttributes.map); - for (let handler of this.mapChangeHandlers) - handler(mapData); - } - for (let handler of this.gameAttributesChangeHandlers) handler(); Index: binaries/data/mods/public/gui/gamesetup/Pages/GameSetupPage/GameSettings/GameSettingControl.js =================================================================== --- binaries/data/mods/public/gui/gamesetup/Pages/GameSetupPage/GameSettings/GameSettingControl.js +++ binaries/data/mods/public/gui/gamesetup/Pages/GameSetupPage/GameSettings/GameSettingControl.js @@ -60,13 +60,13 @@ this.setHidden(false); if (this.onMapChange) - this.gameSettingsControl.registerMapChangeHandler(this.onMapChange.bind(this)); + this.previousMap = undefined; if (this.onLoad) this.setupWindow.registerLoadHandler(this.onLoad.bind(this)); if (this.onGameAttributesChange) - this.gameSettingsControl.registerGameAttributesChangeHandler(this.onGameAttributesChange.bind(this)); + this.gameSettingsControl.registerGameAttributesChangeHandler(this.onGameAttributesChangeSuper.bind(this)); if (this.onGameAttributesBatchChange) this.gameSettingsControl.registerGameAttributesBatchChangeHandler(this.onGameAttributesBatchChange.bind(this)); @@ -84,6 +84,20 @@ this.playerAssignmentsControl.registerPlayerAssignmentsChangeHandler(this.onPlayerAssignmentsChange.bind(this)); } + onGameAttributesChangeSuper() + { + // Map change handlers are triggered first, so that GameSettingControls can update their + // gameAttributes model prior to applying that model in their gameAttributesChangeHandler. + if (this.onMapChange && g_GameAttributes.map && this.previousMap != g_GameAttributes.map && g_GameAttributes.mapType) + { + this.previousMap = g_GameAttributes.map; + let mapData = this.mapCache.getMapData(g_GameAttributes.mapType, g_GameAttributes.map); + this.onMapChange(mapData); + } + + this.onGameAttributesChange(); + } + setTitle(titleCaption) { this.autocompleteTitle = titleCaption; Index: binaries/data/mods/public/gui/gamesetup/Pages/GameSetupPage/GameSettings/GameSettingsLayout.js =================================================================== --- binaries/data/mods/public/gui/gamesetup/Pages/GameSetupPage/GameSettings/GameSettingsLayout.js +++ binaries/data/mods/public/gui/gamesetup/Pages/GameSetupPage/GameSettings/GameSettingsLayout.js @@ -13,6 +13,7 @@ "Landscape", "Biome", "Daytime", + "SeaLevelRiseTime", "TriggerDifficulty", "Nomad", "Treasures", Index: binaries/data/mods/public/gui/gamesetup/Pages/GameSetupPage/Panels/MapPreview.js =================================================================== --- binaries/data/mods/public/gui/gamesetup/Pages/GameSetupPage/Panels/MapPreview.js +++ binaries/data/mods/public/gui/gamesetup/Pages/GameSetupPage/Panels/MapPreview.js @@ -8,12 +8,20 @@ this.mapInfoName = Engine.GetGUIObjectByName("mapInfoName"); this.mapPreview = Engine.GetGUIObjectByName("mapPreview"); - this.gameSettingsControl.registerMapChangeHandler(this.onMapChange.bind(this)); + this.previousMap = undefined; + + this.gameSettingsControl.registerGameAttributesChangeHandler(this.onGameAttributesChange.bind(this)); this.gameSettingsControl.registerGameAttributesBatchChangeHandler(this.onGameAttributesBatchChange.bind(this)); } - onMapChange(mapData) + onGameAttributesChange() { + if (!g_GameAttributes.map || this.previousMap == g_GameAttributes.map || !g_GameAttributes.mapType) + return; + + this.previousMap = g_GameAttributes.map; + let mapData = this.mapCache.getMapData(g_GameAttributes.mapType, g_GameAttributes.map); + let preview = mapData && mapData.settings && mapData.settings.Preview; if (!g_GameAttributes.settings.Preview || g_GameAttributes.settings.Preview != preview) { Index: binaries/data/mods/public/maps/random/extinct_volcano.json =================================================================== --- binaries/data/mods/public/maps/random/extinct_volcano.json +++ binaries/data/mods/public/maps/random/extinct_volcano.json @@ -9,6 +9,11 @@ "Keywords": ["trigger"], "CircularMap" : true, "Preview" : "extinctvolcano.png", + "SeaLevelRiseTime": { + "Min": 0, + "Max": 60, + "Default": 25 + }, "TriggerScripts": [ "scripts/TriggerHelper.js", "random/extinct_volcano_triggers.js" Index: binaries/data/mods/public/maps/random/extinct_volcano_triggers.js =================================================================== --- binaries/data/mods/public/maps/random/extinct_volcano_triggers.js +++ binaries/data/mods/public/maps/random/extinct_volcano_triggers.js @@ -9,12 +9,6 @@ var debugWaterRise = false; /** - * Time in minutes when the water level starts to rise. - * Allow players to build up the economy and military for some time. - */ -var waterRiseStartTime = [22, 26]; - -/** * Duration in minutes for which the notification will be shown that states that the water will rise soon. */ var waterRiseNotificationDuration = 1; @@ -190,7 +184,7 @@ { - let waterRiseTime = debugWaterRise ? 0 : randFloat(...waterRiseStartTime); + let waterRiseTime = debugWaterRise ? 0 : (InitAttributes.settings.SeaLevelRiseTime || 25); let cmpTrigger = Engine.QueryInterface(SYSTEM_ENTITY, IID_Trigger); cmpTrigger.GarrisonWoodenTowers(); cmpTrigger.DoAfterDelay((waterRiseTime - waterRiseNotificationDuration) * 60 * 1000, "RaisingWaterNotification", {});