mirror of
https://gitea.wildfiregames.com/0ad/0ad
synced 2026-06-19 14:53:56 -07:00
Avoids further session commits that missed to keep options.json session code in sync, enables use of anonymous or object owned config callback handlers and encourages session developers to make the GUI more reactive to changing options. Update RangeOverlays when reseting to default, and update RangeOverlays of selected entities upon closing the page too (not only hotkey). Differential Revision: https://code.wildfiregames.com/D2389 This was SVN commit r23091.
80 lines
1.7 KiB
JavaScript
80 lines
1.7 KiB
JavaScript
/**
|
|
* This class informs:
|
|
* - the GuiInterface of which components of entities are to display range overlays and
|
|
* - the RangeOverlayManager entity component which entities are to display range overlays.
|
|
*/
|
|
class RangeOverlayManager
|
|
{
|
|
constructor(selection)
|
|
{
|
|
this.selection = selection;
|
|
|
|
for (let type of this.Types)
|
|
{
|
|
this.setEnabled(type, this.isEnabled(type));
|
|
Engine.SetGlobalHotkey(type.hotkey, this.toggle.bind(this, type));
|
|
}
|
|
|
|
registerConfigChangeHandler(this.onConfigChange.bind(this));
|
|
}
|
|
|
|
onConfigChange(changes)
|
|
{
|
|
for (let type of this.Types)
|
|
if (changes.has(type.config))
|
|
this.setEnabled(type, this.isEnabled(type));
|
|
}
|
|
|
|
isEnabled(type)
|
|
{
|
|
return Engine.ConfigDB_GetValue("user", type.config) == "true";
|
|
}
|
|
|
|
setEnabled(type, enabled)
|
|
{
|
|
Engine.GuiInterfaceCall("EnableVisualRangeOverlayType", {
|
|
"type": type.component,
|
|
"enabled": enabled
|
|
});
|
|
|
|
let selected = this.selection.toList();
|
|
for (let ent in this.selection.highlighted)
|
|
selected.push(this.selection.highlighted[ent]);
|
|
|
|
Engine.GuiInterfaceCall("SetRangeOverlays", {
|
|
"entities": selected,
|
|
"enabled": enabled
|
|
});
|
|
}
|
|
|
|
toggle(type)
|
|
{
|
|
let enabled = !this.isEnabled(type);
|
|
|
|
Engine.ConfigDB_CreateAndWriteValueToFile(
|
|
"user",
|
|
type.config,
|
|
String(enabled),
|
|
"config/user.cfg");
|
|
|
|
this.setEnabled(type, enabled);
|
|
}
|
|
}
|
|
|
|
RangeOverlayManager.prototype.Types = [
|
|
{
|
|
"component": "Attack",
|
|
"config": "gui.session.attackrange",
|
|
"hotkey": "session.toggleattackrange"
|
|
},
|
|
{
|
|
"component": "Auras",
|
|
"config": "gui.session.aurasrange",
|
|
"hotkey": "session.toggleaurasrange"
|
|
},
|
|
{
|
|
"component": "Heal",
|
|
"config": "gui.session.healrange",
|
|
"hotkey": "session.togglehealrange"
|
|
}
|
|
];
|