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;
}
}
}