using System.Collections.Generic; using System.Collections; using System.IO; using System; using UnityEngine; using System.Text; using System.Globalization; namespace ES3Internal { internal class ES3JSONWriter : ES3Writer { internal StreamWriter baseWriter; private bool isFirstProperty = true; public ES3JSONWriter(Stream stream, ES3Settings settings) : this(stream, settings, true, true){} internal ES3JSONWriter(Stream stream, ES3Settings settings, bool writeHeaderAndFooter, bool mergeKeys) : base(settings, writeHeaderAndFooter, mergeKeys) { baseWriter = new StreamWriter(stream); StartWriteFile(); } #region WritePrimitive(value) methods. internal override void WritePrimitive(int value) { baseWriter.Write(value); } internal override void WritePrimitive(float value) { baseWriter.Write(value.ToString("R", CultureInfo.InvariantCulture)); } internal override void WritePrimitive(bool value) { baseWriter.Write(value ? "true" : "false"); } internal override void WritePrimitive(decimal value) { baseWriter.Write(value.ToString(CultureInfo.InvariantCulture)); } internal override void WritePrimitive(double value) { baseWriter.Write(value.ToString("R", CultureInfo.InvariantCulture)); } internal override void WritePrimitive(long value) { baseWriter.Write(value); } internal override void WritePrimitive(ulong value) { baseWriter.Write(value); } internal override void WritePrimitive(uint value) { baseWriter.Write(value); } internal override void WritePrimitive(byte value) { baseWriter.Write(System.Convert.ToInt32(value)); } internal override void WritePrimitive(sbyte value) { baseWriter.Write(System.Convert.ToInt32(value)); } internal override void WritePrimitive(short value) { baseWriter.Write(System.Convert.ToInt32(value)); } internal override void WritePrimitive(ushort value) { baseWriter.Write(System.Convert.ToInt32(value)); } internal override void WritePrimitive(char value) { WritePrimitive( value.ToString() ); } internal override void WritePrimitive(byte[] value) { WritePrimitive( System.Convert.ToBase64String(value) ); } internal override void WritePrimitive(string value) { baseWriter.Write("\""); // Escape any quotation marks within the string. for(int i = 0; i