示例#1
0
    /**********************************************************************************/
    //  устанавливаем параметры миссионного дропа
    //
    /**********************************************************************************/
    public void SetLevel(List <DropItemDescriptor> dropSettings, int maxNumOfDropInSceen)
    {
        if (dropSettings.Count == 0)
        {
            Debug.LogError("Drop settings is empty!");
            return;
        }

        m_levelTimer     = 0.0f;
        m_deploedDrops   = new Dictionary <Base.GO_TYPE, int>();
        m_dropDescriptor = new List <DropItemDescriptorEditor>();

        // сохраняем настройки по количеству дропа
        foreach (var drop in dropSettings)
        {
            DropItemDescriptorEditor itemDrop = new DropItemDescriptorEditor(drop);
            m_dropDescriptor.Add(itemDrop);

            // устанавливаем одновременно допустимое на карте количесво конкретного дропа
            if (itemDrop.MaxNumOfDrop != (int)DropItemDescriptorEditor.DROP_MARKER.UNLIMITED)
            {
                m_deploedDrops[itemDrop.DropType] = itemDrop.MaxNumOfDrop;
            }
            else
            {
                m_deploedDrops[itemDrop.DropType] = maxNumOfDropInSceen;
            }
        }

        m_maxNumberOfDroppedBonus     = maxNumOfDropInSceen;
        m_currentNumberOfDroppedBonus = 0;

        m_state = DM_STATE.WAIT_FOR_DEPLAY;
        m_currentTimerToNextDrop = Random.Range(TimeBetweenDropMin, TimeBetweenDropMax);
    }
示例#2
0
    /**********************************************************************************/
    //  проверяем состояние дропа
    //
    /**********************************************************************************/
    private void FixedUpdate()
    {
        if (GameManager.GamePaused)
        {
            return;
        }

        if (m_state == DM_STATE.WAIT_FOR_DEPLAY)
        {
            m_currentTimerToNextDrop -= Time.deltaTime;
            if (m_currentTimerToNextDrop <= 0.0f)
            {
                DeployRandomBonus();
                if (m_currentNumberOfDroppedBonus >= m_maxNumberOfDroppedBonus)
                {
                    m_state = DM_STATE.READY;
                }
                else
                {
                    m_currentTimerToNextDrop = Random.Range(TimeBetweenDropMin, TimeBetweenDropMax);
                }
            }
        }

        m_levelTimer += Time.deltaTime;
    }
示例#3
0
    /**********************************************************************************************/
    // Загружаем все данные из файлов настройки (m_defaultSettingsDataFile)
    //
    /**********************************************************************************************/
    void LoadSettingsFromFile()
    {
        m_state = DM_STATE.INITIALIZATION;

        string filePath = Path.Combine(Application.streamingAssetsPath, m_defaultSettingsDataFile);

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

            m_state = DM_STATE.READY;
        }
        else
        {
            Debug.LogError("Cannot find file!");
        }
    }
示例#4
0
    /**********************************************************************************/
    // функция извещающая CompanyManager о загрузке новой карты в компании
    //
    /**********************************************************************************/
    public void OnSceneLoaded()
    {
        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);

        // устанавливаем параметры дропа
        List <DropItemDescriptor> dropList = new List <DropItemDescriptor>(missionSettings.DropDescriptor.DropItems);

        DropManager.GetInstance().SetLevel(dropList, missionSettings.DropDescriptor.MaxNumOfDroppedItem);

        /*
         * DropManager.GetInstance().TimeBetweenDropMin = 8;
         * DropManager.GetInstance().TimeBetweenDropMin = 16;
         */

        // приостанавливаем игру до момента начала раунда
        GameManager.SetPauseState(true, true);

        // ожидаем начала раунда
        m_state        = DM_STATE.WAIT_FOR_ROUND_START;
        m_currectTimer = PauseBeforeRound;

        // обновляем счётчик побед
        UIController.GetInstance().SetGameScore(m_pl1WinnNum, m_pl2WinnNum);
    }
示例#5
0
    /**********************************************************************************/
    // в FixedUpdate мы проверяем состояние игры
    //
    /**********************************************************************************/
    public void OnGoalAchived(PLAYER losePlayerID)
    {
        PLAYER winner = PLAYER.NO_PLAYER;

        if (losePlayerID == PLAYER.PL1)
        {
            winner = PLAYER.PL2;
            m_pl2WinnNum++;
        }
        else if (losePlayerID == PLAYER.PL2)
        {
            winner = PLAYER.PL1;
            m_pl1WinnNum++;
        }

        // обновляем UI и пишем имя победителя на экране
        string playerName = Base.GetPlayerName(winner);

        if (m_pl1WinnNum >= RoundsToWin || m_pl2WinnNum >= RoundsToWin)
        {
            UIController.GetInstance().DeclareWinner(playerName);
            m_duelIsFinished = true;
        }
        else
        {
            UIController.GetInstance().DeclareRoundWinner(playerName);
        }

        // обновляем счётчик побед
        UIController.GetInstance().SetGameScore(m_pl1WinnNum, m_pl2WinnNum);

        // приостанавливаем игру до следующего раунда / выхода из дуэли
        GameManager.SetPauseState(true, true);

        // ожидаем окончания рауда
        m_state        = DM_STATE.WAIT_FOR_ROUND_END;
        m_currectTimer = PauseAfterRound;
    }
示例#6
0
    /**********************************************************************************/
    // в FixedUpdate мы проверяем состояние игры
    //
    /**********************************************************************************/
    private void FixedUpdate()
    {
        // дожидаемся начала раунда
        if (m_state == DM_STATE.WAIT_FOR_ROUND_START)
        {
            m_currectTimer -= Time.deltaTime;
            UIController.GetInstance().SetTimerMessage((int)Mathf.Floor(m_currectTimer + 0.5f));

            if (m_currectTimer <= 0.0)
            {
                GameManager.SetPauseState(false, true);
                m_state = DM_STATE.IN_GAME;

                UIController.GetInstance().HideMessagePanel();
            }
        }

        // выдерживаем паузу перед началом следующего раунда
        else if (m_state == DM_STATE.WAIT_FOR_ROUND_END)
        {
            m_currectTimer -= Time.deltaTime;
            if (m_currectTimer <= 0.0)
            {
                m_state = DM_STATE.READY;
                // если дуэль закончилась - выходим
                if (m_duelIsFinished)
                {
                    SceneManager.LoadScene("MainMenu", LoadSceneMode.Single);
                }
                else
                {
                    m_levelNumber++;
                    SceneManager.LoadScene("DuelLevel", LoadSceneMode.Single);
                }
            }
        }
    }
示例#7
0
    /**********************************************************************************/
    //  извещаем менеджер, что бонус был подобран
    //
    /**********************************************************************************/
    public void BonusWasTaked(Base.GO_TYPE bonusType)
    {
        // в отношении бонусов прибывших не с орбиты - ничего не предпринимаем - они не в юрисдикции DropManager
        if (!m_deploedDrops.ContainsKey(bonusType))
        {
            Debug.Log("Bonus ignored: " + bonusType.ToString());
            return;
        }

        m_currentNumberOfDroppedBonus--;

        // увеличиваем счётчик одновременно присутствующих бонусов
        if (m_deploedDrops[bonusType] != (int)DropItemDescriptorEditor.DROP_MARKER.UNLIMITED)
        {
            m_deploedDrops[bonusType]++;
        }

        // корректируем общий счётчик бонусов
        if (m_currentNumberOfDroppedBonus < m_maxNumberOfDroppedBonus)
        {
            m_state = DM_STATE.WAIT_FOR_DEPLAY;
            m_currentTimerToNextDrop = Random.Range(TimeBetweenDropMin, TimeBetweenDropMax);
        }
    }
示例#8
0
 //Helper function that sets our state to the inputted state.
 void SetState(DM_STATE STATE)
 {
     cur_state = STATE;
 }