/**********************************************************************************/
    // функция устанавливает
    //
    /**********************************************************************************/
    protected void ShowNextDialogPage()
    {
        string     levelKey = "mission_" + m_levelNumber + m_dialogKey;
        DialogData dialogs  = m_dialogDataCollection[levelKey];

        if (dialogs.pairs.Length > m_dialogPage)
        {
            DialogPair   currentDialogPage = dialogs.pairs[m_dialogPage];
            Base.GO_TYPE goIconType        = (Base.GO_TYPE)Enum.Parse(typeof(Base.GO_TYPE), currentDialogPage.IconType);

            UIController.GetInstance().SetDialog(goIconType, currentDialogPage.textKey, currentDialogPage.NameKey);

            // взводим таймер блокировки
            m_controllerBlockTimer = m_controllerBlockTimerLimit;
            m_dialogPage++;
        }
        else
        {
            Debug.Log("Dialog complited");

            // скрываем диалог и переходим к игре
            m_state = CDM_STATE.READY;
            UIController.GetInstance().HideDialog();
            GameManager.SetPauseState(false, true);
        }
    }
    /**********************************************************************************************/
    // Загружаем все данные из файлов настройки (m_defaultSettingsDataFile)
    //
    /**********************************************************************************************/
    void LoadSettingsFromFile()
    {
        m_state = CDM_STATE.INITIALIZATION;

        m_dialogDataCollection = new Dictionary <string, DialogData>();
        string filePath = Path.Combine(Application.streamingAssetsPath, m_defaultSettingsDataFile);

        if (File.Exists(filePath))
        {
            string dataAsJson = File.ReadAllText(filePath);
            DialogDataCollection loadedData = JsonUtility.FromJson <DialogDataCollection>(dataAsJson);

            for (int i = 0; i < loadedData.items.Length; i++)
            {
                m_dialogDataCollection.Add(loadedData.items[i].dialogKey, loadedData.items[i]);
            }

            Debug.Log("Company settings loaded, dictionary contains: " + m_dialogDataCollection.Count + " entries");
        }
        else
        {
            Debug.LogError("Cannot find file!");
        }

        m_state = CDM_STATE.READY;
    }
    /**********************************************************************************/
    // функция извещающая CompanyDialogManager о провале карты в компании
    //
    /**********************************************************************************/
    public void OnMissionFailed()
    {
        GameManager.SetPauseState(true, true);

        m_dialogPage = 0;
        m_state      = CDM_STATE.DIALOG_PROCESS;
        m_dialogKey  = "_failed";
        ShowNextDialogPage();
    }
    /**********************************************************************************/
    // функция извещающая CompanyDialogManager о загрузке новой карты в компании
    //
    /**********************************************************************************/
    public void OnMissionLoaded(int levelNum)
    {
        // по завершению загрузки отображаем стартовый диалок для этого уровня
        // останавливаем игру на старте, чтобы показать все необходимые диалоги
        GameManager.SetPauseState(true, true);

        m_dialogPage  = 0;
        m_state       = CDM_STATE.DIALOG_PROCESS;
        m_levelNumber = levelNum;
        m_dialogKey   = "_start";
        ShowNextDialogPage();
    }