IEnumerator Start()
    {
        DungeonBaseController.instance.OnNewTurn.AddListener(OnNewTurn);
        DungeonBaseController.instance.OnEndTurn.AddListener(OnEndTurn);

        if (!DungeonBaseController.instance.allCharacters.Contains(this))
        {
            DungeonBaseController.instance.allCharacters.Add(this);
        }

        switch (gameObject.tag)
        {
        case "Enemy":
            DungeonBaseController.instance.enemies.Add(this);
            break;
        }

        if (UseStartPosition)
        {
            yield return(0);

            TileBase newTile = m_MovementController.FindNearestOpenTile(RandomStartPosition ? new Vector3(0, 0, 0) : StartPosition);
            transform.position = newTile.transform.position;
            m_MovementController.OccupyTile();
        }
        SwitchCharacterStatus(CharacterStatus.idle);
    }