Differential D3243 Diff 16503 binaries/data/mods/public/gui/gamesetup/Pages/GameSetupPage/GameSettings/Single/Checkboxes/RegicideGarrison.js
Changeset View
Changeset View
Standalone View
Standalone View
binaries/data/mods/public/gui/gamesetup/Pages/GameSetupPage/GameSettings/Single/Checkboxes/RegicideGarrison.js
GameSettingControls.RegicideGarrison = class extends GameSettingControlCheckbox | GameSettingControls.RegicideGarrison = class RegicideGarrison extends GameSettingControlCheckbox | ||||
{ | { | ||||
onMapChange(mapData) | constructor(...args) | ||||
{ | { | ||||
this.setEnabled(g_GameAttributes.mapType != "scenario"); | super(...args); | ||||
let mapValue; | g_NewGameSettings.regicideGarrison.watch(() => this.render(), ["enabled", "available"]); | ||||
if (mapData && | g_NewGameSettings.map.watch(() => this.render(), ["type"]); | ||||
mapData.settings && | this.render(); | ||||
mapData.settings.VictoryConditions && | |||||
mapData.settings.VictoryConditions.indexOf(this.RegicideName) != -1 && | |||||
mapData.settings.RegicideGarrison !== undefined) | |||||
mapValue = mapData.settings.RegicideGarrison; | |||||
if (mapValue !== undefined || !g_GameAttributes.settings || mapValue == g_GameAttributes.settings.RegicideGarrison) | |||||
return; | |||||
if (!g_GameAttributes.settings.VictoryConditions) | |||||
g_GameAttributes.settings.VictoryConditions = []; | |||||
if (g_GameAttributes.settings.VictoryConditions.indexOf(this.RegicideName) == -1) | |||||
g_GameAttributes.settings.VictoryConditions.push(this.RegicideName); | |||||
g_GameAttributes.settings.RegicideGarrison = mapValue; | |||||
this.gameSettingsControl.updateGameAttributes(); | |||||
} | } | ||||
onGameAttributesChange() | render() | ||||
{ | |||||
if (!g_GameAttributes.settings.VictoryConditions) | |||||
return; | |||||
let available = g_GameAttributes.settings.VictoryConditions.indexOf(this.RegicideName) != -1; | |||||
this.setHidden(!available); | |||||
if (available) | |||||
{ | |||||
if (g_GameAttributes.settings.RegicideGarrison === undefined) | |||||
{ | { | ||||
g_GameAttributes.settings.RegicideGarrison = false; | this.setHidden(g_NewGameSettings.map.type == "scenario" || | ||||
this.gameSettingsControl.updateGameAttributes(); | !g_NewGameSettings.regicideGarrison.available); | ||||
} | this.setChecked(g_NewGameSettings.regicideGarrison.enabled); | ||||
this.setChecked(g_GameAttributes.settings.RegicideGarrison); | |||||
} | |||||
else if (g_GameAttributes.settings.RegicideGarrison !== undefined) | |||||
{ | |||||
delete g_GameAttributes.settings.RegicideGarrison; | |||||
this.gameSettingsControl.updateGameAttributes(); | |||||
} | |||||
} | } | ||||
onPress(checked) | onPress(checked) | ||||
{ | { | ||||
g_GameAttributes.settings.RegicideGarrison = checked; | g_NewGameSettings.regicideGarrison.setEnabled(checked); | ||||
this.gameSettingsControl.updateGameAttributes(); | |||||
this.gameSettingsControl.setNetworkGameAttributes(); | this.gameSettingsControl.setNetworkGameAttributes(); | ||||
} | } | ||||
}; | }; | ||||
GameSettingControls.RegicideGarrison.prototype.TitleCaption = | GameSettingControls.RegicideGarrison.prototype.TitleCaption = | ||||
translate("Hero Garrison"); | translate("Hero Garrison"); | ||||
GameSettingControls.RegicideGarrison.prototype.Tooltip = | GameSettingControls.RegicideGarrison.prototype.Tooltip = | ||||
translate("Toggle whether heroes can be garrisoned."); | translate("Toggle whether heroes can be garrisoned."); | ||||
GameSettingControls.RegicideGarrison.prototype.RegicideName = | |||||
"regicide"; |
Wildfire Games · Phabricator