Esempio n. 1
0
 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>();
 }
Esempio n. 2
0
        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
            }));
        }
Esempio n. 3
0
        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;
            }
        }
Esempio n. 5
0
 public ITrwSerializationWriteContext GeneratedResourceInfoWriteContext(ITrwWriter writer) => BasicWriteContext(writer, true);
Esempio n. 6
0
 public ITrwSerializationWriteContext AssetsInfoWriteContext(ITrwWriter writer) => BasicWriteContext(writer, true);
Esempio n. 7
0
 public ITrwSerializationWriteContext AliasesWriteContext(ITrwWriter writer) => BasicWriteContext(writer, false);