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); }
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); }