public override void DoAction(float strength, SquadContainer teammates, SquadContainer enemies, SimpleCallbackDelegate onOverCallback) { if (enemies == null) { Utils.Logger.GetInstance().Error("enemies is null"); onOverCallback(); return; } SquadUnitController[] frontlineEnemies = enemies.GetFrontLineUnits(); if (frontlineEnemies == null || frontlineEnemies.Length <= 0) { Utils.Logger.GetInstance().Message("failed to get frontline enemies"); onOverCallback(); return; } Utils.Logger.GetInstance().Message("frontlineEnemies.Length: " + frontlineEnemies.Length); SquadUnitController enemy = frontlineEnemies[Randomizer.Range(0, frontlineEnemies.Length)]; if (enemy == null || enemy.Damagable == null) { onOverCallback(); return; } AttackAnimation.DoAnimation(enemy.transform.position, () => { enemy.Damagable.ReceiveDamage(strength); }, () => { onOverCallback(); }); }
public override void DoAction(float strength, SquadContainer teammates, SquadContainer enemies, SimpleCallbackDelegate onOverCallback) { if (teammates == null) { Utils.Logger.GetInstance().Error("teammates is null"); onOverCallback(); return; } SquadUnitController[] teammatesArray = teammates.GetAllUnits(); if (teammatesArray == null || teammatesArray.Length <= 0) { Utils.Logger.GetInstance().Message("failed to get teammates"); onOverCallback(); return; } AttackAnimation.DoAnimation(teammatesArray[0].transform.parent.position, () => { foreach (SquadUnitController teammate in teammatesArray) { if (teammate.Healable != null) { teammate.Healable.ReceiveHeal(strength); } } }, () => { onOverCallback(); }); }
public abstract void DoAction(float strength, SquadContainer teammates, SquadContainer enemies, SimpleCallbackDelegate onOverCallback);