/// <summary> /// Converts a save file byte array to usable save objects list /// </summary> /// <param name="bytes"></param> /// <returns></returns> public void RestoreSave(byte[] bytes) { try { MemoryStream memStream = new MemoryStream(); BinaryFormatter binForm = new BinaryFormatter(); memStream.Write(bytes, 0, bytes.Length); memStream.Position = 0; saveObjects = binForm.Deserialize(memStream) as List <SaveObject>; } catch (Exception e) { Debug.LogError(TAG + e.StackTrace); Debug.Log(TAG + "Error parsing old game data.. resetting save."); Init(); } // Check if savegame versions match and migrate data if necessary SaveGameVersion currentVersion = new SaveGameVersion(); if (GetSaveGameVersion() == null) { Debug.Log(TAG + "Save game is from before versions were implemented, we can overwrite all and make a clean file."); Init(); } else if (currentVersion.GetVersion() > GetSaveGameVersion().GetVersion()) { Debug.Log(TAG + "There is a new savegame version detected. "); // For new versions place migration code here... // ... } }
private void Init() { saveObjects = new List <SaveObject>(); // init all saveobjects OptionsSave os = new OptionsSave(); PlayerSave ps = new PlayerSave(); EndlessSessionSave ess = new EndlessSessionSave(); MultiplayerSessionSave mss = new MultiplayerSessionSave(); SaveGameVersion sgv = new SaveGameVersion(); // add to list saveObjects.Add(os); saveObjects.Add(ps); saveObjects.Add(ess); saveObjects.Add(mss); saveObjects.Add(sgv); }