public TrwSerializationWriteContext(ITrwWriter stream, ITrwSerializationHandlerContainer handlers, IReadOnlyList <ITrwSerializationTypeRedirect> typeRedirects, TrwSerializationOptions options) { Writer = stream; TypeAliases = new Dictionary <Type, string>(); this.handlers = handlers; this.typeRedirects = typeRedirects; this.options = options; Bag = new Dictionary <string, object>(); }
private ITrwSerializationWriteContext BasicWriteContext(ITrwWriter writer, bool aliasTypes) { var serializationType = SaveLoadConstants.BasicSerializationType; var handlers = serializationNecessities.GetTrwHandlerContainer(serializationType); var typeRedirects = serializationNecessities.GetTrwHandlerTypeRedirects(serializationType); return(new TrwSerializationWriteContext(writer, handlers, typeRedirects, new TrwSerializationOptions { ExplicitTypes = TrwSerializationExplicitTypes.Never, AliasTypes = aliasTypes })); }
public ITrwSerializationWriteContext WorldWriteContext(ITrwWriter writer) { var serializationType = SaveLoadConstants.WorldSerializationType; var handlers = serializationNecessities.GetTrwHandlerContainer(serializationType); var typeRedirects = serializationNecessities.GetTrwHandlerTypeRedirects(serializationType); return(new TrwSerializationWriteContext(writer, handlers, typeRedirects, new TrwSerializationOptions { ExplicitTypes = TrwSerializationExplicitTypes.WhenObject, AliasTypes = true, TypePropertyName = "type", ValuePropertyName = "value" })); }
public static void WriteDynamic(this ITrwWriter writer, object obj) { switch (obj) { case null: writer.WriteValue().Null(); break; case bool b: writer.WriteValue().Bool(b); break; case int i: writer.WriteValue().SInt32(i); break; case double d: writer.WriteValue().Float64(d); break; case string s: writer.WriteValue().String(s); break; case IEnumerable <KeyValuePair <string, object> > dict: writer.StartObject(); foreach (var kvp in dict) { writer.AddProperty(kvp.Key); writer.WriteDynamic(kvp.Value); } writer.EndObject(); break; case IEnumerable <object> list: writer.StartArray(TrwValueType.Undefined); foreach (var item in list) { writer.WriteDynamic(item); } writer.EndArray(); break; } }
public ITrwSerializationWriteContext GeneratedResourceInfoWriteContext(ITrwWriter writer) => BasicWriteContext(writer, true);
public ITrwSerializationWriteContext AssetsInfoWriteContext(ITrwWriter writer) => BasicWriteContext(writer, true);
public ITrwSerializationWriteContext AliasesWriteContext(ITrwWriter writer) => BasicWriteContext(writer, false);