1
0
forked from mirrors/0ad

Fix eslint rule 'prefer-const' in components/[T-V]*

eslint --no-config-lookup --fix --rule '"prefer-const": 1' \
    binaries/data/mods/public/simulation/components/[T-V]*

Ref: #7812
Signed-off-by: Ralph Sennhauser <ralph.sennhauser@gmail.com>
This commit is contained in:
Ralph Sennhauser
2025-05-12 13:10:26 +02:00
parent 4b3124e364
commit e7f1406c37
14 changed files with 187 additions and 187 deletions
@@ -210,8 +210,8 @@ TechnologyManager.prototype.Init = function()
// Some technologies are automatically researched when their conditions are met. They have no cost and are
// researched instantly. This allows civ bonuses and more complicated technologies.
this.unresearchedAutoResearchTechs = new Set();
let allTechs = TechnologyTemplates.GetAll();
for (let key in allTechs)
const allTechs = TechnologyTemplates.GetAll();
for (const key in allTechs)
if (allTechs[key].autoResearch || allTechs[key].top)
this.unresearchedAutoResearchTechs.add(key);
};
@@ -260,9 +260,9 @@ TechnologyManager.prototype.OnUpdate = function()
// This function checks if the requirements of any autoresearch techs are met and if they are it researches them
TechnologyManager.prototype.UpdateAutoResearch = function()
{
for (let key of this.unresearchedAutoResearchTechs)
for (const key of this.unresearchedAutoResearchTechs)
{
let tech = TechnologyTemplates.Get(key);
const tech = TechnologyTemplates.Get(key);
if ((tech.autoResearch && this.CanResearch(key)) ||
(tech.top && (this.IsTechnologyResearched(tech.top) || this.IsTechnologyResearched(tech.bottom))))
{
@@ -298,7 +298,7 @@ TechnologyManager.prototype.IsTechnologyResearched = function(tech)
// Checks the requirements for a technology to see if it can be researched at the current time
TechnologyManager.prototype.CanResearch = function(tech)
{
let template = TechnologyTemplates.Get(tech);
const template = TechnologyTemplates.Get(tech);
if (!template)
{
@@ -331,7 +331,7 @@ TechnologyManager.prototype.CanResearch = function(tech)
*/
TechnologyManager.prototype.CheckTechnologyRequirements = function(reqs, civonly = false)
{
let cmpPlayer = Engine.QueryInterface(this.entity, IID_Player);
const cmpPlayer = Engine.QueryInterface(this.entity, IID_Player);
if (!reqs)
return false;
@@ -388,7 +388,7 @@ TechnologyManager.prototype.OnGlobalOwnershipChanged = function(msg)
// don't use foundations for the class counts but check if techs apply (e.g. health increase)
if (!Engine.QueryInterface(msg.entity, IID_Foundation))
{
for (let cls of classes)
for (const cls of classes)
{
this.classCounts[cls] = this.classCounts[cls] || 0;
this.classCounts[cls] += 1;
@@ -411,7 +411,7 @@ TechnologyManager.prototype.OnGlobalOwnershipChanged = function(msg)
if (cmpIdentity)
{
var classes = cmpIdentity.GetClassesList();
for (let cls of classes)
for (const cls of classes)
{
this.classCounts[cls] -= 1;
if (this.classCounts[cls] <= 0)
@@ -71,7 +71,7 @@ TerritoryDecay.prototype.IsConnected = function()
this.connectedNeighbours = cmpTerritoryManager.GetNeighbours(pos.x, pos.y, true);
let numPlayers = Engine.QueryInterface(SYSTEM_ENTITY, IID_PlayerManager).GetNumPlayers();
const numPlayers = Engine.QueryInterface(SYSTEM_ENTITY, IID_PlayerManager).GetNumPlayers();
for (var i = 1; i < numPlayers; ++i)
if (this.connectedNeighbours[i] > 0 && cmpDiplomacy.IsMutualAlly(i))
{
@@ -108,7 +108,7 @@ TerritoryDecay.prototype.GetConnectedNeighbours = function()
TerritoryDecay.prototype.UpdateDecayState = function()
{
let decaying = !this.IsConnected() && this.GetDecayRate() > 0;
const decaying = !this.IsConnected() && this.GetDecayRate() > 0;
if (decaying === this.decaying)
return;
this.decaying = decaying;
@@ -117,13 +117,13 @@ TerritoryDecay.prototype.UpdateDecayState = function()
TerritoryDecay.prototype.UpdateOwner = function()
{
let cmpOwnership = Engine.QueryInterface(this.entity, IID_Ownership);
let cmpPosition = Engine.QueryInterface(this.entity, IID_Position);
const cmpOwnership = Engine.QueryInterface(this.entity, IID_Ownership);
const cmpPosition = Engine.QueryInterface(this.entity, IID_Position);
if (!cmpOwnership || !cmpPosition || !cmpPosition.IsInWorld())
return;
let cmpTerritoryManager = Engine.QueryInterface(SYSTEM_ENTITY, IID_TerritoryManager);
let pos = cmpPosition.GetPosition2D();
let tileOwner = cmpTerritoryManager.GetOwner(pos.x, pos.y);
const cmpTerritoryManager = Engine.QueryInterface(SYSTEM_ENTITY, IID_TerritoryManager);
const pos = cmpPosition.GetPosition2D();
const tileOwner = cmpTerritoryManager.GetOwner(pos.x, pos.y);
if (tileOwner != cmpOwnership.GetOwner())
cmpOwnership.SetOwner(tileOwner);
};
@@ -156,7 +156,7 @@ TerritoryDecay.prototype.OnOwnershipChanged = function(msg)
// Update the list of TerritoryDecay components in the manager
if (msg.from == INVALID_PLAYER || msg.to == INVALID_PLAYER)
{
let cmpTerritoryDecayManager = Engine.QueryInterface(SYSTEM_ENTITY, IID_TerritoryDecayManager);
const cmpTerritoryDecayManager = Engine.QueryInterface(SYSTEM_ENTITY, IID_TerritoryDecayManager);
if (msg.from == INVALID_PLAYER)
cmpTerritoryDecayManager.Add(this.entity);
else
@@ -20,7 +20,7 @@ TerritoryDecayManager.prototype.Remove = function(ent)
TerritoryDecayManager.prototype.SetBlinkingEntities = function()
{
for (let ent of this.list.values())
for (const ent of this.list.values())
Engine.QueryInterface(ent, IID_TerritoryDecay).IsConnected();
};
@@ -58,7 +58,7 @@ Timer.prototype.SetTimeout = function(ent, iid, funcname, time, data)
*/
Timer.prototype.SetInterval = function(ent, iid, funcname, time, repeattime, data)
{
let id = ++this.id;
const id = ++this.id;
this.timers.set(id, {
"entity": ent,
@@ -81,7 +81,7 @@ Timer.prototype.SetInterval = function(ent, iid, funcname, time, repeattime, dat
*/
Timer.prototype.UpdateRepeatTime = function(timerID, newRepeatTime)
{
let timer = this.timers.get(timerID);
const timer = this.timers.get(timerID);
if (timer)
this.timers.set(timerID, {
"entity": timer.entity,
@@ -113,22 +113,22 @@ Timer.prototype.OnUpdate = function(msg)
// Collect the timers that need to run
// (We do this in two stages to avoid deleting from the timer list while
// we're in the middle of iterating through it)
let run = [];
const run = [];
this.timers.forEach((timer, id) => {
if (timer.time <= this.time)
run.push(id);
});
for (let id of run)
for (const id of run)
{
let timer = this.timers.get(id);
const timer = this.timers.get(id);
// An earlier timer might have cancelled this one, so skip it
if (!timer)
continue;
// The entity was probably destroyed; clean up the timer
let timerTargetComponent = Engine.QueryInterface(timer.entity, timer.iid);
const timerTargetComponent = Engine.QueryInterface(timer.entity, timer.iid);
if (!timerTargetComponent)
{
this.timers.delete(id);
@@ -30,26 +30,26 @@ Trader.prototype.Init = function()
Trader.prototype.CalculateGain = function(currentMarket, nextMarket)
{
let cmpMarket = QueryMiragedInterface(currentMarket, IID_Market);
let gain = cmpMarket && cmpMarket.CalculateTraderGain(nextMarket, this.template, this.entity);
const cmpMarket = QueryMiragedInterface(currentMarket, IID_Market);
const gain = cmpMarket && cmpMarket.CalculateTraderGain(nextMarket, this.template, this.entity);
if (!gain) // One of our markets must have been destroyed
return null;
// For garrisonable unit increase gain for each garrisoned trader
// Calculate this here to save passing unnecessary stuff into the CalculateTraderGain function
let garrisonGainMultiplier = this.GetGarrisonGainMultiplier();
const garrisonGainMultiplier = this.GetGarrisonGainMultiplier();
if (garrisonGainMultiplier === undefined)
return gain;
let cmpGarrisonHolder = Engine.QueryInterface(this.entity, IID_GarrisonHolder);
const cmpGarrisonHolder = Engine.QueryInterface(this.entity, IID_GarrisonHolder);
if (!cmpGarrisonHolder)
return gain;
let garrisonMultiplier = 1;
let garrisonedTradersCount = 0;
for (let entity of cmpGarrisonHolder.GetEntities())
for (const entity of cmpGarrisonHolder.GetEntities())
{
let cmpGarrisonedUnitTrader = Engine.QueryInterface(entity, IID_Trader);
const cmpGarrisonedUnitTrader = Engine.QueryInterface(entity, IID_Trader);
if (cmpGarrisonedUnitTrader)
++garrisonedTradersCount;
}
@@ -74,7 +74,7 @@ Trader.prototype.RemoveTargetMarket = function(target)
{
if (this.markets.length != 1 || this.markets[0] != target)
return false;
let cmpTargetMarket = QueryMiragedInterface(target, IID_Market);
const cmpTargetMarket = QueryMiragedInterface(target, IID_Market);
if (!cmpTargetMarket)
return false;
cmpTargetMarket.RemoveTrader(this.entity);
@@ -87,14 +87,14 @@ Trader.prototype.RemoveTargetMarket = function(target)
// Return true if at least one of markets was changed.
Trader.prototype.SetTargetMarket = function(target, source)
{
let cmpTargetMarket = QueryMiragedInterface(target, IID_Market);
const cmpTargetMarket = QueryMiragedInterface(target, IID_Market);
if (!cmpTargetMarket)
return false;
if (source)
{
// Establish a trade route with both markets in one go.
let cmpSourceMarket = QueryMiragedInterface(source, IID_Market);
const cmpSourceMarket = QueryMiragedInterface(source, IID_Market);
if (!cmpSourceMarket)
return false;
this.markets = [source];
@@ -103,9 +103,9 @@ Trader.prototype.SetTargetMarket = function(target, source)
{
// If we already have both markets - drop them
// and use the target as first market
for (let market of this.markets)
for (const market of this.markets)
{
let cmpMarket = QueryMiragedInterface(market, IID_Market);
const cmpMarket = QueryMiragedInterface(market, IID_Market);
if (cmpMarket)
cmpMarket.RemoveTrader(this.entity);
}
@@ -188,11 +188,11 @@ Trader.prototype.CanTrade = function(target)
Trader.prototype.AddResources = function(ent, gain)
{
let cmpPlayer = QueryOwnerInterface(ent);
const cmpPlayer = QueryOwnerInterface(ent);
if (cmpPlayer)
cmpPlayer.AddResource(this.goods.type, gain);
let cmpStatisticsTracker = QueryOwnerInterface(ent, IID_StatisticsTracker);
const cmpStatisticsTracker = QueryOwnerInterface(ent, IID_StatisticsTracker);
if (cmpStatisticsTracker)
cmpStatisticsTracker.IncreaseTradeIncomeCounter(gain);
};
@@ -210,7 +210,7 @@ Trader.prototype.GenerateResources = function(currentMarket, nextMarket)
Trader.prototype.PerformTrade = function(currentMarket)
{
let previousMarket = this.markets[this.index];
const previousMarket = this.markets[this.index];
if (previousMarket != currentMarket) // Inconsistent markets
{
this.goods.amount = null;
@@ -218,12 +218,12 @@ Trader.prototype.PerformTrade = function(currentMarket)
}
this.index = ++this.index % this.markets.length;
let nextMarket = this.markets[this.index];
const nextMarket = this.markets[this.index];
if (this.goods.amount && this.goods.amount.traderGain)
this.GenerateResources(previousMarket, nextMarket);
let cmpPlayer = QueryOwnerInterface(this.entity);
const cmpPlayer = QueryOwnerInterface(this.entity);
if (!cmpPlayer)
return INVALID_ENTITY;
@@ -251,11 +251,11 @@ Trader.prototype.HasMarket = function(market)
*/
Trader.prototype.RemoveMarket = function(market)
{
let index = this.markets.indexOf(market);
const index = this.markets.indexOf(market);
if (index == -1)
return;
this.markets.splice(index, 1);
let cmpUnitAI = Engine.QueryInterface(this.entity, IID_UnitAI);
const cmpUnitAI = Engine.QueryInterface(this.entity, IID_UnitAI);
if (cmpUnitAI)
cmpUnitAI.MarketRemoved(market);
};
@@ -265,20 +265,20 @@ Trader.prototype.RemoveMarket = function(market)
*/
Trader.prototype.SwitchMarket = function(oldMarket, newMarket)
{
let index = this.markets.indexOf(oldMarket);
const index = this.markets.indexOf(oldMarket);
if (index == -1)
return;
this.markets[index] = newMarket;
let cmpUnitAI = Engine.QueryInterface(this.entity, IID_UnitAI);
const cmpUnitAI = Engine.QueryInterface(this.entity, IID_UnitAI);
if (cmpUnitAI)
cmpUnitAI.SwitchMarketOrder(oldMarket, newMarket);
};
Trader.prototype.StopTrading = function()
{
for (let market of this.markets)
for (const market of this.markets)
{
let cmpMarket = QueryMiragedInterface(market, IID_Market);
const cmpMarket = QueryMiragedInterface(market, IID_Market);
if (cmpMarket)
cmpMarket.RemoveTrader(this.entity);
}
@@ -293,7 +293,7 @@ Trader.prototype.StopTrading = function()
// to be able to trade with it.
Trader.prototype.GetRange = function()
{
let cmpObstruction = Engine.QueryInterface(this.entity, IID_Obstruction);
const cmpObstruction = Engine.QueryInterface(this.entity, IID_Obstruction);
let max = 1;
if (cmpObstruction)
max += cmpObstruction.GetSize() * 1.5;
@@ -23,9 +23,9 @@ Treasure.prototype.Init = function()
Treasure.prototype.ComputeReward = function()
{
for (let resource in this.template.Resources)
for (const resource in this.template.Resources)
{
let amount = ApplyValueModificationsToEntity("Treasure/Resources/" + resource, this.template.Resources[resource], this.entity);
const amount = ApplyValueModificationsToEntity("Treasure/Resources/" + resource, this.template.Resources[resource], this.entity);
if (!amount)
continue;
if (!this.resources)
@@ -59,22 +59,22 @@ Treasure.prototype.Reward = function(entity)
if (this.isTaken)
return false;
let cmpPlayer = QueryOwnerInterface(entity);
const cmpPlayer = QueryOwnerInterface(entity);
if (!cmpPlayer)
return false;
let cmpFogging = Engine.QueryInterface(this.entity, IID_Fogging);
const cmpFogging = Engine.QueryInterface(this.entity, IID_Fogging);
if (cmpFogging)
cmpFogging.Activate();
if (this.resources)
cmpPlayer.AddResources(this.resources);
let cmpStatisticsTracker = QueryOwnerInterface(entity, IID_StatisticsTracker);
const cmpStatisticsTracker = QueryOwnerInterface(entity, IID_StatisticsTracker);
if (cmpStatisticsTracker)
cmpStatisticsTracker.IncreaseTreasuresCollectedCounter();
let cmpTrigger = Engine.QueryInterface(SYSTEM_ENTITY, IID_Trigger);
const cmpTrigger = Engine.QueryInterface(SYSTEM_ENTITY, IID_Trigger);
cmpTrigger.CallEvent("OnTreasureCollected", {
"player": cmpPlayer.GetPlayerID(),
"treasure": this.entity
@@ -27,7 +27,7 @@ TreasureCollector.prototype.GetRange = function()
*/
TreasureCollector.prototype.CanCollect = function(target)
{
let cmpTreasure = Engine.QueryInterface(target, IID_Treasure);
const cmpTreasure = Engine.QueryInterface(target, IID_Treasure);
return cmpTreasure && cmpTreasure.IsAvailable();
};
@@ -42,11 +42,11 @@ TreasureCollector.prototype.StartCollecting = function(target, callerIID)
if (this.target)
this.StopCollecting();
let cmpTreasure = Engine.QueryInterface(target, IID_Treasure);
const cmpTreasure = Engine.QueryInterface(target, IID_Treasure);
if (!cmpTreasure || !cmpTreasure.IsAvailable())
return false;
let cmpVisual = Engine.QueryInterface(this.entity, IID_Visual);
const cmpVisual = Engine.QueryInterface(this.entity, IID_Visual);
if (cmpVisual)
cmpVisual.SelectAnimation("collecting_treasure", false, 1.0);
@@ -54,7 +54,7 @@ TreasureCollector.prototype.StartCollecting = function(target, callerIID)
this.callerIID = callerIID;
// ToDo: Implement rate modifiers.
let cmpTimer = Engine.QueryInterface(SYSTEM_ENTITY, IID_Timer);
const cmpTimer = Engine.QueryInterface(SYSTEM_ENTITY, IID_Timer);
this.timer = cmpTimer.SetTimeout(this.entity, IID_TreasureCollector, "CollectTreasure", cmpTreasure.CollectionTime(), null);
return true;
@@ -68,24 +68,24 @@ TreasureCollector.prototype.StopCollecting = function(reason)
if (!this.target)
return;
let cmpTimer = Engine.QueryInterface(SYSTEM_ENTITY, IID_Timer);
const cmpTimer = Engine.QueryInterface(SYSTEM_ENTITY, IID_Timer);
cmpTimer.CancelTimer(this.timer);
delete this.timer;
delete this.target;
let cmpVisual = Engine.QueryInterface(this.entity, IID_Visual);
const cmpVisual = Engine.QueryInterface(this.entity, IID_Visual);
if (cmpVisual)
cmpVisual.SelectAnimation("idle", false, 1.0);
// The callerIID component may start again,
// replacing the callerIID, hence save that.
let callerIID = this.callerIID;
const callerIID = this.callerIID;
delete this.callerIID;
if (reason && callerIID)
{
let component = Engine.QueryInterface(this.entity, callerIID);
const component = Engine.QueryInterface(this.entity, callerIID);
if (component)
component.ProcessMessage(reason, null);
}
@@ -96,7 +96,7 @@ TreasureCollector.prototype.StopCollecting = function(reason)
*/
TreasureCollector.prototype.CollectTreasure = function(data, lateness)
{
let cmpTreasure = Engine.QueryInterface(this.target, IID_Treasure);
const cmpTreasure = Engine.QueryInterface(this.target, IID_Treasure);
if (!cmpTreasure || !cmpTreasure.IsAvailable())
{
this.StopCollecting("TargetInvalidated");
@@ -119,8 +119,8 @@ TreasureCollector.prototype.CollectTreasure = function(data, lateness)
*/
TreasureCollector.prototype.IsTargetInRange = function(target)
{
let range = this.GetRange();
let cmpObstructionManager = Engine.QueryInterface(SYSTEM_ENTITY, IID_ObstructionManager);
const range = this.GetRange();
const cmpObstructionManager = Engine.QueryInterface(SYSTEM_ENTITY, IID_ObstructionManager);
return cmpObstructionManager.IsInTargetRange(this.entity, target, range.min, range.max, false);
};
@@ -8,8 +8,8 @@ class TurretHolder
{
this.turretPoints = [];
let points = this.template.TurretPoints;
for (let point in points)
const points = this.template.TurretPoints;
for (const point in points)
this.turretPoints.push({
"name": point,
"offset": {
@@ -88,7 +88,7 @@ class TurretHolder
if (!turretPoint.allowedClasses)
return true;
let cmpIdentity = Engine.QueryInterface(entity, IID_Identity);
const cmpIdentity = Engine.QueryInterface(entity, IID_Identity);
return cmpIdentity && MatchesClassList(cmpIdentity.GetClassesList(), turretPoint.allowedClasses);
}
@@ -110,11 +110,11 @@ class TurretHolder
*/
OccupyTurretPoint(entity, requestedTurretPoint)
{
let cmpPositionOccupant = Engine.QueryInterface(entity, IID_Position);
const cmpPositionOccupant = Engine.QueryInterface(entity, IID_Position);
if (!cmpPositionOccupant)
return false;
let cmpPositionSelf = Engine.QueryInterface(this.entity, IID_Position);
const cmpPositionSelf = Engine.QueryInterface(this.entity, IID_Position);
if (!cmpPositionSelf)
return false;
@@ -234,7 +234,7 @@ class TurretHolder
*/
GetOccupiedTurretPointName(entity)
{
let turret = this.GetOccupiedTurretPoint(entity);
const turret = this.GetOccupiedTurretPoint(entity);
return turret ? turret.name : "";
}
@@ -243,8 +243,8 @@ class TurretHolder
*/
GetEntities()
{
let entities = [];
for (let turretPoint of this.turretPoints)
const entities = [];
for (const turretPoint of this.turretPoints)
if (turretPoint.entity)
entities.push(turretPoint.entity);
return entities;
@@ -274,7 +274,7 @@ class TurretHolder
{
if (!this.template.Pickup || this.IsFull())
return false;
let cmpOwner = Engine.QueryInterface(this.entity, IID_Ownership);
const cmpOwner = Engine.QueryInterface(this.entity, IID_Ownership);
return !!cmpOwner && IsOwnedByPlayer(cmpOwner.GetOwner(), ent);
}
@@ -283,13 +283,13 @@ class TurretHolder
*/
EjectOrKill(entities)
{
let removedEntities = [];
for (let entity of entities)
const removedEntities = [];
for (const entity of entities)
{
let cmpTurretable = Engine.QueryInterface(entity, IID_Turretable);
const cmpTurretable = Engine.QueryInterface(entity, IID_Turretable);
if (!cmpTurretable || !cmpTurretable.LeaveTurret(true))
{
let cmpHealth = Engine.QueryInterface(entity, IID_Health);
const cmpHealth = Engine.QueryInterface(entity, IID_Health);
if (cmpHealth)
cmpHealth.Kill();
else
@@ -331,13 +331,13 @@ class TurretHolder
if (msg.entity == this.entity)
{
let cmpTurretHolder = Engine.QueryInterface(msg.newentity, IID_TurretHolder);
const cmpTurretHolder = Engine.QueryInterface(msg.newentity, IID_TurretHolder);
if (cmpTurretHolder)
cmpTurretHolder.initTurrets = this.initTurrets;
}
else
{
let entityIndex = this.initTurrets.indexOf(msg.entity);
const entityIndex = this.initTurrets.indexOf(msg.entity);
if (entityIndex != -1)
this.initTurrets[entityIndex] = msg.newentity;
}
@@ -351,9 +351,9 @@ class TurretHolder
if (!this.initTurrets)
return;
for (let [turretPointName, entity] of this.initTurrets)
for (const [turretPointName, entity] of this.initTurrets)
{
let cmpTurretable = Engine.QueryInterface(entity, IID_Turretable);
const cmpTurretable = Engine.QueryInterface(entity, IID_Turretable);
if (!cmpTurretable || !cmpTurretable.OccupyTurret(this.entity, turretPointName, this.TurretPointByName(turretPointName).ejectable))
warn("Entity " + entity + " could not occupy the turret point " +
turretPointName + " of turret holder " + this.entity + ".");
@@ -367,12 +367,12 @@ class TurretHolder
*/
OnEntityRenamed(msg)
{
for (let entity of this.GetEntities())
for (const entity of this.GetEntities())
{
let cmpTurretable = Engine.QueryInterface(entity, IID_Turretable);
const cmpTurretable = Engine.QueryInterface(entity, IID_Turretable);
if (!cmpTurretable)
continue;
let currentPoint = this.GetOccupiedTurretPointName(entity);
const currentPoint = this.GetOccupiedTurretPointName(entity);
cmpTurretable.LeaveTurret(true);
cmpTurretable.OccupyTurret(msg.newentity, currentPoint);
}
@@ -389,7 +389,7 @@ class TurretHolder
return;
}
for (let point of this.turretPoints)
for (const point of this.turretPoints)
{
// If we were created, create any subunits now.
// This has to be done here (instead of on Init)
@@ -403,13 +403,13 @@ class TurretHolder
continue;
if (!point.ejectable)
{
let cmpTurretOwnership = Engine.QueryInterface(point.entity, IID_Ownership);
const cmpTurretOwnership = Engine.QueryInterface(point.entity, IID_Ownership);
if (cmpTurretOwnership)
cmpTurretOwnership.SetOwner(msg.to);
}
else if (!IsOwnedByMutualAllyOfEntity(point.entity, this.entity))
{
let cmpTurretable = Engine.QueryInterface(point.entity, IID_Turretable);
const cmpTurretable = Engine.QueryInterface(point.entity, IID_Turretable);
if (cmpTurretable)
cmpTurretable.LeaveTurret();
}
@@ -14,7 +14,7 @@ Turretable.prototype.Init = function()
*/
Turretable.prototype.GetRange = function(type, target)
{
let cmpTurretHolder = Engine.QueryInterface(target, IID_TurretHolder);
const cmpTurretHolder = Engine.QueryInterface(target, IID_TurretHolder);
return cmpTurretHolder ? cmpTurretHolder.LoadingRange() : { "min": 0, "max": 1 };
};
@@ -51,7 +51,7 @@ Turretable.prototype.CanOccupy = function(target)
if (this.holder)
return false;
let cmpTurretHolder = Engine.QueryInterface(target, IID_TurretHolder);
const cmpTurretHolder = Engine.QueryInterface(target, IID_TurretHolder);
return cmpTurretHolder && cmpTurretHolder.CanOccupy(this.entity);
};
@@ -67,23 +67,23 @@ Turretable.prototype.OccupyTurret = function(target, turretPointName = "", eject
if (!this.CanOccupy(target))
return false;
let cmpTurretHolder = Engine.QueryInterface(target, IID_TurretHolder);
const cmpTurretHolder = Engine.QueryInterface(target, IID_TurretHolder);
if (!cmpTurretHolder || !cmpTurretHolder.OccupyNamedTurretPoint(this.entity, turretPointName))
return false;
this.holder = target;
this.ejectable = ejectable;
let cmpUnitAI = Engine.QueryInterface(this.entity, IID_UnitAI);
const cmpUnitAI = Engine.QueryInterface(this.entity, IID_UnitAI);
if (cmpUnitAI)
cmpUnitAI.SetTurretStance();
let cmpUnitMotion = Engine.QueryInterface(this.entity, IID_UnitMotion);
const cmpUnitMotion = Engine.QueryInterface(this.entity, IID_UnitMotion);
if (cmpUnitMotion)
cmpUnitMotion.SetFacePointAfterMove(false);
// Remove the unit's obstruction to avoid interfering with pathing.
let cmpObstruction = Engine.QueryInterface(this.entity, IID_Obstruction);
const cmpObstruction = Engine.QueryInterface(this.entity, IID_Obstruction);
if (cmpObstruction)
cmpObstruction.SetActive(false);
@@ -107,31 +107,31 @@ Turretable.prototype.LeaveTurret = function(forced = false)
if (!this.ejectable && !forced)
return false;
let pos = PositionHelper.GetSpawnPosition(this.holder, this.entity, forced);
const pos = PositionHelper.GetSpawnPosition(this.holder, this.entity, forced);
if (!pos)
return false;
let cmpTurretHolder = Engine.QueryInterface(this.holder, IID_TurretHolder);
const cmpTurretHolder = Engine.QueryInterface(this.holder, IID_TurretHolder);
if (!cmpTurretHolder || !cmpTurretHolder.LeaveTurretPoint(this.entity, forced))
return false;
let cmpUnitMotionEntity = Engine.QueryInterface(this.entity, IID_UnitMotion);
const cmpUnitMotionEntity = Engine.QueryInterface(this.entity, IID_UnitMotion);
if (cmpUnitMotionEntity)
cmpUnitMotionEntity.SetFacePointAfterMove(true);
let cmpPosition = Engine.QueryInterface(this.entity, IID_Position);
const cmpPosition = Engine.QueryInterface(this.entity, IID_Position);
if (cmpPosition)
{
cmpPosition.SetTurretParent(INVALID_ENTITY, new Vector3D());
cmpPosition.JumpTo(pos.x, pos.z);
cmpPosition.SetHeightOffset(0);
let cmpHolderPosition = Engine.QueryInterface(this.holder, IID_Position);
const cmpHolderPosition = Engine.QueryInterface(this.holder, IID_Position);
if (cmpHolderPosition)
cmpPosition.SetYRotation(cmpHolderPosition.GetPosition().horizAngleTo(pos));
}
let cmpUnitAI = Engine.QueryInterface(this.entity, IID_UnitAI);
const cmpUnitAI = Engine.QueryInterface(this.entity, IID_UnitAI);
if (cmpUnitAI)
{
cmpUnitAI.Ungarrison();
@@ -139,7 +139,7 @@ Turretable.prototype.LeaveTurret = function(forced = false)
}
// Reset the obstruction flags to template defaults.
let cmpObstruction = Engine.QueryInterface(this.entity, IID_Obstruction);
const cmpObstruction = Engine.QueryInterface(this.entity, IID_Obstruction);
if (cmpObstruction)
cmpObstruction.SetActive(true);
@@ -148,7 +148,7 @@ Turretable.prototype.LeaveTurret = function(forced = false)
"holderID": INVALID_ENTITY
});
let cmpRallyPoint = Engine.QueryInterface(this.holder, IID_RallyPoint);
const cmpRallyPoint = Engine.QueryInterface(this.holder, IID_RallyPoint);
// Need to delete this before ordering to a rally
// point else we may not occupy another turret point.
@@ -166,14 +166,14 @@ Turretable.prototype.OnEntityRenamed = function(msg)
if (!this.holder)
return;
let cmpTurretHolder = Engine.QueryInterface(this.holder, IID_TurretHolder);
const cmpTurretHolder = Engine.QueryInterface(this.holder, IID_TurretHolder);
if (!cmpTurretHolder)
return;
let holder = this.holder;
let currentPoint = cmpTurretHolder.GetOccupiedTurretPointName(this.entity);
const holder = this.holder;
const currentPoint = cmpTurretHolder.GetOccupiedTurretPointName(this.entity);
this.LeaveTurret(true);
let cmpTurretableNew = Engine.QueryInterface(msg.newentity, IID_Turretable);
const cmpTurretableNew = Engine.QueryInterface(msg.newentity, IID_Turretable);
if (cmpTurretableNew)
cmpTurretableNew.OccupyTurret(holder, currentPoint);
};
@@ -65,16 +65,16 @@ UnitMotionFlying.prototype.Init = function()
UnitMotionFlying.prototype.OnUpdate = function(msg)
{
let turnLength = msg.turnLength;
const turnLength = msg.turnLength;
if (!this.hasTarget)
return;
let cmpGarrisonHolder = Engine.QueryInterface(this.entity, IID_GarrisonHolder);
let cmpPosition = Engine.QueryInterface(this.entity, IID_Position);
let pos = cmpPosition.GetPosition();
let angle = cmpPosition.GetRotation().y;
let cmpTerrain = Engine.QueryInterface(SYSTEM_ENTITY, IID_Terrain);
let cmpWaterManager = Engine.QueryInterface(SYSTEM_ENTITY, IID_WaterManager);
let ground = Math.max(cmpTerrain.GetGroundLevel(pos.x, pos.z), cmpWaterManager.GetWaterLevel(pos.x, pos.z));
const cmpGarrisonHolder = Engine.QueryInterface(this.entity, IID_GarrisonHolder);
const cmpPosition = Engine.QueryInterface(this.entity, IID_Position);
const pos = cmpPosition.GetPosition();
const angle = cmpPosition.GetRotation().y;
const cmpTerrain = Engine.QueryInterface(SYSTEM_ENTITY, IID_Terrain);
const cmpWaterManager = Engine.QueryInterface(SYSTEM_ENTITY, IID_WaterManager);
const ground = Math.max(cmpTerrain.GetGroundLevel(pos.x, pos.z), cmpWaterManager.GetWaterLevel(pos.x, pos.z));
let newangle = angle;
let canTurn = true;
let distanceToTargetSquared = Math.euclidDistance2DSquared(pos.x, pos.z, this.targetX, this.targetZ);
@@ -99,7 +99,7 @@ UnitMotionFlying.prototype.OnUpdate = function(msg)
}
else if (this.speed == 0 && this.onGround)
{
let cmpHealth = Engine.QueryInterface(this.entity, IID_Health);
const cmpHealth = Engine.QueryInterface(this.entity, IID_Health);
if (this.waterDeath && cmpHealth)
cmpHealth.Kill();
else
@@ -112,14 +112,14 @@ UnitMotionFlying.prototype.OnUpdate = function(msg)
this.hasTarget = false;
this.landing = false;
// Summon planes back from the edge of the map.
let terrainSize = cmpTerrain.GetMapSize();
let cmpRangeManager = Engine.QueryInterface(SYSTEM_ENTITY, IID_RangeManager);
const terrainSize = cmpTerrain.GetMapSize();
const cmpRangeManager = Engine.QueryInterface(SYSTEM_ENTITY, IID_RangeManager);
if (cmpRangeManager.GetLosCircular())
{
let mapRadius = terrainSize/2;
let x = pos.x - mapRadius;
let z = pos.z - mapRadius;
let div = (mapRadius - 12) / Math.sqrt(x*x + z*z);
const mapRadius = terrainSize/2;
const x = pos.x - mapRadius;
const z = pos.z - mapRadius;
const div = (mapRadius - 12) / Math.sqrt(x*x + z*z);
if (div < 1)
{
pos.x = mapRadius + x*div;
@@ -143,13 +143,13 @@ UnitMotionFlying.prototype.OnUpdate = function(msg)
// We need to slow down to land!
this.speed = Math.max(this.template.LandingSpeed, this.speed - turnLength * this.template.SlowingRate);
canTurn = false;
let targetHeight = ground;
const targetHeight = ground;
// Steep, then gradual descent.
if ((pos.y - targetHeight) / this.template.FlyingHeight > 1 / SHORT_FINAL)
this.pitch = -Math.PI / 18;
else
this.pitch = Math.PI / 18;
let descentRate = ((pos.y - targetHeight) / this.template.FlyingHeight * this.template.ClimbRate + SHORT_FINAL) * SHORT_FINAL;
const descentRate = ((pos.y - targetHeight) / this.template.FlyingHeight * this.template.ClimbRate + SHORT_FINAL) * SHORT_FINAL;
if (pos.y < targetHeight)
pos.y = Math.max(targetHeight, pos.y + turnLength * descentRate);
else if (pos.y > targetHeight)
@@ -197,7 +197,7 @@ UnitMotionFlying.prototype.OnUpdate = function(msg)
this.onGround = false;
// Climb/sink to max height above ground.
this.speed = Math.min(this.template.MaxSpeed, this.speed + turnLength * this.template.AccelRate);
let targetHeight = ground + (+this.template.FlyingHeight);
const targetHeight = ground + (+this.template.FlyingHeight);
if (Math.abs(pos.y-targetHeight) > this.template.FlyingHeight/5)
{
this.pitch = Math.PI / 9;
@@ -227,7 +227,7 @@ UnitMotionFlying.prototype.OnUpdate = function(msg)
// If we're facing away from the target, and are still fairly close to it,
// then carry on going straight so we overshoot in a straight line.
let isBehindTarget = ((this.targetX - pos.x) * Math.sin(angle) + (this.targetZ - pos.z) * Math.cos(angle) < 0);
const isBehindTarget = ((this.targetX - pos.x) * Math.sin(angle) + (this.targetZ - pos.z) * Math.cos(angle) < 0);
// Overshoot the target: carry on straight.
if (isBehindTarget && distanceToTargetSquared < this.template.MaxSpeed * this.template.MaxSpeed * this.template.OvershootTime * this.template.OvershootTime)
canTurn = false;
@@ -235,7 +235,7 @@ UnitMotionFlying.prototype.OnUpdate = function(msg)
if (canTurn)
{
// Turn towards the target.
let targetAngle = Math.atan2(this.targetX - pos.x, this.targetZ - pos.z);
const targetAngle = Math.atan2(this.targetX - pos.x, this.targetZ - pos.z);
let delta = targetAngle - angle;
// Wrap delta to -pi..pi.
delta = (delta + Math.PI) % (2*Math.PI);
@@ -243,7 +243,7 @@ UnitMotionFlying.prototype.OnUpdate = function(msg)
delta += 2 * Math.PI;
delta -= Math.PI;
// Clamp to max rate.
let deltaClamped = Math.min(Math.max(delta, -this.template.TurnRate * turnLength), this.template.TurnRate * turnLength);
const deltaClamped = Math.min(Math.max(delta, -this.template.TurnRate * turnLength), this.template.TurnRate * turnLength);
// Calculate new orientation, in a peculiar way in order to make sure the
// result gets close to targetAngle (rather than being n*2*pi out).
newangle = targetAngle + deltaClamped - delta;
@@ -280,11 +280,11 @@ UnitMotionFlying.prototype.MoveToPointRange = function(x, z, minRange, maxRange)
UnitMotionFlying.prototype.MoveToTargetRange = function(target, minRange, maxRange)
{
let cmpTargetPosition = Engine.QueryInterface(target, IID_Position);
const cmpTargetPosition = Engine.QueryInterface(target, IID_Position);
if (!cmpTargetPosition || !cmpTargetPosition.IsInWorld())
return false;
let targetPos = cmpTargetPosition.GetPosition2D();
const targetPos = cmpTargetPosition.GetPosition2D();
this.hasTarget = true;
this.reachedTarget = false;
@@ -327,10 +327,10 @@ UnitMotionFlying.prototype.GetRunMultiplier = function()
*/
UnitMotionFlying.prototype.EstimateFuturePosition = function(dt)
{
let cmpPosition = Engine.QueryInterface(this.entity, IID_Position);
const cmpPosition = Engine.QueryInterface(this.entity, IID_Position);
if (!cmpPosition || !cmpPosition.IsInWorld())
return Vector2D();
let position = cmpPosition.GetPosition2D();
const position = cmpPosition.GetPosition2D();
return Vector2D.add(position, Vector2D.sub(position, cmpPosition.GetPreviousPosition2D()).mult(dt/Engine.QueryInterface(SYSTEM_ENTITY, IID_Timer).GetLatestTurnLength()));
};
@@ -95,8 +95,8 @@ Upgrade.prototype.ChangeUpgradedEntityCount = function(amount)
if (!this.IsUpgrading())
return;
let cmpTempMan = Engine.QueryInterface(SYSTEM_ENTITY, IID_TemplateManager);
let template = cmpTempMan.GetTemplate(this.upgrading);
const cmpTempMan = Engine.QueryInterface(SYSTEM_ENTITY, IID_TemplateManager);
const template = cmpTempMan.GetTemplate(this.upgrading);
let categoryTo;
if (template.TrainingRestrictions)
@@ -108,8 +108,8 @@ Upgrade.prototype.ChangeUpgradedEntityCount = function(amount)
return;
let categoryFrom;
let cmpTrainingRestrictions = Engine.QueryInterface(this.entity, IID_TrainingRestrictions);
let cmpBuildRestrictions = Engine.QueryInterface(this.entity, IID_BuildRestrictions);
const cmpTrainingRestrictions = Engine.QueryInterface(this.entity, IID_TrainingRestrictions);
const cmpBuildRestrictions = Engine.QueryInterface(this.entity, IID_BuildRestrictions);
if (cmpTrainingRestrictions)
categoryFrom = cmpTrainingRestrictions.GetCategory();
else if (cmpBuildRestrictions)
@@ -118,7 +118,7 @@ Upgrade.prototype.ChangeUpgradedEntityCount = function(amount)
if (categoryTo == categoryFrom)
return;
let cmpEntityLimits = QueryPlayerIDInterface(this.owner, IID_EntityLimits);
const cmpEntityLimits = QueryPlayerIDInterface(this.owner, IID_EntityLimits);
if (cmpEntityLimits)
cmpEntityLimits.ChangeCount(categoryTo, amount);
};
@@ -130,7 +130,7 @@ Upgrade.prototype.CanUpgradeTo = function(template)
Upgrade.prototype.GetUpgrades = function()
{
let ret = [];
const ret = [];
for (const option in this.upgradeTemplates)
{
@@ -142,7 +142,7 @@ Upgrade.prototype.GetUpgrades = function()
if (choice.Time)
cost.time = this.GetUpgradeTime(option);
let hasCost = choice.Cost || choice.Time;
const hasCost = choice.Cost || choice.Time;
ret.push({
"entity": option,
"icon": choice.Icon || undefined,
@@ -160,7 +160,7 @@ Upgrade.prototype.CancelTimer = function()
if (!this.timer)
return;
let cmpTimer = Engine.QueryInterface(SYSTEM_ENTITY, IID_Timer);
const cmpTimer = Engine.QueryInterface(SYSTEM_ENTITY, IID_Timer);
cmpTimer.CancelTimer(this.timer);
delete this.timer;
};
@@ -186,7 +186,7 @@ Upgrade.prototype.WillCheckPlacementRestrictions = function(template)
Upgrade.prototype.GetRequirements = function(templateArg)
{
let choice = this.upgradeTemplates[templateArg] || templateArg;
const choice = this.upgradeTemplates[templateArg] || templateArg;
if (this.template[choice].Requirements)
return this.template[choice].Requirements;
@@ -194,14 +194,14 @@ Upgrade.prototype.GetRequirements = function(templateArg)
if (!("Requirements" in this.template[choice]))
return undefined;
let cmpTemplateManager = Engine.QueryInterface(SYSTEM_ENTITY, IID_TemplateManager);
let cmpIdentity = Engine.QueryInterface(this.entity, IID_Identity);
const cmpTemplateManager = Engine.QueryInterface(SYSTEM_ENTITY, IID_TemplateManager);
const cmpIdentity = Engine.QueryInterface(this.entity, IID_Identity);
let entType = this.template[choice].Entity;
if (cmpIdentity)
entType = entType.replace(/\{civ\}/g, cmpIdentity.GetCiv());
let template = cmpTemplateManager.GetTemplate(entType);
const template = cmpTemplateManager.GetTemplate(entType);
return template.Identity.Requirements || undefined;
};
@@ -213,12 +213,12 @@ Upgrade.prototype.GetResourceCosts = function(template)
if (this.IsUpgrading() && template == this.GetUpgradingTo())
return clone(this.expendedResources);
let choice = this.upgradeTemplates[template];
const choice = this.upgradeTemplates[template];
if (!this.template[choice].Cost)
return {};
let costs = {};
for (let r in this.template[choice].Cost)
const costs = {};
for (const r in this.template[choice].Cost)
costs[r] = ApplyValueModificationsToEntity("Upgrade/Cost/"+r, +this.template[choice].Cost[r], this.entity);
return costs;
@@ -229,14 +229,14 @@ Upgrade.prototype.Upgrade = function(template)
if (this.IsUpgrading() || !this.upgradeTemplates[template])
return false;
let cmpPlayer = QueryOwnerInterface(this.entity, IID_Player);
const cmpPlayer = QueryOwnerInterface(this.entity, IID_Player);
if (!cmpPlayer)
return false;
let cmpProductionQueue = Engine.QueryInterface(this.entity, IID_ProductionQueue);
const cmpProductionQueue = Engine.QueryInterface(this.entity, IID_ProductionQueue);
if (cmpProductionQueue && cmpProductionQueue.HasQueuedProduction())
{
let cmpGUIInterface = Engine.QueryInterface(SYSTEM_ENTITY, IID_GuiInterface);
const cmpGUIInterface = Engine.QueryInterface(SYSTEM_ENTITY, IID_GuiInterface);
cmpGUIInterface.PushNotification({
"players": [cmpPlayer.GetPlayerID()],
"message": markForTranslation("Entity is producing. Cannot start upgrading."),
@@ -260,7 +260,7 @@ Upgrade.prototype.Upgrade = function(template)
if (this.GetUpgradeTime(template) !== 0)
{
let cmpTimer = Engine.QueryInterface(SYSTEM_ENTITY, IID_Timer);
const cmpTimer = Engine.QueryInterface(SYSTEM_ENTITY, IID_Timer);
this.timer = cmpTimer.SetInterval(this.entity, IID_Upgrade, "UpgradeProgress", 0, UPGRADING_PROGRESS_INTERVAL, { "upgrading": template });
}
else
@@ -274,7 +274,7 @@ Upgrade.prototype.CancelUpgrade = function(owner)
if (!this.IsUpgrading())
return;
let cmpPlayer = QueryPlayerIDInterface(owner, IID_Player);
const cmpPlayer = QueryPlayerIDInterface(owner, IID_Player);
if (cmpPlayer)
cmpPlayer.AddResources(this.expendedResources);
@@ -282,10 +282,10 @@ Upgrade.prototype.CancelUpgrade = function(owner)
this.ChangeUpgradedEntityCount(-1);
// Do not update visual actor if the animation didn't change.
let choice = this.upgradeTemplates[this.upgrading];
const choice = this.upgradeTemplates[this.upgrading];
if (choice && this.template[choice].Variant)
{
let cmpVisual = Engine.QueryInterface(this.entity, IID_Visual);
const cmpVisual = Engine.QueryInterface(this.entity, IID_Visual);
if (cmpVisual)
cmpVisual.SelectAnimation("idle", false, 1.0);
}
@@ -297,8 +297,8 @@ Upgrade.prototype.CancelUpgrade = function(owner)
Upgrade.prototype.GetUpgradeTime = function(templateArg)
{
let template = this.upgrading || templateArg;
let choice = this.upgradeTemplates[template];
const template = this.upgrading || templateArg;
const choice = this.upgradeTemplates[template];
if (!choice)
return undefined;
@@ -329,12 +329,12 @@ Upgrade.prototype.SetElapsedTime = function(time)
Upgrade.prototype.SetUpgradeAnimationVariant = function()
{
let choice = this.upgradeTemplates[this.upgrading];
const choice = this.upgradeTemplates[this.upgrading];
if (!choice || !this.template[choice].Variant)
return;
let cmpVisual = Engine.QueryInterface(this.entity, IID_Visual);
const cmpVisual = Engine.QueryInterface(this.entity, IID_Visual);
if (!cmpVisual)
return;
@@ -355,7 +355,7 @@ Upgrade.prototype.UpgradeProgress = function(data, lateness)
this.ChangeUpgradedEntityCount(-1);
this.expendedResources = {};
let newEntity = ChangeEntityTemplate(this.entity, this.upgrading);
const newEntity = ChangeEntityTemplate(this.entity, this.upgrading);
if (newEntity)
PlaySound("upgraded", newEntity);
@@ -38,9 +38,9 @@ Upkeep.prototype.ComputeRates = function()
{
this.rates = {};
let hasUpkeep = false;
for (let resource in this.template.Rates)
for (const resource in this.template.Rates)
{
let rate = ApplyValueModificationsToEntity("Upkeep/Rates/" + resource, +this.template.Rates[resource], this.entity);
const rate = ApplyValueModificationsToEntity("Upkeep/Rates/" + resource, +this.template.Rates[resource], this.entity);
if (rate)
{
this.rates[resource] = rate;
@@ -57,7 +57,7 @@ Upkeep.prototype.ComputeRates = function()
*/
Upkeep.prototype.Pay = function(data, lateness)
{
let cmpPlayer = QueryOwnerInterface(this.entity);
const cmpPlayer = QueryOwnerInterface(this.entity);
if (!cmpPlayer)
return;
@@ -75,7 +75,7 @@ Upkeep.prototype.HandleInsufficientUpkeep = function()
if (this.unpayed)
return;
let cmpIdentity = Engine.QueryInterface(this.entity, IID_Identity);
const cmpIdentity = Engine.QueryInterface(this.entity, IID_Identity);
if (cmpIdentity)
cmpIdentity.SetControllable(false);
this.unpayed = true;
@@ -89,7 +89,7 @@ Upkeep.prototype.HandleSufficientUpkeep = function()
if (!this.unpayed)
return;
let cmpIdentity = Engine.QueryInterface(this.entity, IID_Identity);
const cmpIdentity = Engine.QueryInterface(this.entity, IID_Identity);
if (cmpIdentity)
cmpIdentity.SetControllable(true);
delete this.unpayed;
@@ -113,17 +113,17 @@ Upkeep.prototype.CheckTimer = function()
if (!this.timer)
return;
let cmpTimer = Engine.QueryInterface(SYSTEM_ENTITY, IID_Timer);
const cmpTimer = Engine.QueryInterface(SYSTEM_ENTITY, IID_Timer);
cmpTimer.CancelTimer(this.timer);
delete this.timer;
return;
}
let oldUpkeepInterval = this.upkeepInterval;
const oldUpkeepInterval = this.upkeepInterval;
this.upkeepInterval = ApplyValueModificationsToEntity("Upkeep/Interval", +this.template.Interval, this.entity);
if (this.upkeepInterval < 0)
{
let cmpTimer = Engine.QueryInterface(SYSTEM_ENTITY, IID_Timer);
const cmpTimer = Engine.QueryInterface(SYSTEM_ENTITY, IID_Timer);
cmpTimer.CancelTimer(this.timer);
delete this.timer;
return;
@@ -137,13 +137,13 @@ Upkeep.prototype.CheckTimer = function()
// If the timer wasn't invalidated before (interval <= 0), just update it.
if (oldUpkeepInterval > 0)
{
let cmpTimer = Engine.QueryInterface(SYSTEM_ENTITY, IID_Timer);
const cmpTimer = Engine.QueryInterface(SYSTEM_ENTITY, IID_Timer);
cmpTimer.UpdateRepeatTime(this.timer, this.upkeepInterval);
return;
}
}
let cmpTimer = Engine.QueryInterface(SYSTEM_ENTITY, IID_Timer);
const cmpTimer = Engine.QueryInterface(SYSTEM_ENTITY, IID_Timer);
this.timer = cmpTimer.SetInterval(this.entity, IID_Upkeep, "Pay", this.upkeepInterval, this.upkeepInterval, undefined);
};
@@ -36,7 +36,7 @@ Visibility.prototype.Init = function()
*/
Visibility.prototype.SetActivated = function(status)
{
let cmpRangeManager = Engine.QueryInterface(SYSTEM_ENTITY, IID_RangeManager);
const cmpRangeManager = Engine.QueryInterface(SYSTEM_ENTITY, IID_RangeManager);
cmpRangeManager.ActivateScriptedVisibility(this.entity, status);
this.activated = status;
@@ -63,7 +63,7 @@ Visibility.prototype.GetVisibility = function(player, isVisible, isExplored)
if (this.preview)
{
// For the owner only, mock the "RetainInFog" behavior
let cmpOwnership = Engine.QueryInterface(this.entity, IID_Ownership);
const cmpOwnership = Engine.QueryInterface(this.entity, IID_Ownership);
if (cmpOwnership && cmpOwnership.GetOwner() == player && isExplored)
return isVisible ? VIS_VISIBLE : VIS_FOGGED;
@@ -73,7 +73,7 @@ Visibility.prototype.GetVisibility = function(player, isVisible, isExplored)
else if (this.corpse)
{
// For the owner only, mock the "RetainInFog" behavior
let cmpOwnership = Engine.QueryInterface(this.entity, IID_Ownership);
const cmpOwnership = Engine.QueryInterface(this.entity, IID_Ownership);
if (cmpOwnership && cmpOwnership.GetOwner() == player && isExplored)
return isVisible ? VIS_VISIBLE : VIS_FOGGED;
@@ -31,7 +31,7 @@ VisionSharing.prototype.Activate = function()
{
if (this.activated)
return;
let cmpOwnership = Engine.QueryInterface(this.entity, IID_Ownership);
const cmpOwnership = Engine.QueryInterface(this.entity, IID_Ownership);
if (!cmpOwnership || cmpOwnership.GetOwner() <= 0)
return;
this.shared = new Set([cmpOwnership.GetOwner()]);
@@ -42,10 +42,10 @@ VisionSharing.prototype.Activate = function()
VisionSharing.prototype.CheckVisionSharings = function()
{
let shared = new Set();
const shared = new Set();
let cmpOwnership = Engine.QueryInterface(this.entity, IID_Ownership);
let owner = cmpOwnership ? cmpOwnership.GetOwner() : INVALID_PLAYER;
const cmpOwnership = Engine.QueryInterface(this.entity, IID_Ownership);
const owner = cmpOwnership ? cmpOwnership.GetOwner() : INVALID_PLAYER;
if (owner >= 0)
{
// The owner has vision
@@ -53,15 +53,15 @@ VisionSharing.prototype.CheckVisionSharings = function()
shared.add(owner);
// Vision sharing due to garrisoned units
let cmpGarrisonHolder = Engine.QueryInterface(this.entity, IID_GarrisonHolder);
const cmpGarrisonHolder = Engine.QueryInterface(this.entity, IID_GarrisonHolder);
if (cmpGarrisonHolder)
{
for (let ent of cmpGarrisonHolder.GetEntities())
for (const ent of cmpGarrisonHolder.GetEntities())
{
let cmpEntOwnership = Engine.QueryInterface(ent, IID_Ownership);
const cmpEntOwnership = Engine.QueryInterface(ent, IID_Ownership);
if (!cmpEntOwnership)
continue;
let entOwner = cmpEntOwnership.GetOwner();
const entOwner = cmpEntOwnership.GetOwner();
if (entOwner > 0 && entOwner != owner)
{
shared.add(entOwner);
@@ -73,7 +73,7 @@ VisionSharing.prototype.CheckVisionSharings = function()
// vision sharing due to spies
if (this.spies)
for (let spy of this.spies.values())
for (const spy of this.spies.values())
if (spy > 0 && spy != owner)
shared.add(spy);
}
@@ -82,11 +82,11 @@ VisionSharing.prototype.CheckVisionSharings = function()
return;
// compare with previous vision sharing, and update if needed
for (let player of shared)
for (const player of shared)
if (!this.shared.has(player))
Engine.PostMessage(this.entity, MT_VisionSharingChanged,
{ "entity": this.entity, "player": player, "add": true });
for (let player of this.shared)
for (const player of this.shared)
if (!shared.has(player))
Engine.PostMessage(this.entity, MT_VisionSharingChanged,
{ "entity": this.entity, "player": player, "add": false });
@@ -114,15 +114,15 @@ VisionSharing.prototype.AddSpy = function(player, timeLength)
if (!this.IsBribable())
return 0;
let cmpOwnership = Engine.QueryInterface(this.entity, IID_Ownership);
const cmpOwnership = Engine.QueryInterface(this.entity, IID_Ownership);
if (!cmpOwnership || cmpOwnership.GetOwner() == player || player <= 0)
return 0;
let cmpTechnologyManager = QueryPlayerIDInterface(player, IID_TechnologyManager);
const cmpTechnologyManager = QueryPlayerIDInterface(player, IID_TechnologyManager);
if (!cmpTechnologyManager || !cmpTechnologyManager.CanProduce("special/spy"))
return 0;
let template = Engine.QueryInterface(SYSTEM_ENTITY, IID_TemplateManager).GetTemplate("special/spy");
const template = Engine.QueryInterface(SYSTEM_ENTITY, IID_TemplateManager).GetTemplate("special/spy");
if (!IncurBribeCost(template, player, cmpOwnership.GetOwner(), false))
return 0;
@@ -132,7 +132,7 @@ VisionSharing.prototype.AddSpy = function(player, timeLength)
if (!duration && template.VisionSharing && template.VisionSharing.Duration)
{
duration = ApplyValueModificationsToTemplate("VisionSharing/Duration", +template.VisionSharing.Duration, player, template);
let cmpVision = Engine.QueryInterface(this.entity, IID_Vision);
const cmpVision = Engine.QueryInterface(this.entity, IID_Vision);
if (cmpVision)
duration *= 60 / Math.max(30, cmpVision.GetRange());
}
@@ -143,14 +143,14 @@ VisionSharing.prototype.AddSpy = function(player, timeLength)
this.spies.set(++this.spyId, player);
if (duration)
{
let cmpTimer = Engine.QueryInterface(SYSTEM_ENTITY, IID_Timer);
const cmpTimer = Engine.QueryInterface(SYSTEM_ENTITY, IID_Timer);
cmpTimer.SetTimeout(this.entity, IID_VisionSharing, "RemoveSpy", duration * 1000, { "id": this.spyId });
}
this.Activate();
this.CheckVisionSharings();
// update statistics for successful bribes
let cmpBribesStatisticsTracker = QueryPlayerIDInterface(player, IID_StatisticsTracker);
const cmpBribesStatisticsTracker = QueryPlayerIDInterface(player, IID_StatisticsTracker);
if (cmpBribesStatisticsTracker)
cmpBribesStatisticsTracker.IncreaseSuccessfulBribesCounter();
@@ -171,7 +171,7 @@ VisionSharing.prototype.ShareVisionWith = function(player)
if (this.activated)
return this.shared.has(player);
let cmpOwnership = Engine.QueryInterface(this.entity, IID_Ownership);
const cmpOwnership = Engine.QueryInterface(this.entity, IID_Ownership);
return cmpOwnership && cmpOwnership.GetOwner() == player;
};