/// <summary> /// On essaye d'auto attack une cible, Si elle est a portée on lance l'animation /// Sinon, on marche jusqu'a elle /// </summary> /// <param name="targetUnit"></param> public void TryBasicAttack(AttackableUnit targetUnit) { if (!targetUnit.Alive) { return; } if (this.GetDistanceTo(targetUnit) <= GetAutoattackRange(targetUnit)) { if (IsMoving) // Si on est en mouvement, on s'arrête { StopMove(); } AttackManager.BeginAttackTarget(targetUnit); // on lance la première auto } else { if (Stats.MoveSpeed.TotalSafe > 0) { AttackManager.StopAttackTarget(); // on arrête d'attaquer l'éventuelle cible, car on va se déplacer. if (AttackManager.IsAttacking && !AttackManager.CurrentAutoattack.Casted) // Si on a cancel l'auto avant que les dégats soit infligés, alors on peut la disposer. { AttackManager.DestroyAutoattack(); } Action onTargetReach = new Action(() => { TryBasicAttack(targetUnit); }); // recursive call PathManager.MoveToTarget(targetUnit, onTargetReach, GetAutoattackRangeWhileChasing(targetUnit)); OnMove(); } } }