Ejemplo n.º 1
0
    public void DequeueCharacterToAct()
    {
        switch (currentTeamTurn)
        {
        case TeamTurn.player:

            DungeonBaseController.instance.m_PlayerController.Activate();
            SwitchCurrentState(TurnManagerState.idle);
            bool ready = true;
            foreach (CharacterBaseController enemy in DungeonBaseController.instance.enemies)
            {
                if (!(enemy.currentCharacterStatus == CharacterStatus.idle ||
                      enemy.currentCharacterStatus == CharacterStatus.defeated))
                {
                    ready = false;
                }
            }

            if (ready)
            {
                CharacterBaseController playerController = DungeonBaseController.instance.m_PlayerController;

                if (playerController.currentCharacterStatus == CharacterStatus.idle)
                {
                    CharacterBaseController[] allCharacters = new CharacterBaseController[DungeonBaseController.instance.allCharacters.Count];
                    DungeonBaseController.instance.allCharacters.CopyTo(allCharacters);

                    playerController.Activate();
                    SwitchCurrentState(TurnManagerState.idle);
                }
            }

            break;

        case TeamTurn.enemies:

            if (enemiesToAct.Count > 0)
            {
                characterToAct = enemiesToAct.Dequeue();

                if (characterToAct != null)
                {
                    ActivateEnemy();
                }
                else
                {
                    Debug.Log("No character to act?");
                }
            }
            else
            {
                SwitchCurrentState(TurnManagerState.acting);
            }

            break;
        }
    }
Ejemplo n.º 2
0
    private void ActivateEnemy()
    {
        // Check if hte player is standing on the tile in front of the enemy at the start of their turn.
        TileBase tile = characterToAct.m_MovementController.CheckTile(characterToAct.transform.forward);

        if (tile.occupant == DungeonBaseController.instance.m_Player)
        {
            DungeonBaseController.instance.enemiesToAttack.Enqueue(characterToAct);
            DequeueCharacterToAct();
        }
        else
        {
            characterToAct.Activate();
            SwitchCurrentState(TurnManagerState.idle);
        }
    }