Example #1
0
    void Start()
    {
        currentAction = PreformAction.WAIT;
        EnemiesInBattle.AddRange(GameObject.FindGameObjectsWithTag("Enemy"));
        ProtagsInBattle.AddRange(GameObject.FindGameObjectsWithTag("Protag"));

        ProtagInput = ProtagGUI.ACTIVATE;

        AttackPanel.SetActive(false);
        EnemySelectPanel.SetActive(false);
        MagicPanel.SetActive(false);


        EnemyButtons();
    }
Example #2
0
    void retreat()
    {
        PlaySelectSound();
        DestoryEnemyGUIs();
        isboss          = false;
        targetCharacter = null;
        battleEnabled   = false;
        battlestate     = PreformAction.Wait;
        foreach (BattleCharacter enemy in enemies)
        {
            Destroy(enemy.gameObject);
        }
        enemies.Clear();

        ModeHandler.money = Mathf.FloorToInt(ModeHandler.money * 0.75f);
        deleteButtons();
        ModeHandler.modehandler.afterMenuSelect();
    }
Example #3
0
    public AttackBase getAttack(int attackNum)
    {
        AttackBase attack;

        attack = ((PlayerCharacter)players[currentTurn]).moves[attackNum];
        int sp = ((PlayerCharacter)players[currentTurn]).specialPoints;

        if (sp >= attack.spCost)
        {
            selectedAttack = attack;
            battlestate    = PreformAction.TakeAction;
            deleteButtons();
            return(attack);
        }
        else
        {
            PlayDeclineSound();
            backToMenu(); return(null);
        }
    }
Example #4
0
    public BattleCharacter getTarget(int attackNum, AttackBase attkMove)
    {
        PlaySelectSound();
        BattleCharacter target = null;

        ((PlayerCharacter)players[currentTurn]).specialPoints -= attkMove.spCost;
        if (attkMove.attkRng != AttackBase.attackRange.all)
        {
            if (attkMove.attkType == AttackBase.attackType.heal)
            {
                target = ((PlayerCharacter)players[attackNum]);
            }
            else
            {
                target = ((EnemyCharacter)enemies[attackNum]);
            }

            targetCharacter = target;
        }

        battlestate = PreformAction.getPlayerAttack;
        deleteButtons();
        return(target);
    }
Example #5
0
 void backToMenu()
 {
     deleteButtons();
     battlestate    = PreformAction.Wait;
     createdButtons = false;
 }
Example #6
0
    void OnGUI()
    {
        drawPlayerStats();
        if (battleEnabled)
        {
            drawEnemyStats();
            if (playerturn())
            {
                PlayerCharacter currentPlayer = (PlayerCharacter)players[currentTurn];

                if (currentPlayer.health == 0)
                {
                    incrementTurn();
                }

                switch (battlestate)
                {
                case PreformAction.Wait:

                    if (currentPlayer.charAnimatior.GetBool("IsHurt") == false)
                    {
                        if (!createdButtons)
                        {
                            if (this.eGen.currentPhase > 0)
                            {
                                GameObject attkButton = Instantiate(button, new Vector3(350, 140, 3), Quaternion.identity) as GameObject;
                                attkButton.GetComponent <Button>().onClick.AddListener(() => retreat());
                                Text buttonTxt = attkButton.transform.Find("Text").GetComponent <Text>();
                                buttonTxt.text = "Retreat";
                                attkButton.transform.SetParent(this.transform);
                                attkButton.GetComponent <Image>().gameObject.transform.position = new Vector3(350, 140, 3);
                                buttons.Add(attkButton);
                            }

                            createAttackButtons();
                        }
                    }
                    break;

                case PreformAction.TakeAction:
                    //char selects target
                    if (!createdButtons)
                    {
                        if (selectedAttack.attkRng != AttackBase.attackRange.all)
                        {
                            createTargetButtons(selectedAttack);
                        }
                        else
                        {
                            getTarget(0, selectedAttack);
                        }
                    }
                    break;

                case PreformAction.getPlayerAttack:
                    if (selectedAttack.attkRng != AttackBase.attackRange.all)
                    {
                        currentPlayer.Attack(targetCharacter, selectedAttack);
                    }
                    else
                    {
                        currentPlayer.Attack(null, selectedAttack);
                    }

                    battlestate = PreformAction.Preformaction;
                    break;

                case PreformAction.Preformaction:

                    if (currentPlayer.animations == BattleCharacter.animationstate.finish)
                    {
                        battlestate = PreformAction.CompleteTurn;
                    }
                    break;
                }
            }
            else
            {
                EnemyCharacter currentEnemy = (EnemyCharacter)enemies[currentTurn - players.Count];

                switch (battlestate)
                {
                case PreformAction.Wait:

                    if (currentEnemy.charAnimatior.GetBool("IsHurt") == false)
                    {
                        currentEnemy.autoAttack();
                        targetCharacter = currentEnemy.targetChar;
                        battlestate     = PreformAction.Preformaction;
                    }
                    break;

                case PreformAction.Preformaction:
                    if (currentEnemy.animations == BattleCharacter.animationstate.finish)
                    {
                        battlestate = PreformAction.CompleteTurn;
                    }
                    break;
                }
            }

            if (battlestate == PreformAction.CompleteTurn)
            {
                if (!checkfordeadAnimations())
                {
                    battlestate = PreformAction.Wait;
                    checkForVictory();
                    incrementTurn();
                }
            }
        }
    }
Example #7
0
    // Update is called once per frame
    void Update()
    {
        switch (currentAction)
        {
        case (PreformAction.WAIT):
            if (PreformList.Count > 0)
            {
                currentAction = PreformAction.TAKEACTION;
            }
            break;

        case (PreformAction.TAKEACTION):
            GameObject preformer = GameObject.Find(PreformList[0].Attacker);
            if (PreformList[0].Type == "Enemy")
            {
                EnemyStateMachine ESM = preformer.GetComponent <EnemyStateMachine>();
                for (int i = 0; i < ProtagsInBattle.Count; i++)
                {
                    if (PreformList[0].AttackersTarget == ProtagsInBattle[i])
                    {
                        ESM.ProtagToAttack = PreformList[0].AttackersTarget;
                        ESM.currentState   = EnemyStateMachine.TurnState.ACTION;
                        break;
                    }
                    else
                    {
                        PreformList[0].AttackersTarget = ProtagsInBattle[Random.Range(0, ProtagsInBattle.Count)];

                        ESM.ProtagToAttack = PreformList[0].AttackersTarget;
                        ESM.currentState   = EnemyStateMachine.TurnState.ACTION;
                    }
                }
            }

            if (PreformList[0].Type == "Protag")
            {
                ProtagStateMachine PSM = preformer.GetComponent <ProtagStateMachine>();
                PSM.EnemyToAttack = PreformList[0].AttackersTarget;
                PSM.currentState  = ProtagStateMachine.TurnState.ACTION;
            }
            currentAction = PreformAction.PREFORMACTION;

            break;

        case (PreformAction.PREFORMACTION):
            //idle
            break;

        case (PreformAction.CHECKALIVE):
            if (ProtagsInBattle.Count < 1)
            {
                currentAction = PreformAction.LOSE;
            }
            else if (EnemiesInBattle.Count < 1)
            {
                currentAction = PreformAction.WIN;
            }
            else
            {
                clearAttackPanel();
                ProtagInput = ProtagGUI.ACTIVATE;
            }

            break;

        case (PreformAction.LOSE):
        {
            Debug.Log("You lost the Battle!");
        }
        break;

        case (PreformAction.WIN):
        {
            Debug.Log("You won the Battle!");
            for (int i = 0; i < ProtagsInBattle.Count; i++)
            {
                ProtagsInBattle[i].GetComponent <ProtagStateMachine>().currentState = ProtagStateMachine.TurnState.WAITING;
            }
        }
        break;
        }

        switch (ProtagInput)
        {
        case (ProtagGUI.ACTIVATE):
            if (ProtagsToManage.Count > 0)
            {
                ProtagsToManage[0].transform.Find("Selector").gameObject.SetActive(true);
                ProtagChoice = new HandleTurns();


                AttackPanel.SetActive(true);
                CreateAttackButtons();
                ProtagInput = ProtagGUI.WAITING;
            }
            break;

        case (ProtagGUI.WAITING):
            //idle
            break;

        case (ProtagGUI.DONE):
            ProtagInputDone();
            break;
        }
    }