Ejemplo n.º 1
0
        private SmartEntity FindBestTargetForHealer(SmartEntity entity)
        {
            ShooterComponent   shooterComp   = entity.ShooterComp;
            TransformComponent transformComp = entity.TransformComp;
            SmartEntity        smartEntity   = this.TraverseSpiralToFindTarget((int)shooterComp.ShooterVO.ViewRange, transformComp.CenterGridX(), transformComp.CenterGridZ(), new TargetingController.TargetValidator(this.IsHealable), entity);

            if (smartEntity == null)
            {
                if (entity.TeamComp.TeamType == TeamType.Defender)
                {
                    for (DefensiveTroopNode defensiveTroopNode = this.defensiveTroopNodeList.Head; defensiveTroopNode != null; defensiveTroopNode = defensiveTroopNode.Next)
                    {
                        SmartEntity smartEntity2 = (SmartEntity)defensiveTroopNode.Entity;
                        if (this.IsHealable(smartEntity2, entity))
                        {
                            smartEntity = smartEntity2;
                            break;
                        }
                    }
                }
                else
                {
                    for (OffensiveTroopNode offensiveTroopNode = this.offensiveTroopNodeList.Head; offensiveTroopNode != null; offensiveTroopNode = offensiveTroopNode.Next)
                    {
                        SmartEntity smartEntity3 = (SmartEntity)offensiveTroopNode.Entity;
                        if (this.IsHealable(smartEntity3, entity))
                        {
                            smartEntity = smartEntity3;
                            break;
                        }
                    }
                }
            }
            return(smartEntity);
        }
Ejemplo n.º 2
0
        private SmartEntity FindDefensiveTroopAsTarget(SmartEntity attacker, ref int maxWeight)
        {
            SmartEntity result = null;

            if (!this.defensiveTroopNodeList.Empty)
            {
                for (DefensiveTroopNode defensiveTroopNode = this.defensiveTroopNodeList.Head; defensiveTroopNode != null; defensiveTroopNode = defensiveTroopNode.Next)
                {
                    if (this.CheckTarget(attacker, (SmartEntity)defensiveTroopNode.Entity, ref maxWeight))
                    {
                        result = (SmartEntity)defensiveTroopNode.Entity;
                    }
                }
            }
            return(result);
        }