Example #1
0
    private void handleStartOfBattle()
    {
        if (battleState == GlobalEnums.BattleStates.Start)
        {
            battleState = GlobalEnums.BattleStates.Battling;

            if (isMultiplayer == true)
            {
                if (currentTurn == GlobalEnums.Turns.PlayersTurn)
                {
                    MessageState           = GlobalEnums.MessageBoxState.Selection;
                    isSelectionMenuEnabled = true;
                    ChangeMenu(GlobalEnums.BattleMenus.Selection);
                    ManageMessageBox();
                }
                else if (currentTurn == GlobalEnums.Turns.FoesTurn)
                {
                    MessageState = GlobalEnums.MessageBoxState.WaitingForAttack;
                    ManageMessageBox();
                }

                if (isInBattle == true && currentTurn == GlobalEnums.Turns.PlayersTurn && MessageState != GlobalEnums.MessageBoxState.Attack)
                {
                    ManagePlayersTurn();
                }
            }
            else
            {
                currentTurn = GetRandomTurn();
            }
        }
    }
Example #2
0
    private void FinishBattle()
    {
        SC_GameLogic.battleMusic.Stop();
        if (attackMove != null)
        {
            attackMove.moveSound.Stop();
        }

        if (currentTurn == GlobalEnums.Turns.PlayersTurn)
        {
            foeAnimator.SetTrigger("DieFoe");
            victoryMusic.Play();
        }
        else if (currentTurn == GlobalEnums.Turns.FoesTurn)
        {
            playerAnimator.SetTrigger("DiePlayer");
            losingMusic.Play();
        }

        FoeTimeLeft.enabled    = false;
        PlayerTimeLeft.enabled = false;
        isInBattle             = false;
        isWaitingForRespond    = true;
        MessageState           = GlobalEnums.MessageBoxState.GameOver;
        battleState            = GlobalEnums.BattleStates.GameOver;
        ManageMessageBox();
        canExit = true;
    }
Example #3
0
 private void handleRunnigFromBattle(MoveEvent _Move, Dictionary <string, object> _data)
 {
     if (_data != null && _data.ContainsKey("runFromBattle") && _Move.getSender() != SC_MenuLogic.Instance.userId)
     {
         MessageState = GlobalEnums.MessageBoxState.EnemyRanAway;
         ManageMessageBox();
     }
 }
Example #4
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;
 }
Example #6
0
 private void handleLostOfTime(MoveEvent _Move, Dictionary <string, object> _data)
 {
     if (_data == null && _Move.getSender() != SC_MenuLogic.Instance.userId)
     {
         MessageState           = GlobalEnums.MessageBoxState.Selection;
         isSelectionMenuEnabled = true;
         isWaitingForRespond    = false;
         ManageMessageBox();
         ManagePlayersTurn();
     }
     else if (_data == null && _Move.getSender() == SC_MenuLogic.Instance.userId)
     {
         MessageState = GlobalEnums.MessageBoxState.WaitingForAttack;
         ManageMessageBox();
     }
 }
    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();
        }
    }
    private void FinishBattle()
    {
        SC_GameLogic.battleMusic.Stop();

        if (currentTurn == GlobalEnums.Turns.PlayersTurn)
        {
            victoryMusic.Play();
        }
        else if (currentTurn == GlobalEnums.Turns.FoesTurn)
        {
            losingMusic.Play();
        }

        isInBattle          = false;
        isWaitingForRespond = true;
        MessageState        = GlobalEnums.MessageBoxState.GameOver;
        battleState         = GlobalEnums.BattleStates.GameOver;
        ManageMessageBox();
    }
Example #9
0
    private void ManageBattleFlow()
    {
        if (battleCamera.activeInHierarchy == false)
        {
            return;
        }

        if (isInBattle == false)
        {
            ChangeMenu(GlobalEnums.BattleMenus.Message);
            return;
        }

        if (Input.GetKeyDown(KeyCode.Z) && isAbleToPress == true)
        {
            clickSound.Play();

            if (canExit == true)
            {
                StartCoroutine(BackToMainMenu());
            }

            if ((battleState == GlobalEnums.BattleStates.GameOver && battleCamera.activeInHierarchy == true) || (MessageState == GlobalEnums.MessageBoxState.EnemyRanAway))
            {
                FinishBattle();
                return;
            }
            else
            {
                isWaitingForRespond = false;
            }

            if (MessageState == GlobalEnums.MessageBoxState.EnterBattle && currentTurn == GlobalEnums.Turns.PlayersTurn)
            {
                MessageState           = GlobalEnums.MessageBoxState.Selection;
                isSelectionMenuEnabled = true;
                ChangeMenu(GlobalEnums.BattleMenus.Selection);
                ManageMessageBox();
                return;
            }

            if (MessageState == GlobalEnums.MessageBoxState.Attack && isMultiplayer == false)
            {
                if (currentTurn == GlobalEnums.Turns.PlayersTurn)
                {
                    currentTurn = GlobalEnums.Turns.FoesTurn;
                }
                else if (currentTurn == GlobalEnums.Turns.FoesTurn && isFoeAttackingATM != true)
                {
                    currentTurn  = GlobalEnums.Turns.PlayersTurn;
                    MessageState = GlobalEnums.MessageBoxState.Selection;
                    ChangeMenu(GlobalEnums.BattleMenus.Selection);
                    ManageMessageBox();
                    isWaitingForRespond    = false;
                    isSelectionMenuEnabled = true;
                    isMovesMenuEnabled     = false;
                }

                return;
            }
            else if (MessageState == GlobalEnums.MessageBoxState.Attack && isMultiplayer == true)
            {
                if (currentTurn == GlobalEnums.Turns.FoesTurn && isFoeAttackingATM != true)
                {
                    currentTurn  = GlobalEnums.Turns.PlayersTurn;
                    MessageState = GlobalEnums.MessageBoxState.Selection;
                    ChangeMenu(GlobalEnums.BattleMenus.Selection);
                    ManageMessageBox();
                    isWaitingForRespond    = false;
                    isSelectionMenuEnabled = true;
                    isMovesMenuEnabled     = false;
                }
                else
                {
                    MessageState = GlobalEnums.MessageBoxState.WaitingForAttack;
                    ManageMessageBox();
                }

                return;
            }
        }

        if (isWaitingForRespond == true)
        {
            ManageMessageBox(attackMove);
        }
        else
        {
            handleStartOfBattle();

            if (isInBattle == true && currentTurn == GlobalEnums.Turns.PlayersTurn && MessageState != GlobalEnums.MessageBoxState.Attack)
            {
                ManagePlayersTurn();
            }
            else if (isInBattle == true && currentTurn == GlobalEnums.Turns.FoesTurn)
            {
                isFoeAttackingATM      = true;
                isSelectionMenuEnabled = false;
                isMovesMenuEnabled     = false;
                isWaitingForRespond    = true;

                if (isMultiplayer == false)
                {
                    AttackRandomly();
                }
                else
                {
                    MessageState = GlobalEnums.MessageBoxState.WaitingForAttack;
                    ManageMessageBox();
                }
            }
        }

        manageTimeLeft();
    }
    private void Update()
    {
        if (battleCamera.activeInHierarchy == false)
        {
            return;
        }

        if (isInBattle != true)
        {
            ChangeMenu(GlobalEnums.BattleMenus.Message);
            return;
        }

        if (Input.GetKeyDown(KeyCode.Z))
        {
            clickSound.Play();

            if (canExit == true)
            {
                BackToMainMenu();
            }

            if (battleState == GlobalEnums.BattleStates.GameOver && battleCamera.activeInHierarchy == true)
            {
                FinishBattle();
                canExit = true;
                return;
            }
            else
            {
                isWaitingForRespond = false;
            }

            if (MessageState == GlobalEnums.MessageBoxState.EnterBattle)
            {
                MessageState           = GlobalEnums.MessageBoxState.Selection;
                isSelectionMenuEnabled = true;
                ChangeMenu(GlobalEnums.BattleMenus.Selection);
                ManageMessageBox();
                return;
            }

            if (MessageState == GlobalEnums.MessageBoxState.Attack)
            {
                if (currentTurn == GlobalEnums.Turns.PlayersTurn)
                {
                    currentTurn = GlobalEnums.Turns.FoesTurn;
                }
                else if (currentTurn == GlobalEnums.Turns.FoesTurn && isFoeAttackingATM != true)
                {
                    currentTurn  = GlobalEnums.Turns.PlayersTurn;
                    MessageState = GlobalEnums.MessageBoxState.Selection;
                    ChangeMenu(GlobalEnums.BattleMenus.Selection);
                    ManageMessageBox();
                    isWaitingForRespond    = false;
                    isSelectionMenuEnabled = true;
                    isMovesMenuEnabled     = false;
                }

                return;
            }
        }

        if (isWaitingForRespond == true)
        {
            ManageMessageBox(attackMove);
        }
        else
        {
            if (battleState == GlobalEnums.BattleStates.Start)
            {
                battleState = GlobalEnums.BattleStates.Battling;
                currentTurn = GetRandomTurn();

                if (currentTurn == GlobalEnums.Turns.FoesTurn)
                {
                    StartCoroutine(AIdelay(2f));
                }
                else
                {
                    MessageState = GlobalEnums.MessageBoxState.Selection;
                    ManageMessageBox();
                }
            }

            if (isInBattle == true && currentTurn == GlobalEnums.Turns.PlayersTurn && MessageState != GlobalEnums.MessageBoxState.Attack)
            {
                ManagePlayersTurn();
            }
            else if (isInBattle == true && currentTurn == GlobalEnums.Turns.FoesTurn && isFoeAttackingATM != true)
            {
                isFoeAttackingATM      = true;
                isSelectionMenuEnabled = false;
                isMovesMenuEnabled     = false;
                isWaitingForRespond    = true;
                StartCoroutine(AIdelay(2f));
            }
        }
    }