Beispiel #1
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);
    }
    /**********************************************************************************/
    // функция извещающая 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);
    }
Beispiel #3
0
    /**********************************************************************************/
    // проверяем подбор объекта
    //
    /**********************************************************************************/
    protected virtual void CheckForPicking()
    {
        m_chekingRateCounter -= Time.deltaTime;
        if (m_chekingRateCounter <= 0.0f)
        {
            m_chekingRateCounter += m_chekingRate;

            // производим проверку подбора
            foreach (PlayerController plCtr in m_playerControllers)
            {
                m_position = GetLocalPosition();
                Point playerPosition = plCtr.GetGlobalPosition();
                if (playerPosition.IsSamePoint(m_position))
                {
                    plCtr.ApplyBonus(BonusType);
                    m_state = BONUS_STATE.TAKEN;

                    // если бонус был сброшен с орбиты
                    if (BonusSource == BONUS_SOURCE.ALIEN)
                    {
                        // оповещаем DropManager о том, что бонус был подобран
                        DropManager.GetInstance().BonusWasTaked((Base.GO_TYPE)BonusType);
                    }

                    // включаем анимацию взятия бонуса и выходим
                    m_animator.SetBool("Burn", true);

                    if (m_productionBase != null)
                    {
                        m_productionBase.ReleaseProduction(0);
                    }

                    return;
                }
            }
        }
    }