using System; using System.IO; using FullSerializer; using System.Text; using UnityEngine; namespace BayatGames.SaveGameFree.Serializers { /// /// Save Game Json Serializer. /// public class SaveGameJsonSerializer : ISaveGameSerializer { /// /// Serialize the specified object to stream with encoding. /// /// Object. /// Stream. /// Encoding. /// The 1st type parameter. public void Serialize ( T obj, Stream stream, Encoding encoding ) { #if !UNITY_WSA || !UNITY_WINRT try { StreamWriter writer = new StreamWriter ( stream, encoding ); fsSerializer serializer = new fsSerializer (); fsData data = new fsData (); serializer.TrySerialize ( obj, out data ); writer.Write ( fsJsonPrinter.CompressedJson ( data ) ); writer.Dispose (); } catch ( Exception ex ) { Debug.LogException ( ex ); } #else StreamWriter writer = new StreamWriter ( stream, encoding ); writer.Write ( JsonUtility.ToJson ( obj ) ); writer.Dispose (); #endif } /// /// Deserialize the specified object from stream using the encoding. /// /// Stream. /// Encoding. /// The 1st type parameter. public T Deserialize ( Stream stream, Encoding encoding ) { T result = default(T); #if !UNITY_WSA || !UNITY_WINRT try { StreamReader reader = new StreamReader ( stream, encoding ); fsSerializer serializer = new fsSerializer (); fsData data = fsJsonParser.Parse ( reader.ReadToEnd () ); serializer.TryDeserialize ( data, ref result ); if ( result == null ) { result = default(T); } reader.Dispose (); } catch ( Exception ex ) { Debug.LogException ( ex ); } #else StreamReader reader = new StreamReader ( stream, encoding ); result = JsonUtility.FromJson ( reader.ReadToEnd () ); reader.Dispose (); #endif return result; } } }