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; }
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; }