Ticket #4102: 4102.1.diff

File 4102.1.diff, 7.3 KB (added by Stan, 8 years ago)

Fix the above and and three warnings

  • binaries/data/mods/public/simulation/components/GarrisonHolder.js

     
    6565    this.allowGarrisoning = {};
    6666    this.visibleGarrisonPoints = [];
    6767    if (this.template.VisibleGarrisonPoints)
    68     {
    69         for each (var offset in this.template.VisibleGarrisonPoints)
    70         {
    71             var o = {};
    72             o.x = +offset.X;
    73             o.y = +offset.Y;
    74             o.z = +offset.Z;
    75             this.visibleGarrisonPoints.push({"offset":o, "entity": null});
    76         }
    77     }
     68        for (let name in this.template.VisibleGarrisonPoints)
     69            this.visibleGarrisonPoints.push({
     70                "offset": {
     71                    "x": this.template.VisibleGarrisonPoints[name].X,
     72                    "y": this.template.VisibleGarrisonPoints[name].Y,
     73                    "z": this.template.VisibleGarrisonPoints[name].Z
     74                    }, "entity": null });
    7875};
    7976
    8077/**
     
    163160 */
    164161GarrisonHolder.prototype.IsGarrisoningAllowed = function()
    165162{
    166     for each (var allow in this.allowGarrisoning)
    167     {
    168         if (!allow)
     163    for (let allow in this.allowGarrisoning)
     164        if (!this.allowGarrisoning[allow])
    169165            return false;
    170     }
     166
    171167    return true;
    172168};
    173169
     
    177173GarrisonHolder.prototype.GetGarrisonedEntitiesCount = function()
    178174{
    179175    var count = 0;
    180     for each (var ent in this.entities)
     176    for (let entity in this.entities)
    181177    {
    182         count++;
    183         var cmpGarrisonHolder = Engine.QueryInterface(ent, IID_GarrisonHolder);
     178        ++count;
     179        let cmpGarrisonHolder = Engine.QueryInterface(this.entities[entity], IID_GarrisonHolder);
    184180        if (cmpGarrisonHolder)
    185181            count += cmpGarrisonHolder.GetGarrisonedEntitiesCount();
    186182    }
     
    263259
    264260    if (!this.timer && this.GetHealRate() > 0)
    265261    {
    266         var cmpTimer = Engine.QueryInterface(SYSTEM_ENTITY, IID_Timer);
     262        var cmpTimer = Engine.QueryInterface(SYSTEM_ENTITY, IID_Timer);
    267263        this.timer = cmpTimer.SetTimeout(this.entity, IID_GarrisonHolder, "HealTimeout", 1000, {});
    268264    }
    269265
     
    282278
    283279    var cmpUnitAI = Engine.QueryInterface(entity, IID_UnitAI);
    284280    if (cmpUnitAI && cmpUnitAI.IsUnderAlert())
    285         Engine.PostMessage(cmpUnitAI.GetAlertRaiser(), MT_UnitGarrisonedAfterAlert, {"holder": this.entity, "unit": entity});
     281        Engine.PostMessage(cmpUnitAI.GetAlertRaiser(), MT_UnitGarrisonedAfterAlert, { "holder": this.entity, "unit": entity });
    286282
    287283    return true;
    288284};
     
    305301    var cmpIdentity = Engine.QueryInterface(this.entity, IID_Identity);
    306302    // If the garrisonHolder is a sinking ship, restrict the location to the intersection of both passabilities
    307303    // TODO: should use passability classes to be more generic
    308     if ((!cmpHealth || cmpHealth.GetHitpoints() == 0) && cmpIdentity && cmpIdentity.HasClass("Ship"))
    309         var pos = cmpFootprint.PickSpawnPointBothPass(entity);
    310     else
    311         var pos = cmpFootprint.PickSpawnPoint(entity);
     304    let pos = (!cmpHealth || cmpHealth.GetHitpoints() === 0) && cmpIdentity && cmpIdentity.HasClass("Ship") ?
     305        cmpFootprint.PickSpawnPointBothPass(entity) :
     306        cmpFootprint.PickSpawnPoint(entity);
    312307
    313308    if (pos.y < 0)
    314309    {
     
    332327        if (vgp.entity != entity)
    333328            continue;
    334329        cmpNewPosition.SetTurretParent(INVALID_ENTITY, new Vector3D());
    335         var cmpUnitAI = Engine.QueryInterface(entity, IID_UnitAI);
     330        let cmpUnitAI = Engine.QueryInterface(entity, IID_UnitAI);
    336331        if (cmpUnitAI)
    337332            cmpUnitAI.ResetTurretStance();
    338333        vgp.entity = null;
     
    377372            // ignore the rally point if it is autogarrison
    378373            if (commands[0].type == "garrison" && commands[0].target == this.entity)
    379374                return;
    380             for each (var com in commands)
    381             {
    382                 ProcessCommand(cmpOwnership.GetOwner(), com);
    383             }
     375            for (let command of commands)
     376                ProcessCommand(cmpOwnership.GetOwner(), command);
    384377        }
    385378    }
    386379};
     
    411404
    412405        if (this.Eject(entity, forced))
    413406        {
    414             var cmpOwnership = Engine.QueryInterface(this.entity, IID_Ownership);
    415             var cmpEntOwnership = Engine.QueryInterface(entity, IID_Ownership);
     407            let cmpOwnership = Engine.QueryInterface(this.entity, IID_Ownership);
     408            let cmpEntOwnership = Engine.QueryInterface(entity, IID_Ownership);
    416409            if (cmpOwnership && cmpEntOwnership && cmpOwnership.GetOwner() == cmpEntOwnership.GetOwner())
    417410                ejectedEntities.push(entity);
    418411        }
     
    423416                failedRadius = Math.min(failedRadius, radius);
    424417            else
    425418            {
    426                 var cmpObstruction = Engine.QueryInterface(entity, IID_Obstruction);
     419                let cmpObstruction = Engine.QueryInterface(entity, IID_Obstruction);
    427420                failedRadius = cmpObstruction ? cmpObstruction.GetUnitRadius() : 0;
    428421            }
    429422        }
     
    463456
    464457    var entities = [];
    465458    var cmpTemplateManager = Engine.QueryInterface(SYSTEM_ENTITY, IID_TemplateManager);
    466     for each (var entity in this.entities)
     459    for (let entity of this.entities)
    467460    {
    468461        var cmpIdentity = Engine.QueryInterface(entity, IID_Identity);
    469462
    470463        // Units with multiple ranks are grouped together.
    471         var name = cmpIdentity.GetSelectionGroupName()
    472                    || cmpTemplateManager.GetCurrentTemplateName(entity);
     464        let name = cmpIdentity.GetSelectionGroupName() || cmpTemplateManager.GetCurrentTemplateName(entity);
    473465
    474466        if (name != template)
    475467            continue;
     
    541533 */
    542534GarrisonHolder.prototype.HealTimeout = function(data)
    543535{
    544     if (this.entities.length == 0)
     536    let cmpTimer = Engine.QueryInterface(SYSTEM_ENTITY, IID_Timer);
     537    if (this.entities.length)
    545538    {
    546539        var cmpTimer = Engine.QueryInterface(SYSTEM_ENTITY, IID_Timer);
    547540        cmpTimer.CancelTimer(this.timer);
     
    549542    }
    550543    else
    551544    {
    552         for each (var entity in this.entities)
     545        for (let entity of this.entities)
    553546        {
    554547            var cmpHealth = Engine.QueryInterface(entity, IID_Health);
    555548            if (cmpHealth)
     
    559552                    cmpHealth.Increase(this.GetHealRate());
    560553            }
    561554        }
    562         var cmpTimer = Engine.QueryInterface(SYSTEM_ENTITY, IID_Timer);
     555        cmpTimer = Engine.QueryInterface(SYSTEM_ENTITY, IID_Timer);
    563556        this.timer = cmpTimer.SetTimeout(this.entity, IID_GarrisonHolder, "HealTimeout", 1000, {});
    564557    }
    565558};
     
    612605    {
    613606        // If the entity is dead, remove it directly instead of ejecting the corpse
    614607        var cmpHealth = Engine.QueryInterface(msg.entity, IID_Health);
    615         if (cmpHealth && cmpHealth.GetHitpoints() == 0)
     608        if (cmpHealth && cmpHealth.GetHitpoints() === 0)
    616609        {
    617610            this.entities.splice(entityIndex, 1);
    618611            Engine.PostMessage(this.entity, MT_GarrisonedUnitsChanged, { "added" : [], "removed": [msg.entity] });
     
    694687
    695688    // And destroy all remaining entities
    696689    var killedEntities = [];
    697     for each (var entity in entities)
     690    for (let entity of entities)
    698691    {
    699692        var entityIndex = this.entities.indexOf(entity);
    700693        if (entityIndex == -1)
     
    719712    var ejectableClasses = this.template.EjectClassesOnDestroy._string;
    720713    ejectableClasses = ejectableClasses ? ejectableClasses.split(/\s+/) : [];
    721714    var entityClasses = (Engine.QueryInterface(entity, IID_Identity)).GetClassesList();
    722     for each (var ejectableClass in ejectableClasses)
    723         if (entityClasses.indexOf(ejectableClass) != -1)
    724             return true;
     715    if (ejectableClasses.some(ejectableClass => entityClasses.indexOf(ejectableClass) != -1))
     716        return true;
    725717
    726718    return false;
    727719};
     
    743735    this.initGarrison = undefined;
    744736};
    745737
    746 Engine.RegisterComponentType(IID_GarrisonHolder, "GarrisonHolder", GarrisonHolder);
    747 
     738Engine.RegisterComponentType(IID_GarrisonHolder, "GarrisonHolder", GarrisonHolder);
     739 No newline at end of file