public bool SaveGame(string name) // заменить потом на persistent - постоянный путь { Time.timeScale = 0; GameMasterSerializer gms = new GameMasterSerializer(); #region gms mainPartFilling gms.gameSpeed = gameSpeed; gms.lifeGrowCoefficient = lifeGrowCoefficient; gms.demolitionLossesPercent = demolitionLossesPercent; gms.lifepowerLossesPercent = lifepowerLossesPercent; gms.luckCoefficient = LUCK_COEFFICIENT; gms.sellPriceCoefficient = sellPriceCoefficient; gms.tradeVesselsTrafficCoefficient = tradeVesselsTrafficCoefficient; gms.upgradeDiscount = upgradeDiscount; gms.upgradeCostIncrease = upgradeCostIncrease; gms.environmentalConditions = environmentalConditions; gms.warProximity = warProximity; gms.difficulty = difficulty; gms.startGameWith = startGameWith; gms.prevCutHeight = prevCutHeight; gms.diggingSpeed = diggingSpeed; gms.pouringSpeed = pouringSpeed; gms.manufacturingSpeed = manufacturingSpeed; gms.clearingSpeed = clearingSpeed; gms.gatheringSpeed = gatheringSpeed; gms.miningSpeed = miningSpeed; gms.machineConstructingSpeed = machineConstructingSpeed; gms.day = day; gms.week = week; gms.month = month; gms.year = year; gms.millenium = millenium; gms.t = timeGone; gms.windVector_x = windVector.x; gms.windVector_z = windVector.y; gms.windTimer = windTimer; gms.windChangeTime = windChangeTime; gms.labourTimer = labourTimer; gms.lifepowerTimer = lifepowerTimer; gms.recruiting_hireCost = RecruitingCenter.GetHireCost(); #endregion gms.chunkSerializer = mainChunk.SaveChunkData(); gms.colonyControllerSerializer = colonyController.Save(); gms.dockStaticSerializer = Dock.SaveStaticDockData(); gms.shuttleStaticSerializer = Shuttle.SaveStaticData(); gms.crewStaticSerializer = Crew.SaveStaticData(); gms.questStaticSerializer = QuestUI.current.Save(); gms.expeditionStaticSerializer = Expedition.SaveStaticData(); string path = Application.persistentDataPath + "/Saves/"; if (!Directory.Exists(path)) { Directory.CreateDirectory(path); } FileStream fs = File.Create(path + name + '.' + SaveSystemUI.SAVE_FNAME_EXTENSION); savename = name; BinaryFormatter bf = new BinaryFormatter(); bf.Serialize(fs, gms); fs.Close(); Time.timeScale = 1; return(true); }
public bool LoadGame(string fullname) { // отдельно функцию проверки и коррекции сейв-файла if (true) // <- тут будет функция проверки { // ОЧИСТКА StopAllCoroutines(); if (mainChunk != null) { Destroy(mainChunk.gameObject); } // очистка подписчиков на ивенты невозможна, сами ивенты к этому моменту недоступны Crew.Reset(); Shuttle.Reset(); Grassland.ScriptReset(); Expedition.GameReset(); Structure.ResetToDefaults_Static(); // все наследуемые resetToDefaults внутри colonyController.ResetToDefaults(); // подчищает все списки FollowingCamera.main.ResetLists(); //UI.current.Reset(); // НАЧАЛО ЗАГРУЗКИ BinaryFormatter bf = new BinaryFormatter(); FileStream file = File.Open(fullname, FileMode.Open); Time.timeScale = 0; gameSpeed = 0; GameMasterSerializer gms = (GameMasterSerializer)bf.Deserialize(file); file.Close(); #region gms mainPartLoading gameSpeed = gms.gameSpeed; lifeGrowCoefficient = gms.lifeGrowCoefficient; demolitionLossesPercent = gms.demolitionLossesPercent; lifepowerLossesPercent = gms.lifepowerLossesPercent; LUCK_COEFFICIENT = gms.luckCoefficient; sellPriceCoefficient = gms.sellPriceCoefficient; tradeVesselsTrafficCoefficient = gms.tradeVesselsTrafficCoefficient; upgradeDiscount = gms.upgradeDiscount; upgradeCostIncrease = gms.upgradeCostIncrease; environmentalConditions = gms.environmentalConditions; warProximity = gms.warProximity; difficulty = gms.difficulty; startGameWith = gms.startGameWith; prevCutHeight = gms.prevCutHeight; diggingSpeed = gms.diggingSpeed; pouringSpeed = gms.pouringSpeed; manufacturingSpeed = gms.manufacturingSpeed; clearingSpeed = gms.clearingSpeed; gatheringSpeed = gms.gatheringSpeed; miningSpeed = gms.miningSpeed; machineConstructingSpeed = gms.machineConstructingSpeed; day = gms.day; week = gms.week; month = gms.month; year = gms.year; millenium = gms.millenium; timeGone = gms.t; windVector = new Vector2(gms.windVector_x, gms.windVector_z); windTimer = gms.windTimer; windChangeTime = gms.windChangeTime; lifepowerTimer = gms.lifepowerTimer; labourTimer = gms.labourTimer; #endregion RecruitingCenter.SetHireCost(gms.recruiting_hireCost); Crew.LoadStaticData(gms.crewStaticSerializer); Shuttle.LoadStaticData(gms.shuttleStaticSerializer); // because of hangars GameObject g = new GameObject("chunk"); mainChunk = g.AddComponent <Chunk>(); mainChunk.LoadChunkData(gms.chunkSerializer); colonyController.Load(gms.colonyControllerSerializer); // < --- COLONY CONTROLLER Dock.LoadStaticData(gms.dockStaticSerializer); QuestUI.current.Load(gms.questStaticSerializer); Expedition.LoadStaticData(gms.expeditionStaticSerializer); FollowingCamera.main.WeNeedUpdate(); Time.timeScale = 1; gameSpeed = 1; savename = fullname; return(true); } else { UIController.current.MakeAnnouncement(Localization.GetAnnouncementString(GameAnnouncements.LoadingFailed)); return(false); } }