Ejemplo n.º 1
0
    IEnumerator Combat()
    {
        CombatResualt resualt = InBattle();

        Debug.Log("Resualt battle: " + resualt);
        yield return(new WaitForSeconds(0.5f));

        if (resualt == CombatResualt.Win)
        {
            var leader = heros.Single(hero => hero.GetComponent <Hero>().GetAvatarStatus() == Avatar.AvatarStatus.Hero_leader);
            leader.GetComponent <Hero>().Fighting = false;
            ui_controller.SetHeroState(
                leader.GetComponent <Hero>().Heart,
                leader.GetComponent <Hero>().Sword,
                leader.GetComponent <Hero>().Shield,
                leader.GetComponent <Hero>().GetAvatarType()
                );
            _speed += 1;
            foreach (var hero in heros)
            {
                point += hero.GetComponent <Hero>().Heart;
            }
            ui_controller.SetPoints(point);
            Destroy(_currentEnemies);
            _currentEnemies = null;
            ui_controller.SetActivePanelEnemy(false);
        }
        else if (resualt == CombatResualt.Tie)
        {
            var leader = heros.Single(hero => hero.GetComponent <Hero>().GetAvatarStatus() == Avatar.AvatarStatus.Hero_leader);
            leader.GetComponent <Hero>().Fighting = false;
            ui_controller.SetHeroState(
                leader.GetComponent <Hero>().Heart,
                leader.GetComponent <Hero>().Sword,
                leader.GetComponent <Hero>().Shield,
                leader.GetComponent <Hero>().GetAvatarType()
                );
            Destroy(_currentEnemies);
            _currentEnemies = null;
            ui_controller.SetActivePanelEnemy(false);
        }

        if (heros.Count < 1)
        {
            LoseState();
        }
        else if (_currentEnemies == null)
        {
            _currentGameMode = GameMode.Playing;
        }
    }
Ejemplo n.º 2
0
    CombatResualt InBattle()
    {
        var           leader   = heros.Single(hero => hero.GetComponent <Hero>().GetAvatarStatus() == Avatar.AvatarStatus.Hero_leader);
        bool          heroTurn = true;
        CombatResualt resualt  = CombatResualt.Win;

        float heroDamage  = 999999f;
        float enemyDamage = 999999f;

        if (_currentEnemies)
        {
            while (_currentEnemies.GetComponent <Enemy>().Heart > 0 || heros.Count > 0)
            {
                if (heroTurn)
                {
                    heroDamage = _currentEnemies.GetComponent <Enemy>().GotDamage(
                        leader.GetComponent <Hero>().Sword,
                        leader.GetComponent <Hero>().GetAvatarType());
                    Debug.Log("Enemies left HP: " + _currentEnemies.GetComponent <Enemy>().Heart);
                    heroTurn = false;
                }
                else
                {
                    enemyDamage = leader.GetComponent <Hero>().GotDamage(
                        _currentEnemies.GetComponent <Enemy>().Sword,
                        _currentEnemies.GetComponent <Enemy>().GetAvatarType());
                    Debug.Log("Leader left HP: " + leader.GetComponent <Hero>().Heart);
                    heroTurn = true;
                }
                if (heroDamage == 0 && enemyDamage == 0)
                {
                    SwitchLeader(false);
                    Destroy(heros[heros.Count - 1]);
                    heros.RemoveAt(heros.Count - 1);
                    if (heros.Count == 0)
                    {
                        resualt = CombatResualt.Lose;
                        break;
                    }
                    resualt = CombatResualt.Tie;
                    break;
                }
                if (leader.GetComponent <Hero>().Heart < 1)
                {
                    SwitchLeader(false);
                    Destroy(heros[heros.Count - 1]);
                    heros.RemoveAt(heros.Count - 1);
                    if (heros.Count == 0)
                    {
                        resualt = CombatResualt.Lose;
                        break;
                    }
                    leader = heros.Single(hero => hero.GetComponent <Hero>().GetAvatarStatus() == Avatar.AvatarStatus.Hero_leader);
                    leader.GetComponent <Hero>().Fighting = true;
                    heroTurn = true;
                }
                if (_currentEnemies.GetComponent <Enemy>().Heart < 1)
                {
                    resualt = CombatResualt.Win;
                    break;
                }
                if (heros.Count < 1)
                {
                    resualt = CombatResualt.Lose;
                    break;
                }
            }
            ;
            return(resualt);
        }
        else
        {
            return(resualt);
        }
    }