public override void Attack() { initialPosition = transform.position; enemyController = FindObjectOfType <EnemyController>(); enemyPosition = enemyController.transform.position; TimeSystem.CreateTimer( $"{HeroModel.name}'s Attack", 1f, new[] { new TimerActionData { ActionType = TimerActionType.OnStart, TimerAction = ExecuteTurn } } ); }
public override void Attack() { var initialPosition = transform.position; var randomIndex = Random.Range(0, heroControllers.Count); var selectedHeroController = heroControllers[randomIndex]; while (selectedHeroController.HeroModel.CurrentHealth <= 0f) { heroControllers.RemoveAt(randomIndex); randomIndex = Random.Range(0, heroControllers.Count); selectedHeroController = heroControllers[randomIndex]; } TimeSystem.CreateTimer( $"{enemyModel.name}'s Attack", 1f, new [] { new TimerActionData { ActionType = TimerActionType.OnStart, TimerAction = () => { transform.DOMove(selectedHeroController.transform.position, 0.5f).OnComplete(() => { selectedHeroController.TakeDamage(enemyModel.AttackPower); transform.DOMove(initialPosition, 0.5f).OnComplete(() => { PublisherSubscriber.Publish(GameEventType.EnemyFinishedTurn); }); }); } } } ); }