/**********************************************************************************/ // 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; } } } }
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; }
/**********************************************************************************/ // функция извещающая 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); }
public static void toComponent(MissionDescriptorData descriptorData, MissionDescriptor descriptor) { descriptor.name = descriptorData.name; descriptor.type = descriptorData.type; }
/**********************************************************************************/ // 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); } }