Exemplo n.º 1
0
    public void ChangeMenu(GlobalEnums.BattleMenus menu)
    {
        switch (menu)
        {
        case GlobalEnums.BattleMenus.Selection:
            SelectionMenu.gameObject.SetActive(true);
            MessageMenu.gameObject.SetActive(true);
            MovesMenu.gameObject.SetActive(false);
            MovesDetails.gameObject.SetActive(false);
            break;

        case GlobalEnums.BattleMenus.Moves:
            SelectionMenu.gameObject.SetActive(false);
            MessageMenu.gameObject.SetActive(false);
            MovesMenu.gameObject.SetActive(true);
            MovesDetails.gameObject.SetActive(true);
            break;

        case GlobalEnums.BattleMenus.Message:
            SelectionMenu.gameObject.SetActive(false);
            MessageMenu.gameObject.SetActive(true);
            MovesMenu.gameObject.SetActive(false);
            MovesDetails.gameObject.SetActive(false);
            break;
        }

        currentSelection = 1;
        currentMove      = 1;
        isInBattle       = true;
        currentMenu      = menu;
    }
Exemplo n.º 2
0
    private void AttackOpponent(SC_BasePokemon _attackPokemon, SC_PokemonMove _attackMove, SC_BasePokemon _defensePokemon)
    {
        isAbleToPress = false;
        if (canExit != true)
        {
            _attackMove.moveSound.Play();
        }
        currentMenu  = GlobalEnums.BattleMenus.Message;
        MessageState = GlobalEnums.MessageBoxState.Attack;
        attackMove   = _attackMove;
        ManageMessageBox(attackMove);
        isWaitingForRespond = true;

        _attackMove.currPP--;

        float _lvl    = (float)_attackPokemon.level;
        float _power  = (float)attackMove.power;
        float _A      = (float)_attackPokemon.attack;
        float _D      = (float)_defensePokemon.defense;
        float _damage = (((((((2f * _lvl) / 5f) + 2f) * _power) * (_A / _D)) + 2f) / 50f);

        if (currentTurn == GlobalEnums.Turns.PlayersTurn)
        {
            playerAnimator.SetTrigger("Attack");
            backgroundAnimator.SetTrigger("Attack");
            StartCoroutine(FlashAfterAttack(Img_foePokemon, 4, 0.1f));
        }
        else if (currentTurn == GlobalEnums.Turns.FoesTurn)
        {
            playerBoxAnimator.SetTrigger("Attack");
            foeAnimator.SetTrigger("Attack");
            foeBoxAnimator.SetTrigger("Attack");
            backgroundAnimator.SetTrigger("Attack");
            StartCoroutine(FlashAfterAttack(Img_playerPokemon, 4, 0.1f));
        }

        if (_defensePokemon.HpStats.curr - _damage < 1)
        {
            PlayerTimeLeft.enabled = false;
            FoeTimeLeft.enabled    = false;
            float _oldHP = (_defensePokemon.HpStats.curr) / _defensePokemon.HpStats.max;
            StartCoroutine(handlePlayerHpDecrease(_defensePokemon, Text_PlayerHP, _defensePokemon.HpStats.curr, 0, 0.06f));
            StartCoroutine(_defensePokemon.healthBar.SetHealthBarScale(_oldHP, 0));
            _defensePokemon.HpStats.curr = 0;
            battleState = GlobalEnums.BattleStates.GameOver;
        }
        else
        {
            float _newHP = (_defensePokemon.HpStats.curr - _damage) / _defensePokemon.HpStats.max;
            float _oldHP = (_defensePokemon.HpStats.curr) / _defensePokemon.HpStats.max;
            StartCoroutine(handlePlayerHpDecrease(_defensePokemon, Text_PlayerHP, _defensePokemon.HpStats.curr, _defensePokemon.HpStats.curr - _damage, 0.06f));
            StartCoroutine(_defensePokemon.healthBar.SetHealthBarScale(_oldHP, _newHP));
            _defensePokemon.HpStats.curr -= _damage;
        }
    }
 private void RestartBattle()
 {
     isInBattle             = false;
     isWaitingForRespond    = true;
     isSelectionMenuEnabled = false;
     isMovesMenuEnabled     = false;
     isFoeAttackingATM      = false;
     canExit      = false;
     MessageState = GlobalEnums.MessageBoxState.EnterBattle;
     battleState  = GlobalEnums.BattleStates.Start;
     currentMenu  = GlobalEnums.BattleMenus.Message;
     currentTurn  = GlobalEnums.Turns.PlayersTurn;
     attackMove   = null;
 }
    private void AttackOpponent(SC_BasePokemon _attackPokemon, SC_PokemonMove _attackMove, SC_BasePokemon _defensePokemon)
    {
        currentMenu  = GlobalEnums.BattleMenus.Message;
        MessageState = GlobalEnums.MessageBoxState.Attack;
        attackMove   = _attackMove;
        ManageMessageBox(attackMove);
        isWaitingForRespond = true;

        _attackMove.currPP--;

        float _lvl      = (float)_attackPokemon.level;
        float _power    = (float)attackMove.power;
        float _A        = (float)_attackPokemon.attack;
        float _D        = (float)_defensePokemon.defense;
        float _modifier = (float)(UnityEngine.Random.Range(0.8f, 1f));
        float _damage   = (((((((2f * _lvl) / 5f) + 2f) * _power) * (_A / _D)) + 2f) / 50f) * _modifier;

        //float damage = (((((((2f * lvl) / 5f) + 2f) * power) * (A/D)) / 50f) + 2f) * modifier;
        //Debug.Log("damage: " + damage);

        if (currentTurn == GlobalEnums.Turns.PlayersTurn)
        {
            StartCoroutine(FlashAfterAttack(Img_foePokemon, 4, 0.1f));
        }
        else if (currentTurn == GlobalEnums.Turns.FoesTurn)
        {
            StartCoroutine(FlashAfterAttack(Img_playerPokemon, 4, 0.1f));
        }

        if (_defensePokemon.HpStats.curr - _damage < 0)
        {
            _defensePokemon.HpStats.curr = 0;
            _defensePokemon.healthBar.SetHealthBarScale(0);
            Text_PlayerHP.text = ((int)playerPokemon.HpStats.curr).ToString() + "/" + playerPokemon.HpStats.max.ToString();
            battleState        = GlobalEnums.BattleStates.GameOver;
        }
        else
        {
            float newHP = (_defensePokemon.HpStats.curr - _damage) / _defensePokemon.HpStats.max;
            _defensePokemon.HpStats.curr -= _damage;
            _defensePokemon.healthBar.SetHealthBarScale(newHP);
            Text_PlayerHP.text = ((int)playerPokemon.HpStats.curr).ToString() + "/" + playerPokemon.HpStats.max.ToString();
        }
    }