mirror of
https://gitea.wildfiregames.com/0ad/0ad
synced 2026-06-17 13:53:57 -07:00
eslint --no-config-lookup --fix --rule '"prefer-const": 1' \
binaries/data/mods/public/simulation/components/[R-S]*
Ref: #7812
Signed-off-by: Ralph Sennhauser <ralph.sennhauser@gmail.com>
92 lines
2.5 KiB
JavaScript
92 lines
2.5 KiB
JavaScript
function RangeOverlayManager() {}
|
|
|
|
RangeOverlayManager.prototype.Schema = "<empty/>";
|
|
|
|
RangeOverlayManager.prototype.Init = function()
|
|
{
|
|
this.enabled = false;
|
|
this.enabledRangeTypes = {
|
|
"Attack": false,
|
|
"Auras": false,
|
|
"Heal": false
|
|
};
|
|
|
|
this.rangeVisualizations = new Map();
|
|
};
|
|
|
|
// The GUI enables visualizations
|
|
RangeOverlayManager.prototype.Serialize = null;
|
|
|
|
RangeOverlayManager.prototype.Deserialize = function(data)
|
|
{
|
|
this.Init();
|
|
};
|
|
|
|
RangeOverlayManager.prototype.UpdateRangeOverlays = function(componentName)
|
|
{
|
|
const cmp = Engine.QueryInterface(this.entity, global["IID_" + componentName]);
|
|
if (cmp)
|
|
this.rangeVisualizations.set(componentName, cmp.GetRangeOverlays());
|
|
};
|
|
|
|
RangeOverlayManager.prototype.SetEnabled = function(enabled, enabledRangeTypes, forceUpdate)
|
|
{
|
|
this.enabled = enabled;
|
|
this.enabledRangeTypes = enabledRangeTypes;
|
|
|
|
this.RegenerateRangeOverlays(forceUpdate);
|
|
};
|
|
|
|
RangeOverlayManager.prototype.RegenerateRangeOverlays = function(forceUpdate)
|
|
{
|
|
const cmpRangeOverlayRenderer = Engine.QueryInterface(this.entity, IID_RangeOverlayRenderer);
|
|
if (!cmpRangeOverlayRenderer)
|
|
return;
|
|
|
|
cmpRangeOverlayRenderer.ResetRangeOverlays();
|
|
|
|
if (!this.enabled && !forceUpdate)
|
|
return;
|
|
|
|
// Only render individual range types that have been enabled
|
|
for (const rangeOverlayType of this.rangeVisualizations.keys())
|
|
if (this.enabledRangeTypes[rangeOverlayType])
|
|
for (const rangeOverlay of this.rangeVisualizations.get(rangeOverlayType))
|
|
cmpRangeOverlayRenderer.AddRangeOverlay(
|
|
rangeOverlay.radius,
|
|
rangeOverlay.texture,
|
|
rangeOverlay.textureMask,
|
|
rangeOverlay.thickness);
|
|
};
|
|
|
|
RangeOverlayManager.prototype.OnOwnershipChanged = function(msg)
|
|
{
|
|
if (msg.to == INVALID_PLAYER)
|
|
return;
|
|
for (const type in this.enabledRangeTypes)
|
|
this.UpdateRangeOverlays(type);
|
|
|
|
this.RegenerateRangeOverlays(false);
|
|
};
|
|
|
|
RangeOverlayManager.prototype.OnValueModification = function(msg)
|
|
{
|
|
if (msg.valueNames.indexOf("Heal/Range") == -1 &&
|
|
msg.valueNames.indexOf("Attack/Ranged/MinRange") == -1 &&
|
|
msg.valueNames.indexOf("Attack/Ranged/MaxRange") == -1)
|
|
return;
|
|
|
|
this.UpdateRangeOverlays(msg.component);
|
|
this.RegenerateRangeOverlays(false);
|
|
};
|
|
|
|
/**
|
|
* RangeOverlayManager component is deserialized before the TechnologyManager, so need to update the ranges here
|
|
*/
|
|
RangeOverlayManager.prototype.OnDeserialized = function(msg)
|
|
{
|
|
for (const type in this.enabledRangeTypes)
|
|
this.UpdateRangeOverlays(type);
|
|
};
|
|
|
|
Engine.RegisterComponentType(IID_RangeOverlayManager, "RangeOverlayManager", RangeOverlayManager);
|