Exemplo n.º 1
0
    /**********************************************************************************/
    // в FixedUpdate мы проверяем некоторые состояния зависящие от отклика игрока
    //
    /**********************************************************************************/
    private void FixedUpdate()
    {
        // в конце миссии и дожидаемся окончания диалогов - и производим запуск следующей(перезапуск текущей) миссии
        if (m_state == CM_STATE.WAIT_FOR_DIALOG_CLOSE)
        {
            if (CompanyDialogManager.GetInstance().GetIsReady())
            {
                if (m_missionState == MISSION_STATE.COMPLITED)
                {
                    // переходим на следующий уровень, если это возможно
                    m_levelNumber++;
                    if (m_levelNumber < m_companyMissionData.missions.Length)
                    {
                        SceneManager.LoadScene("SingleGame", LoadSceneMode.Single);
                    }
                    else
                    {
                        // если достигли конца компании - выходим в главное меню
                        SceneManager.LoadScene("MainMenu", LoadSceneMode.Single);
                    }
                }
                else if (m_missionState == MISSION_STATE.FAILED)
                {
                    // перезапускаем текущий уровень
                    SceneManager.LoadScene("SingleGame", LoadSceneMode.Single);
                }
                else
                {
                    Debug.LogError("Wrong mission state :" + m_missionState.ToString() + " !");
                }

                m_state = CM_STATE.READY;
            }
        }
    }
Exemplo n.º 2
0
    private IEnumerator Start()
    {
        // менеджер локализации
        while (!LocalizationManager.instance.GetIsReady())
        {
            yield return(null);
        }

        // менеджер диалогов
        while (!CompanyDialogManager.GetInstance().GetIsReady())
        {
            yield return(null);
        }

        // менеджер компании
        while (!CompanyManager.GetInstance().GetIsReady())
        {
            yield return(null);
        }

        // менеджер дуэли
        while (!DuelManager.GetInstance().GetIsReady())
        {
            yield return(null);
        }

        // менеджер целей
        while (!TargetController.GetInstance().GetIsReady())
        {
            yield return(null);
        }

        // после загрузки всех компонент - включаем меню
        SceneManager.LoadScene("MainMenu");
    }
    /**********************************************************************************/
    //  защищаемся от повторного создания объекта
    //
    /**********************************************************************************/
    void Awake()
    {
        // защищаемся от повторного создания объекта
        if (s_instance == null)
        {
            s_instance = this;
        }
        else if (s_instance != this)
        {
            Destroy(gameObject);
        }

        // делаем GameManager неучтожимым при загрузке новой сцены (?)
        DontDestroyOnLoad(gameObject);
    }
Exemplo n.º 4
0
    /**********************************************************************************/
    // подготавливаем менеджер к одиночной игре
    //
    /**********************************************************************************/
    public void InitSingleGame(PLAYER playerID)
    {
        Debug.Log("InitSingleGame");
        GameMode = GAME_MODE.SINGLE;

        // очищаем контроллер
        m_playerDict.Clear();
        m_playerGameObj.Clear();
        m_playerCtr_singleMode = null;
        m_playerGO_singleMode  = null;

        m_singlePlayerID = playerID;

        GameAudioManager.Instance.SwitchToGameMode();
        CompanyManager.GetInstance().SetNewCompany();
        CompanyDialogManager.GetInstance().SetNewCompany(m_singlePlayerID);
        SceneManager.LoadScene("SingleGame", LoadSceneMode.Single);
    }
Exemplo n.º 5
0
    /**********************************************************************************/
    // функция извещающая CompanyManager о загрузке новой карты в компании
    //
    /**********************************************************************************/
    public void OnSceneLoaded()
    {
        // переключаем состояние миссии в "запущено"
        m_missionState = MISSION_STATE.RUNNED;

        // при загрузке новой сцены запускаем генерацию карты
        MissionDescriptor missionSettings = m_companyMissionData.missions[m_levelNumber];

        MapGenerator.MapGeneratorSettings set = new MapGenerator.MapGeneratorSettings();
        set.MapXSize = missionSettings.MapXSize;
        set.MapYSize = missionSettings.MapYSize;

        // разбираем все доступные для данной миссии здания и устанавливаем их в сет
        for (int i = 0; i < missionSettings.Buildings.Length; i++)
        {
            AvailableBuilding building  = missionSettings.Buildings[i];
            Base.BLOCK_TYPE   blockType = Base.StringToBlockType(building.BuildingType);

            MapGenerator.BlockWeight bw = new MapGenerator.BlockWeight();
            bw.BlockType = blockType;
            bw.Weight    = building.Weight;

            set.AvalibleBlocks.Add(bw);
        }

        // генерируем карту для уровня в соответствии с настройками
        MapGenerator.GetInstance().GenerateMap(set);

        // добавляем новые цели для уровня
        TargetController.GetInstance().SetNewCompanyMission(missionSettings.MissionDifficulties, new List <string>(missionSettings.MissionBosses));

        CompanyDialogManager.GetInstance().OnMissionLoaded(m_levelNumber);


        List <DropItemDescriptor> dropList = new List <DropItemDescriptor>(missionSettings.DropDescriptor.DropItems);

        DropManager.GetInstance().SetLevel(dropList, missionSettings.DropDescriptor.MaxNumOfDroppedItem);
    }
Exemplo n.º 6
0
 /**********************************************************************************/
 // функция извещающая CompanyManager о том, что игрок проиграл парию
 //
 /**********************************************************************************/
 public void OnGoalsFailed()
 {
     CompanyDialogManager.GetInstance().OnMissionFailed();
     m_missionState = MISSION_STATE.FAILED;
     m_state        = CM_STATE.WAIT_FOR_DIALOG_CLOSE;
 }
Exemplo n.º 7
0
 /**********************************************************************************/
 // функция извещающая CompanyManager о том, что все цели игры были уничтожены
 //
 /**********************************************************************************/
 public void OnGoalsAchieved()
 {
     CompanyDialogManager.GetInstance().OnMissionComplite();
     m_missionState = MISSION_STATE.COMPLITED;
     m_state        = CM_STATE.WAIT_FOR_DIALOG_CLOSE;
 }