private static void PerformSaveCheckPoint(string name, bool urgent) { var newGame = CreateSaveEntry(name, urgent); FilePrefs.SetString(PlayerName + "__RESUME__", Convert.ToBase64String(UnitySerializer.Serialize(newGame))); FilePrefs.Save(); }
/// <summary> /// Resume for a stored game state that wasn't directly saved /// </summary> public static void Resume() { var data = FilePrefs.GetString(PlayerName + "__RESUME__"); if (!string.IsNullOrEmpty(data)) { var se = UnitySerializer.Deserialize <SaveEntry>(Convert.FromBase64String(data)); se.Load(); } }
public bool this[string name] { get { name = "Pref " + name; return(FilePrefs.HasKey(name) ? (FilePrefs.GetInt(name) == 1) : false); } set { name = "Pref " + name; FilePrefs.SetInt(name, value ? 1 : 0); } }
private IEnumerator LoadSavesAndSerializers() { Serialization.UnitySerializer.AddPrivateType(typeof(AnimationClip)); Serialization.UnitySerializer.AddPrivateType(typeof(Keyframe)); yield return(0); try { var stored = FilePrefs.GetString("_Save_Game_Data_"); if (!string.IsNullOrEmpty(stored)) { try { LevelSerializer.SavedGames = UnitySerializer.Deserialize <Lookup <string, List <LevelSerializer.SaveEntry> > >(Convert.FromBase64String(stored)); } catch { LevelSerializer.SavedGames = null; } } if (LevelSerializer.SavedGames == null) { LevelSerializer.SavedGames = new Index <string, List <LevelSerializer.SaveEntry> >(); LevelSerializer.SaveDataToFilePrefs(); } } catch (System.Exception e) { LevelSerializer.SavedGames = new Index <string, List <LevelSerializer.SaveEntry> >(); Debug.Log(e); } foreach (var asm in AppDomain.CurrentDomain.GetAssemblies()) { try { UnitySerializer.ScanAllTypesForAttribute((tp, attr) => LevelSerializer.createdPlugins.Add(Activator.CreateInstance(tp)), asm, typeof(SerializerPlugIn)); UnitySerializer.ScanAllTypesForAttribute((tp, attr) => { LevelSerializer.CustomSerializers[((ComponentSerializerFor)attr).SerializesType] = Activator.CreateInstance(tp) as IComponentSerializer; }, asm, typeof(ComponentSerializerFor)); } catch (System.Exception e) { Debug.Log(e); } } }
private static void PerformSave(string name, bool urgent) { var newGame = CreateSaveEntry(name, urgent); SavedGames[PlayerName].Insert(0, newGame); while (SavedGames[PlayerName].Count > MaxGames) { SavedGames[PlayerName].RemoveAt(SavedGames.Count - 1); } SaveDataToFilePrefs(); FilePrefs.SetString(PlayerName + "__RESUME__", Convert.ToBase64String(UnitySerializer.Serialize(newGame))); FilePrefs.Save(); GameSaved(); }
/// <summary> /// Suspends the serialization. Must resume as many times as you suspend /// </summary> public static void SuspendSerialization() { if (_suspensionCount == 0) { SuspendingSerialization(); if (SerializationMode == SerializationModes.CacheSerialization) { _cachedState = CreateSaveEntry("resume", true); if (SaveResumeInformation) { FilePrefs.SetString(PlayerName + "__RESUME__", Convert.ToBase64String(UnitySerializer.Serialize(_cachedState))); FilePrefs.Save(); } } } _suspensionCount++; }
/// <summary> /// Saves the stored game data to player prefs. /// </summary> public static void SaveDataToFilePrefs() { FilePrefs.SetString("_Save_Game_Data_", Convert.ToBase64String(UnitySerializer.Serialize(SavedGames))); FilePrefs.Save(); }
static LevelSerializer() { webClient.UploadDataCompleted += HandleWebClientUploadDataCompleted; webClient.UploadStringCompleted += HandleWebClientUploadStringCompleted; //Basic plug in configuration and special cases _stopCases.Add(typeof(PrefabIdentifier)); UnitySerializer.AddPrivateType(typeof(AnimationClip)); //Other initialization foreach (var asm in AppDomain.CurrentDomain.GetAssemblies()) { UnitySerializer.ScanAllTypesForAttribute( (tp, attr) => createdPlugins.Add(Activator.CreateInstance(tp)), asm, typeof(SerializerPlugIn)); UnitySerializer.ScanAllTypesForAttribute( (tp, attr) => { CustomSerializers[((ComponentSerializerFor)attr).SerializesType] = Activator.CreateInstance(tp) as IComponentSerializer; }, asm, typeof(ComponentSerializerFor)); } AllPrefabs = Resources.FindObjectsOfTypeAll(typeof(GameObject)).Cast <GameObject>() .Where(go => { var pf = go.GetComponent <PrefabIdentifier>(); return(pf != null && !pf.IsInScene()); }) .Distinct(CompareGameObjects.Instance) .ToDictionary(go => go.GetComponent <PrefabIdentifier>().ClassId, go => go); try { var stored = FilePrefs.GetString("_Save_Game_Data_"); if (!string.IsNullOrEmpty(stored)) { try { SavedGames = UnitySerializer.Deserialize <Lookup <string, List <SaveEntry> > >(Convert.FromBase64String(stored)); } catch { SavedGames = null; } } if (SavedGames == null) { SavedGames = new Index <string, List <SaveEntry> >(); SaveDataToFilePrefs(); } } catch { SavedGames = new Index <string, List <SaveEntry> >(); } }
private void OnApplicationQuit() { FilePrefs.Save(); }