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 SetupObjects() { SaveGame.m_Objects.Clear(); SaveGame.m_Objects.Add(DifficultySettings.Get()); SaveGame.m_Objects.Add(DialogsManager.Get()); SaveGame.m_Objects.Add(AIManager.Get()); SaveGame.m_Objects.Add(EnemyAISpawnManager.Get()); SaveGame.m_Objects.Add(TriggersManager.Get()); SaveGame.m_Objects.Add(ItemsManager.Get()); SaveGame.m_Objects.Add(SensorManager.Get()); SaveGame.m_Objects.Add(ConstructionGhostManager.Get()); SaveGame.m_Objects.Add(StaticObjectsManager.Get()); SaveGame.m_Objects.Add(Player.Get()); SaveGame.m_Objects.Add(PlayerConditionModule.Get()); SaveGame.m_Objects.Add(PlayerInjuryModule.Get()); SaveGame.m_Objects.Add(PlayerDiseasesModule.Get()); SaveGame.m_Objects.Add(StatsManager.Get()); SaveGame.m_Objects.Add(HintsManager.Get()); SaveGame.m_Objects.Add(ObjectivesManager.Get()); SaveGame.m_Objects.Add(StoryObjectivesManager.Get()); SaveGame.m_Objects.Add(HUDObjectives.Get()); SaveGame.m_Objects.Add(MenuNotepad.Get()); SaveGame.m_Objects.Add(MapTab.Get()); SaveGame.m_Objects.Add(Music.Get()); SaveGame.m_Objects.Add(RainManager.Get()); SaveGame.m_Objects.Add(SleepController.Get()); SaveGame.m_Objects.Add(MainLevel.Instance); SaveGame.m_Objects.Add(ScenarioManager.Get()); SaveGame.m_Objects.Add(InventoryBackpack.Get()); SaveGame.m_Objects.Add(ReplicatedSessionState.Get()); }