Differential D3243 Diff 16556 ps/trunk/binaries/data/mods/public/gui/gamesetup/Pages/AIConfigPage/Controls/AISelection.js
Changeset View
Changeset View
Standalone View
Standalone View
ps/trunk/binaries/data/mods/public/gui/gamesetup/Pages/AIConfigPage/Controls/AISelection.js
AIGameSettingControls.AISelection = class extends AIGameSettingControlDropdown | AIGameSettingControls.AISelection = class extends AIGameSettingControlDropdown | ||||
{ | { | ||||
constructor(...args) | constructor(...args) | ||||
{ | { | ||||
super(...args); | super(...args); | ||||
this.fixedAI = []; | g_GameSettings.playerAI.watch(() => this.render(), ["values"]); | ||||
this.values = prepareForDropdown([ | this.values = prepareForDropdown([ | ||||
this.NoAI, | this.NoAI, | ||||
...g_Settings.AIDescriptions.map(AI => ({ | ...g_Settings.AIDescriptions.map(AI => ({ | ||||
"Title": AI.data.name, | "Title": AI.data.name, | ||||
"Id": AI.id | "Id": AI.id | ||||
})) | })) | ||||
]); | ]); | ||||
this.dropdown.list = this.values.Title; | this.dropdown.list = this.values.Title; | ||||
this.dropdown.list_data = this.values.Id.map((v, i) => i); | this.dropdown.list_data = this.values.Id; | ||||
} | } | ||||
onAssignPlayer(source, target) | render() | ||||
{ | { | ||||
if (source && target.AI) | let ai = g_GameSettings.playerAI.get(this.playerIndex); | ||||
source.AI = target.AI; | this.setHidden(!ai); | ||||
if (!!ai) | |||||
target.AI = false; | this.setSelectedValue(ai.bot); | ||||
} | else | ||||
this.setSelectedValue(undefined); | |||||
onMapChange(mapData) | |||||
{ | |||||
for (let playerIndex = 0; playerIndex < g_MaxPlayers; ++playerIndex) | |||||
{ | |||||
let mapPData = this.gameSettingsControl.getPlayerData(mapData, playerIndex); | |||||
this.fixedAI[playerIndex] = mapPData && mapPData.AI || undefined; | |||||
} | |||||
} | |||||
onGameAttributesChangePlayer(playerIndex) | |||||
{ | |||||
let pData = this.gameSettingsControl.getPlayerData(g_GameAttributes, playerIndex); | |||||
if (!pData) | |||||
return; | |||||
if (this.fixedAI[playerIndex] && pData.AI !== this.fixedAI[playerIndex]) | |||||
{ | |||||
pData.AI = this.fixedAI[playerIndex]; | |||||
this.gameSettingsControl.updateGameAttributes(); | |||||
} | |||||
else if (pData.AI === undefined) | |||||
{ | |||||
let assignedGUID; | |||||
for (let guid in g_PlayerAssignments) | |||||
if (g_PlayerAssignments[guid].player == playerIndex + 1) | |||||
{ | |||||
assignedGUID = guid; | |||||
break; | |||||
} | |||||
pData.AI = assignedGUID ? false : g_Settings.PlayerDefaults[playerIndex + 1].AI; | |||||
this.gameSettingsControl.updateGameAttributes(); | |||||
} | |||||
} | |||||
updateSelectedValue() | |||||
{ | |||||
let pData = this.gameSettingsControl.getPlayerData(g_GameAttributes, this.playerIndex); | |||||
if (!pData || pData.AI === undefined) | |||||
return; | |||||
this.setSelectedValue(this.values.Id.indexOf(pData.AI)); | |||||
} | } | ||||
onSelectionChange(itemIdx) | onSelectionChange(itemIdx) | ||||
{ | { | ||||
let pData = this.gameSettingsControl.getPlayerData(g_GameAttributes, this.playerIndex); | g_GameSettings.playerAI.setAI(this.playerIndex, this.dropdown.list_data[itemIdx]); | ||||
if (!pData) | |||||
return; | |||||
pData.AI = this.values.Id[itemIdx]; | |||||
this.gameSettingsControl.updateGameAttributes(); | |||||
this.gameSettingsControl.setNetworkGameAttributes(); | this.gameSettingsControl.setNetworkGameAttributes(); | ||||
} | } | ||||
} | }; | ||||
AIGameSettingControls.AISelection.prototype.NoAI = { | AIGameSettingControls.AISelection.prototype.NoAI = { | ||||
"Title": translateWithContext("ai", "None"), | "Title": translateWithContext("ai", "None"), | ||||
"Id": false | "Id": undefined | ||||
}; | }; | ||||
AIGameSettingControls.AISelection.prototype.TitleCaption = | AIGameSettingControls.AISelection.prototype.TitleCaption = | ||||
translate("AI Player"); | translate("AI Player"); |
Wildfire Games · Phabricator