private void Awake()
    {
        State = eStateGame.SETUP;

        m_gameSettings = Resources.Load <GameSettings>(Constants.GAME_SETTINGS_PATH);

        m_uiMenu = FindObjectOfType <UIMainManager>();
        m_uiMenu.Setup(this);
    }
    internal void SetState(eStateGame state)
    {
        State = state;

        if (State == eStateGame.PAUSE)
        {
            DOTween.PauseAll();
        }
        else
        {
            DOTween.PlayAll();
        }
    }
    private IEnumerator WaitBoardController()
    {
        while (m_boardController.IsBusy)
        {
            yield return(new WaitForEndOfFrame());
        }

        yield return(new WaitForSeconds(1f));

        State = eStateGame.GAME_OVER;

        if (m_levelCondition != null)
        {
            m_levelCondition.ConditionCompleteEvent -= GameOver;

            Destroy(m_levelCondition);
            m_levelCondition = null;
        }
    }
    public void LoadLevel(eLevelMode mode)
    {
        m_boardController = new GameObject("BoardController").AddComponent <BoardController>();
        m_boardController.StartGame(this, m_gameSettings);

        if (mode == eLevelMode.MOVES)
        {
            m_levelCondition = this.gameObject.AddComponent <LevelMoves>();
            m_levelCondition.Setup(m_gameSettings.LevelMoves, m_uiMenu.GetLevelConditionView(), m_boardController);
        }
        else if (mode == eLevelMode.TIMER)
        {
            m_levelCondition = this.gameObject.AddComponent <LevelTime>();
            m_levelCondition.Setup(m_gameSettings.LevelMoves, m_uiMenu.GetLevelConditionView(), this);
        }

        m_levelCondition.ConditionCompleteEvent += GameOver;

        State = eStateGame.GAME_STARTED;
    }
 void Start()
 {
     State = eStateGame.MAIN_MENU;
 }