public void Cast(HeroTypes.Team targetTeam, Action onCompletedCallback) { _targetTeam = targetTeam; _onCompletedCallback = onCompletedCallback; _detectionCollider.enabled = true; _animatorController.CastAbility(ApplyAbility); }
public Hero(int instanceId, HeroStatsConfig stats) { InstanceId = instanceId; Team = stats.Team; HealthPoints = new HealthPoints(stats.HealthPoints); MaxMovementForce = stats.MaxMovementForce; Attack = AttackFactory.GetAttack(stats.AttackConfig); Ability = AbilityFactory.GetAbility(stats.AbilityConfig); }
public static HeroTypes.Team GetRivalTeam(this HeroTypes.Team myTeam) { switch (myTeam) { case HeroTypes.Team.Player_1: return(HeroTypes.Team.Player_2); case HeroTypes.Team.Player_2: return(HeroTypes.Team.Player_1); default: throw new ArgumentOutOfRangeException(nameof(myTeam), myTeam, null); } }
public GameOverSignal(HeroTypes.Team teamWinner) { TeamWinner = teamWinner; }
private void LaunchGameOverSignal(HeroTypes.Team teamWinner) { _eventDispatcher.Dispatch(new GameOverSignal(teamWinner)); }
private bool CheckPlayerVictory(int heroInstanceId, List <HeroController> opponentHeroes, HeroTypes.Team teamWinner) { var deathHero = opponentHeroes.Find(heroHealth => heroHealth.HeroInstanceId == heroInstanceId); if (deathHero == null) { return(false); } opponentHeroes.Remove(deathHero); if (opponentHeroes.Count != 0) { return(false); } LaunchGameOverSignal(teamWinner); return(true); }