Index: ps/trunk/binaries/data/mods/public/gui/gamesetup/Pages/GameSetupPage/GameSettings/GameSettingsLayout.js =================================================================== --- ps/trunk/binaries/data/mods/public/gui/gamesetup/Pages/GameSetupPage/GameSettings/GameSettingsLayout.js +++ ps/trunk/binaries/data/mods/public/gui/gamesetup/Pages/GameSetupPage/GameSettings/GameSettingsLayout.js @@ -12,6 +12,7 @@ "MapSize", "Landscape", "Biome", + "SeaLevelRiseTime", "Daytime", "TriggerDifficulty", "Nomad", Index: ps/trunk/binaries/data/mods/public/gui/gamesetup/Pages/GameSetupPage/GameSettings/Single/Sliders/SeaLevelRiseTime.js =================================================================== --- ps/trunk/binaries/data/mods/public/gui/gamesetup/Pages/GameSetupPage/GameSettings/Single/Sliders/SeaLevelRiseTime.js +++ ps/trunk/binaries/data/mods/public/gui/gamesetup/Pages/GameSetupPage/GameSettings/Single/Sliders/SeaLevelRiseTime.js @@ -0,0 +1,83 @@ +GameSettingControls.SeaLevelRiseTime = class extends GameSettingControlSlider +{ + constructor(...args) + { + super(...args); + + this.values = undefined; + this.sprintfValue = {}; + } + + onMapChange(mapData) + { + this.values = + mapData && + mapData.settings && + mapData.settings.SeaLevelRise || undefined; + + if (this.values) + { + this.slider.min_value = this.values.Min; + this.slider.max_value = this.values.Max; + } + + this.setHidden(!this.values); + this.setEnabled(g_GameAttributes.mapType != "scenario"); + } + + onGameAttributesChange() + { + if (this.values) + { + if (g_GameAttributes.settings.SeaLevelRiseTime === undefined) + { + g_GameAttributes.settings.SeaLevelRiseTime = this.values.Default; + this.gameSettingsControl.updateGameAttributes(); + } + } + else if (g_GameAttributes.settings.SeaLevelRiseTime !== undefined) + { + delete g_GameAttributes.settings.SeaLevelRiseTime; + this.gameSettingsControl.updateGameAttributes(); + } + } + + onGameAttributesBatchChange() + { + if (!this.values) + return; + + let value = Math.round(g_GameAttributes.settings.SeaLevelRiseTime); + this.sprintfValue.minutes = value; + + this.setSelectedValue( + g_GameAttributes.settings.SeaLevelRiseTime, + sprintf(this.SeaLevelRiseTimeCaption(value), this.sprintfValue)); + } + + onValueChange(value) + { + g_GameAttributes.settings.SeaLevelRiseTime = value; + this.gameSettingsControl.updateGameAttributes(); + this.gameSettingsControl.setNetworkGameAttributes(); + } + + onGameAttributesFinalize() + { + if (this.values) + g_GameAttributes.settings.SeaLevelRiseTime = Math.round(g_GameAttributes.settings.SeaLevelRiseTime); + } +}; + +GameSettingControls.SeaLevelRiseTime.prototype.TitleCaption = + translate("Sea Level Rise Time"); + +GameSettingControls.SeaLevelRiseTime.prototype.Tooltip = + translate("Set the time when the water will start to rise."); + +GameSettingControls.SeaLevelRiseTime.prototype.SeaLevelRiseTimeCaption = + minutes => translatePluralWithContext("sea level rise time", "%(minutes)s minute", "%(minutes)s minutes", minutes); + +GameSettingControls.SeaLevelRiseTime.prototype.MinValue = 0; + +GameSettingControls.SeaLevelRiseTime.prototype.MaxValue = 60; Index: ps/trunk/binaries/data/mods/public/maps/random/extinct_volcano.json =================================================================== --- ps/trunk/binaries/data/mods/public/maps/random/extinct_volcano.json +++ ps/trunk/binaries/data/mods/public/maps/random/extinct_volcano.json @@ -9,6 +9,11 @@ "Keywords": ["trigger"], "CircularMap" : true, "Preview" : "extinctvolcano.png", + "SeaLevelRise": { + "Min": 0, + "Max": 60, + "Default": 25 + }, "TriggerScripts": [ "scripts/TriggerHelper.js", "random/extinct_volcano_triggers.js" Index: ps/trunk/binaries/data/mods/public/maps/random/extinct_volcano_triggers.js =================================================================== --- ps/trunk/binaries/data/mods/public/maps/random/extinct_volcano_triggers.js +++ ps/trunk/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; @@ -188,9 +182,8 @@ this.DebugLog("Converted to actors: " + uneval(actorTemplates)); }; - { - let waterRiseTime = debugWaterRise ? 0 : randFloat(...waterRiseStartTime); + let waterRiseTime = debugWaterRise ? 0 : (InitAttributes.settings.SeaLevelRiseTime || 0); let cmpTrigger = Engine.QueryInterface(SYSTEM_ENTITY, IID_Trigger); cmpTrigger.GarrisonWoodenTowers(); cmpTrigger.DoAfterDelay((waterRiseTime - waterRiseNotificationDuration) * 60 * 1000, "RaisingWaterNotification", {});