1
0
forked from mirrors/0ad
Files
0ad/binaries/data/mods/public/gui/reference/common/Dropdowns/CivSelectDropdown.js
T
s0600204 b2842e8021 Rewrite Structure Tree and Template Viewer to use OOP principles
Commenters: elexis, Stan, Angen
Refs.: #5387
Differential Revision: https://code.wildfiregames.com/D2734
This was SVN commit r23808.
2020-07-07 19:11:36 +00:00

64 lines
1.2 KiB
JavaScript

class CivSelectDropdown
{
constructor(civData)
{
this.handlers = new Set();
let civList = Object.keys(civData).map(civ => ({
"name": civData[civ].Name,
"code": civ,
})).sort(sortNameIgnoreCase);
this.civSelectionHeading = Engine.GetGUIObjectByName("civSelectionHeading");
this.civSelectionHeading.caption = this.Caption;
this.civSelection = Engine.GetGUIObjectByName("civSelection");
this.civSelection.list = civList.map(c => c.name);
this.civSelection.list_data = civList.map(c => c.code);
this.civSelection.onSelectionChange = () => this.onSelectionChange(this);
}
onSelectionChange()
{
let civCode = this.civSelection.list_data[this.civSelection.selected];
for (let handler of this.handlers)
handler(civCode);
}
registerHandler(handler)
{
this.handlers.add(handler);
}
unregisterHandler(handler)
{
this.handlers.delete(handler);
}
hasCivs()
{
return this.civSelection.list.length != 0;
}
selectCiv(civCode)
{
if (!civCode)
return;
let index = this.civSelection.list_data.indexOf(civCode);
if (index == -1)
return;
this.civSelection.selected = index;
}
selectFirstCiv()
{
this.civSelection.selected = 0;
}
}
CivSelectDropdown.prototype.Caption =
translate("Civilization:");