Ejemplo n.º 1
0
    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);
    }
Ejemplo n.º 2
0
    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);
        }
    }