Exemplo n.º 1
0
    public void EnemyTurn(float[] vectorAction)
    {
        if (vectorAction != null)
        {
            if (vectorAction[0] == 0)
            {
                Attack(enemyUnit, playerUnit);
            }
            else if (vectorAction[0] == 1)
            {
                Heal(enemyUnit);
            }
            agent.AddReward(enemyUnit.currentHP / enemyUnit.maxHP);
            agent.AddReward(-(playerUnit.currentHP / playerUnit.maxHP));

            //else if (vectorAction[2] == 1)
            //{
            //    StartCoroutine(infoBarManager.UpdateText(enemyUnit.unitName + " moves left!"));
            //    enemy.transform.Translate(new Vector3(-1, 0, 0));
            //    state = BattleState.PLAYERTURN;
            //    PlayerTurn();
            //}
            //else if (vectorAction[3] == 1)
            //{
            //    StartCoroutine(infoBarManager.UpdateText(enemyUnit.unitName + " moves right!"));
            //    enemy.transform.Translate(new Vector3(1, 0, 0));
            //    state = BattleState.PLAYERTURN;
            //    PlayerTurn();
            //}
            //else if (vectorAction[4] == 1)
            //{
            //    StartCoroutine(infoBarManager.UpdateText(enemyUnit.unitName + " moves up!"));
            //    enemy.transform.Translate(new Vector3(0, 1, 0));
            //    state = BattleState.PLAYERTURN;
            //    PlayerTurn();
            //}
            //else if (vectorAction[5] == 1)
            //{
            //    StartCoroutine(infoBarManager.UpdateText(enemyUnit.unitName + " moves down!"));
            //    enemy.transform.Translate(new Vector3(0, -1, 0));
            //    state = BattleState.PLAYERTURN;
            //    PlayerTurn();
            //}
        }
    }
    IEnumerator PlayerAttack()
    {
        bool isDead = enemyUnit.TakeDamage(playerUnit.damage);

        enemyHUD.SetHP(enemyUnit.currentHP);
        dialogueText.text = "The attack is successful!";

        yield return(new WaitForSeconds(2f));

        if (isDead)
        {
            state = BattleState.WON;
            EndBattle();
        }
        else
        {
            state = BattleState.ENEMYTURN;
            agent.AddReward(-0.2f);
            //StartCoroutine(EnemyTurn());
            //EnemyTurn();
        }
    }