Esempio n. 1
0
        /// <summary>
        /// Load the given persistable.
        /// </summary>
        /// <param name="p">Persistable to laod.</param>
        public static void Load(Persistable p)
        {
            string data = PlayerPrefs.GetString(p.UniqueSaveKey, "");

            if (data.Length > 0)
            {
                using (StringReader reader = new StringReader(data)){
                    XmlSerializer serializer  = new XmlSerializer(p.SavedObjectType);
                    object        savedObject = serializer.Deserialize(reader);
                    p.SaveData = savedObject;
                    p.PostLoadAction();
                }
            }
            else
            {
                p.PostResetAction();
            }
        }
Esempio n. 2
0
        /// <summary>
        /// Save the given persistable.
        /// </summary>
        /// <param name="p">Persistable to save.</param>
        public static void Save(Persistable p)
        {
            object saveData = p.SaveData;

            // We assume all saveData is annotated with [Serializable] we could add a condition for ISeriazable too.
            if (saveData.GetType() == p.SavedObjectType && p.SavedObjectType.IsSerializable)
            {
                using (StringWriter writer = new StringWriter())
                {
                    XmlSerializer serializer = new XmlSerializer(p.SavedObjectType);
                    serializer.Serialize(writer, saveData);
                    PlayerPrefs.SetString(p.UniqueSaveKey, writer.ToString());
                }
            }
            else
            {
                Debug.LogError("Save data for " + p + " is not serializable or of the wrong type.");
            }
        }
Esempio n. 3
0
 /// <summary>
 /// Resets the given persistable.
 /// </summary>
 /// <param name="p">Persistable to reset.</param>
 public static void Reset(Persistable p)
 {
     PlayerPrefs.DeleteKey(p.UniqueSaveKey);
     p.PostResetAction();
 }