コード例 #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 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());
 }