Differential D4240 Diff 19682 ps/trunk/binaries/data/mods/public/gui/gamesettings/attributes/TriggerScripts.js
Changeset View
Changeset View
Standalone View
Standalone View
ps/trunk/binaries/data/mods/public/gui/gamesettings/attributes/TriggerScripts.js
GameSettings.prototype.Attributes.TriggerScripts = class TriggerScripts extends GameSetting | GameSettings.prototype.Attributes.TriggerScripts = class TriggerScripts extends GameSetting | ||||
{ | { | ||||
init() | init() | ||||
{ | { | ||||
this.victory = new Set(); | this.customScripts = new Set(); | ||||
this.map = new Set(); | this.victoryScripts = new Set(); | ||||
this.mapScripts = new Set(); | |||||
this.settings.map.watch(() => this.updateMapScripts(), ["map"]); | this.settings.map.watch(() => this.updateMapScripts(), ["map"]); | ||||
this.settings.victoryConditions.watch(() => this.updateVictoryScripts(), ["active"]); | this.settings.victoryConditions.watch(() => this.updateVictoryScripts(), ["active"]); | ||||
} | } | ||||
toInitAttributes(attribs) | toInitAttributes(attribs) | ||||
{ | { | ||||
let scripts = new Set(this.victory); | attribs.settings.TriggerScripts = Array.from(this.customScripts); | ||||
for (let elem of this.map) | |||||
scripts.add(elem); | |||||
attribs.settings.TriggerScripts = Array.from(scripts); | |||||
} | } | ||||
/** | fromInitAttributes(attribs) | ||||
* Exceptionally, this setting has no Deserialize: it's entirely determined from other settings. | { | ||||
*/ | if (!!this.getLegacySetting(attribs, "TriggerScripts")) | ||||
this.customScripts = new Set(this.getLegacySetting(attribs, "TriggerScripts")); | |||||
} | |||||
updateVictoryScripts() | updateVictoryScripts() | ||||
{ | { | ||||
let setting = this.settings.victoryConditions; | let setting = this.settings.victoryConditions; | ||||
let scripts = new Set(); | let scripts = new Set(); | ||||
for (let cond of setting.active) | for (let cond of setting.active) | ||||
setting.conditions[cond].Scripts.forEach(script => scripts.add(script)); | setting.conditions[cond].Scripts.forEach(script => scripts.add(script)); | ||||
this.victory = scripts; | this.victoryScripts = scripts; | ||||
} | } | ||||
updateMapScripts() | updateMapScripts() | ||||
{ | { | ||||
if (!this.settings.map.data || !this.settings.map.data.settings || | if (!this.settings.map.data || !this.settings.map.data.settings || | ||||
!this.settings.map.data.settings.TriggerScripts) | !this.settings.map.data.settings.TriggerScripts) | ||||
{ | { | ||||
this.map = new Set(); | this.mapScripts = new Set(); | ||||
return; | return; | ||||
} | } | ||||
this.map = new Set(this.settings.map.data.settings.TriggerScripts); | this.mapScripts = new Set(this.settings.map.data.settings.TriggerScripts); | ||||
} | |||||
onFinalizeAttributes(attribs) | |||||
{ | |||||
const scripts = this.customScripts; | |||||
for (const elem of this.victoryScripts) | |||||
scripts.add(elem); | |||||
for (const elem of this.mapScripts) | |||||
scripts.add(elem); | |||||
attribs.settings.TriggerScripts = Array.from(scripts); | |||||
} | } | ||||
}; | }; |
Wildfire Games · Phabricator