示例#1
0
    public static void Save(string save_name)
    {
        if (SaveGame.m_State != SaveGame.State.None)
        {
            Debug.LogWarning("Can't save, state = " + SaveGame.m_State.ToString());
            return;
        }
        if (GreenHellGame.Instance.IsGamescom())
        {
            return;
        }
        if (!ReplTools.IsPlayingAlone() && !ReplTools.AmIMaster())
        {
            SaveGame.SaveCoop();
            return;
        }
        Debug.Log("SAVE - " + save_name);
        SaveGame.m_State = SaveGame.State.Save;
        HUDSaving.Get().Activate();
        SaveGame.SetupObjects();
        SaveGame.m_IVals.Clear();
        SaveGame.m_SVals.Clear();
        SaveGame.m_FVals.Clear();
        SaveGame.m_BVals.Clear();
        foreach (ISaveLoad saveLoad in SaveGame.m_Objects)
        {
            saveLoad.Save();
        }
        BinaryFormatter binaryFormatter = new BinaryFormatter();
        MemoryStream    memoryStream    = new MemoryStream();

        binaryFormatter.Serialize(memoryStream, GreenHellGame.s_GameVersion);
        binaryFormatter.Serialize(memoryStream, GreenHellGame.Instance.m_GameMode);
        long num = DateTime.Now.ToBinary();

        binaryFormatter.Serialize(memoryStream, num);
        int ivalue = StatsManager.Get().GetStatistic(Enums.Event.DaysSurvived).IValue;

        binaryFormatter.Serialize(memoryStream, ivalue);
        int activePresetType = (int)DifficultySettings.GetActivePresetType();

        binaryFormatter.Serialize(memoryStream, activePresetType);
        binaryFormatter.Serialize(memoryStream, MainLevel.Instance.m_Tutorial);
        bool flag = Player.Get().IsDead();

        binaryFormatter.Serialize(memoryStream, flag);
        binaryFormatter.Serialize(memoryStream, ReplicatedSessionState.Get() != null && ReplicatedSessionState.Get().m_PlayedCoop);
        Stream     serializationStream = memoryStream;
        P2PSession instance            = P2PSession.Instance;

        binaryFormatter.Serialize(serializationStream, ((instance != null) ? instance.GetSessionId() : null) ?? "");
        binaryFormatter.Serialize(memoryStream, SaveGame.m_IVals);
        binaryFormatter.Serialize(memoryStream, SaveGame.m_SVals);
        binaryFormatter.Serialize(memoryStream, SaveGame.m_FVals);
        binaryFormatter.Serialize(memoryStream, SaveGame.m_BVals);
        DebugUtils.Assert(GreenHellGame.Instance.m_RemoteStorage.FileWrite(save_name, memoryStream.GetBuffer()), "SaveGame - remote storage write failed", true, DebugUtils.AssertType.Info);
        memoryStream.Close();
        SaveGame.SaveScreenshot(save_name);
        SaveGame.m_State = SaveGame.State.None;
    }
示例#2
0
    public static void LoadPlayer(string save_name)
    {
        if (SaveGame.m_State != SaveGame.State.None)
        {
            Debug.LogWarning("Can't load player, state = " + SaveGame.m_State.ToString());
            return;
        }
        if (!File.Exists(Application.persistentDataPath + "/" + save_name))
        {
            return;
        }
        Debug.Log("LOAD_PLAYER - " + save_name);
        SaveGame.m_State = SaveGame.State.Load;
        SaveGame.SetupObjects();
        SaveGame.m_IVals.Clear();
        SaveGame.m_SVals.Clear();
        SaveGame.m_FVals.Clear();
        SaveGame.m_BVals.Clear();
        BinaryFormatter binaryFormatter = new BinaryFormatter();
        FileStream      fileStream      = File.Open(Application.persistentDataPath + "/" + save_name, FileMode.Open);
        GameVersion     lhs             = new GameVersion((GameVersion)binaryFormatter.Deserialize(fileStream));
        GameMode        gameMode        = (GameMode)binaryFormatter.Deserialize(fileStream);
        long            num             = (long)binaryFormatter.Deserialize(fileStream);
        int             num2            = (int)binaryFormatter.Deserialize(fileStream);
        int             num3            = (int)binaryFormatter.Deserialize(fileStream);

        if (lhs >= GreenHellGame.s_GameVersionEarlyAccessUpdate8)
        {
            bool flag = (bool)binaryFormatter.Deserialize(fileStream);
        }
        if (lhs >= GreenHellGame.s_GameVersionEarlyAccessUpdate12 && lhs < GreenHellGame.s_GameVersionEarlyAccessUpdate13 && (bool)binaryFormatter.Deserialize(fileStream))
        {
            DifficultySettings.SetActivePresetType(DifficultySettings.PresetType.PermaDeath);
        }
        if (lhs >= GreenHellGame.s_GameVersionEarlyAccessUpdate13)
        {
            bool flag2 = (bool)binaryFormatter.Deserialize(fileStream);
        }
        if (GreenHellGame.s_GameVersion >= GreenHellGame.s_GameVersionMasterShelters1_3)
        {
            BinaryFormatter binaryFormatter2    = binaryFormatter;
            Stream          serializationStream = fileStream;
            P2PSession      instance            = P2PSession.Instance;
            binaryFormatter2.Serialize(serializationStream, ((instance != null) ? instance.GetSessionId() : null) ?? "");
        }
        SaveGame.m_IVals = (Dictionary <string, int>)binaryFormatter.Deserialize(fileStream);
        SaveGame.m_SVals = (Dictionary <string, string>)binaryFormatter.Deserialize(fileStream);
        SaveGame.m_FVals = (Dictionary <string, float>)binaryFormatter.Deserialize(fileStream);
        SaveGame.m_BVals = (Dictionary <string, bool>)binaryFormatter.Deserialize(fileStream);
        fileStream.Close();
        Player.Get().Load();
        PlayerInjuryModule.Get().Load();
        PlayerConditionModule.Get().Load();
        PlayerDiseasesModule.Get().Load();
        ItemsManager.Get().Load();
        MainLevel.Instance.Load();
        GreenHellGame.Instance.m_LoadGameState = LoadGameState.FullLoadCompleted;
        SaveGame.m_State = SaveGame.State.None;
    }