Differential D3243 Diff 16284 binaries/data/mods/public/gui/gamesetup/Pages/AIConfigPage/Controls/AIBehavior.js
Changeset View
Changeset View
Standalone View
Standalone View
binaries/data/mods/public/gui/gamesetup/Pages/AIConfigPage/Controls/AIBehavior.js
AIGameSettingControls.AIBehavior = class extends AIGameSettingControlDropdown | AIGameSettingControls.AIBehavior = class extends AIGameSettingControlDropdown | ||||
{ | { | ||||
constructor(...args) | constructor(...args) | ||||
{ | { | ||||
super(...args); | super(...args); | ||||
this.fixedAIBehavior = []; | g_NewGameSettings.playerAI.watch(() => this.render(), ["values"]); | ||||
this.defaultBehavior = Engine.ConfigDB_GetValue("user", this.ConfigBehavior); | |||||
this.dropdown.list = g_Settings.AIBehaviors.map(AIBehavior => AIBehavior.Title); | |||||
this.dropdown.list_data = g_Settings.AIBehaviors.map(AIBehavior => AIBehavior.Name); | |||||
} | |||||
onAssignPlayer(source, target) | |||||
{ | |||||
if (source && target.AIBehavior) | |||||
source.AIBehavior = target.AIBehavior; | |||||
delete target.AIBehavior; | |||||
} | } | ||||
onMapChange(mapData) | render() | ||||
{ | |||||
for (let playerIndex = 0; playerIndex < g_MaxPlayers; ++playerIndex) | |||||
{ | |||||
let mapPData = this.gameSettingsControl.getPlayerData(mapData, playerIndex); | |||||
this.fixedAIBehavior[playerIndex] = | |||||
mapPData && mapPData.AI ? | |||||
(mapPData.AIBehavior !== undefined ? | |||||
mapPData.AIBehavior : | |||||
g_Settings.PlayerDefaults[playerIndex + 1].AIBehavior) : | |||||
undefined; | |||||
} | |||||
} | |||||
onGameAttributesChangePlayer(playerIndex) | |||||
{ | |||||
let pData = this.gameSettingsControl.getPlayerData(g_GameAttributes, playerIndex); | |||||
if (!pData) | |||||
return; | |||||
if (pData.AI) | |||||
{ | |||||
if (this.fixedAIBehavior[playerIndex] && | |||||
(pData.AIBehavior === undefined || | |||||
pData.AIBehavior !== this.fixedAIBehavior[playerIndex])) | |||||
{ | { | ||||
pData.AIBehavior = this.fixedAIBehavior[playerIndex]; | this.dropdown.list = g_Settings.AIBehaviors.map(AIBehavior => AIBehavior.Title); | ||||
this.gameSettingsControl.updateGameAttributes(); | this.dropdown.list_data = g_Settings.AIBehaviors.map(AIBehavior => AIBehavior.Name); | ||||
} | |||||
else if (pData.AIDiff !== undefined && | |||||
g_Settings.AIDifficulties[pData.AIDiff].Name == "sandbox" && | |||||
pData.AIBehavior != "balanced") | |||||
{ | |||||
pData.AIBehavior = "balanced"; | |||||
this.gameSettingsControl.updateGameAttributes(); | |||||
} | |||||
else if (pData.AIBehavior === undefined) | |||||
{ | |||||
pData.AIBehavior = this.defaultBehavior; | |||||
this.gameSettingsControl.updateGameAttributes(); | |||||
} | |||||
} | |||||
else if (pData.AIBehavior !== undefined) | |||||
{ | |||||
delete pData.AIBehavior; | |||||
this.gameSettingsControl.updateGameAttributes(); | |||||
} | |||||
} | |||||
updateSelectedValue() | let ai = g_NewGameSettings.playerAI.get(this.playerIndex); | ||||
{ | this.setHidden(!ai); | ||||
let pData = this.gameSettingsControl.getPlayerData(g_GameAttributes, this.playerIndex); | if (!!ai) | ||||
this.setHidden(!pData || !pData.AI || g_Settings.AIDifficulties[pData.AIDiff].Name == "sandbox"); | this.setSelectedValue(ai.behavior); | ||||
if (pData && pData.AI && pData.AIDiff !== undefined && pData.AIBehavior !== undefined) | |||||
this.setSelectedValue(pData.AIBehavior); | |||||
} | } | ||||
onSelectionChange(itemIdx) | onSelectionChange(itemIdx) | ||||
{ | { | ||||
let pData = this.gameSettingsControl.getPlayerData(g_GameAttributes, this.playerIndex); | g_NewGameSettings.playerAI.setBehavior(this.playerIndex, this.dropdown.list_data[itemIdx]); | ||||
if (!g_IsController || !pData) | |||||
return; | |||||
pData.AIBehavior = g_Settings.AIBehaviors[itemIdx].Name; | |||||
this.gameSettingsControl.updateGameAttributes(); | |||||
this.gameSettingsControl.setNetworkGameAttributes(); | this.gameSettingsControl.setNetworkGameAttributes(); | ||||
} | } | ||||
} | }; | ||||
AIGameSettingControls.AIBehavior.prototype.ConfigBehavior = | |||||
"gui.gamesetup.aibehavior"; | |||||
AIGameSettingControls.AIBehavior.prototype.TitleCaption = | AIGameSettingControls.AIBehavior.prototype.TitleCaption = | ||||
translate("AI Behavior"); | translate("AI Behavior"); |
Wildfire Games · Phabricator