Пример #1
0
    /**********************************************************************************/
    // LoadGameData
    // загружаем данные из файла и парсим их в удобоваримый формат
    //
    /**********************************************************************************/
    private void LoadGameData()
    {
        string filePath = EditorUtility.OpenFilePanel("Select company data file", Application.streamingAssetsPath, "json");

        if (!string.IsNullOrEmpty(filePath))
        {
            string            dataAsJson        = File.ReadAllText(filePath);
            CompanyDescriptor companyDescriptor = JsonUtility.FromJson <CompanyDescriptor>(dataAsJson);
            m_lastOpenFile = filePath;  // запоминаем путь к файлу, будет использован в функции сохранения

            CompanyData          = new CompanyDescriptorEditor();
            CompanyData.missions = new MissionDescriptorEditor[companyDescriptor.missions.Length];

            // разбираем миссию за миссией
            for (int missInd = 0; missInd < companyDescriptor.missions.Length; missInd++)
            {
                // создаём MissionDescriptorEditor и заполняем его данными из MissionDescriptor
                MissionDescriptor       mission       = companyDescriptor.missions[missInd];
                MissionDescriptorEditor missionEditor = new MissionDescriptorEditor();
                CompanyData.missions[missInd] = missionEditor;

                missionEditor.MapXSize                  = mission.MapXSize;
                missionEditor.MapYSize                  = mission.MapYSize;
                missionEditor.MissionDifficulties       = mission.MissionDifficulties;
                missionEditor.RequiredStoryLineProgress = mission.RequiredStoryLineProgress;

                // конвертируем здание
                missionEditor.Buildings = new AvailableBuildingEditor[mission.Buildings.Length];
                for (int buildInd = 0; buildInd < mission.Buildings.Length; buildInd++)
                {
                    AvailableBuildingEditor buildingEditor = new AvailableBuildingEditor();
                    missionEditor.Buildings[buildInd] = buildingEditor;

                    buildingEditor.BuildingType = Base.StringToBlockType(mission.Buildings[buildInd].BuildingType);
                    buildingEditor.Weight       = mission.Buildings[buildInd].Weight;
                }

                // конвертируем список боссов
                missionEditor.MissionBosses = new Base.GO_TYPE[mission.MissionBosses.Length];
                for (int bossInd = 0; bossInd < mission.MissionBosses.Length; bossInd++)
                {
                    missionEditor.MissionBosses[bossInd] = Base.StringToGOType(mission.MissionBosses[bossInd]);
                }


                // конвертируем настройки дропа
                missionEditor.DropDescriptor = new DropDescriptorEditor();
                missionEditor.DropDescriptor.MaxNumOfDroppedItem = mission.DropDescriptor.MaxNumOfDroppedItem;
                missionEditor.DropDescriptor.DropItems           = new DropItemDescriptorEditor[mission.DropDescriptor.DropItems.Length];
                for (int dropInd = 0; dropInd < mission.DropDescriptor.DropItems.Length; dropInd++)
                {
                    DropItemDescriptorEditor dropEditor = new DropItemDescriptorEditor();
                    missionEditor.DropDescriptor.DropItems[dropInd] = dropEditor;

                    dropEditor.DropType   = Base.StringToGOType(mission.DropDescriptor.DropItems[dropInd].DropType);
                    dropEditor.DropWeight = mission.DropDescriptor.DropItems[dropInd].DropWeight;
                }
            }
        }
    }
Пример #2
0
    public static MissionDescriptorData fromComponent(MissionDescriptor descriptor)
    {
        if (descriptor == null) {
            return null;
        }

        MissionDescriptorData descriptorData = new MissionDescriptorData();
        descriptorData.name = descriptor.name;
        descriptorData.type = descriptor.type;
        return descriptorData;
    }
Пример #3
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);
    }
Пример #4
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);
    }
Пример #5
0
 public static void toComponent(MissionDescriptorData descriptorData, MissionDescriptor descriptor)
 {
     descriptor.name = descriptorData.name;
     descriptor.type = descriptorData.type;
 }
Пример #6
0
    /**********************************************************************************/
    // SaveGameData
    // сохраняем данные в файл, преобразуя к текстовому виду
    //
    /**********************************************************************************/
    private void SaveGameData(string useFilePath = "")
    {
        string filePath = "";

        if (useFilePath == "")
        {
            filePath = EditorUtility.SaveFilePanel("Save company data file", Application.streamingAssetsPath, "", "json");
        }
        else
        {
            filePath = useFilePath;
        }


        if (!string.IsNullOrEmpty(filePath))
        {
            CompanyDescriptor companyDescriptorToWrite = new CompanyDescriptor();
            companyDescriptorToWrite.missions = new MissionDescriptor[CompanyData.missions.Length];

            // разбираем миссию за миссией
            for (int missInd = 0; missInd < CompanyData.missions.Length; missInd++)
            {
                // создаём MissionDescriptorEditor и заполняем его данными из MissionDescriptor
                MissionDescriptor       missionToWrite = new MissionDescriptor();
                MissionDescriptorEditor mission        = CompanyData.missions[missInd];
                companyDescriptorToWrite.missions[missInd] = missionToWrite;

                missionToWrite.MapXSize                  = mission.MapXSize;
                missionToWrite.MapYSize                  = mission.MapYSize;
                missionToWrite.MissionDifficulties       = mission.MissionDifficulties;
                missionToWrite.RequiredStoryLineProgress = mission.RequiredStoryLineProgress;

                // конвертируем здание
                missionToWrite.Buildings = new AvailableBuilding[mission.Buildings.Length];
                for (int buildInd = 0; buildInd < mission.Buildings.Length; buildInd++)
                {
                    AvailableBuilding buildingToWrite = new AvailableBuilding();
                    missionToWrite.Buildings[buildInd] = buildingToWrite;

                    buildingToWrite.BuildingType = mission.Buildings[buildInd].BuildingType.ToString();
                    buildingToWrite.Weight       = mission.Buildings[buildInd].Weight;
                }

                // конвертируем список боссов
                missionToWrite.MissionBosses = new string[mission.MissionBosses.Length];
                for (int bossInd = 0; bossInd < mission.MissionBosses.Length; bossInd++)
                {
                    missionToWrite.MissionBosses[bossInd] = mission.MissionBosses[bossInd].ToString();
                }

                // конвертируем настройки дропа
                missionToWrite.DropDescriptor = new DropDescriptor();
                missionToWrite.DropDescriptor.MaxNumOfDroppedItem = mission.DropDescriptor.MaxNumOfDroppedItem;
                missionToWrite.DropDescriptor.DropItems           = new DropItemDescriptor[mission.DropDescriptor.DropItems.Length];

                for (int dropInd = 0; dropInd < mission.DropDescriptor.DropItems.Length; dropInd++)
                {
                    DropItemDescriptor dropToWrite = new DropItemDescriptor();
                    missionToWrite.DropDescriptor.DropItems[dropInd] = dropToWrite;

                    dropToWrite.DropType   = mission.DropDescriptor.DropItems[dropInd].DropType.ToString();
                    dropToWrite.DropWeight = mission.DropDescriptor.DropItems[dropInd].DropWeight;
                }
            }

            string dataAsJson = JsonUtility.ToJson(companyDescriptorToWrite);
            File.WriteAllText(filePath, dataAsJson);
        }
    }