Survivalcraft API 1.8.2.3 v1.8.2.3
Survivalcraft 2.4
载入中...
搜索中...
未找到
OutputArchive.cs
浏览该文件的文档.
1namespace Engine.Serialization {
2 public abstract class OutputArchive : Archive {
4
5 Dictionary<object, int> m_idByObject = [];
6
7 protected OutputArchive(int version, object context) : base(version, context) { }
8
9 protected new void Reset(int version, object context) {
10 base.Reset(version, context);
11 m_idByObject.Clear();
13 }
14
15 public abstract void Serialize(string name, sbyte value);
16
17 public abstract void Serialize(string name, byte value);
18
19 public abstract void Serialize(string name, short value);
20
21 public abstract void Serialize(string name, ushort value);
22
23 public abstract void Serialize(string name, int value);
24
25 public abstract void Serialize(string name, uint value);
26
27 public abstract void Serialize(string name, long value);
28
29 public abstract void Serialize(string name, ulong value);
30
31 public abstract void Serialize(string name, float value);
32
33 public abstract void Serialize(string name, double value);
34
35 public abstract void Serialize(string name, bool value);
36
37 public abstract void Serialize(string name, char value);
38
39 public abstract void Serialize(string name, string value);
40
41 public abstract void Serialize(string name, byte[] value);
42
43 public abstract void Serialize(string name, int length, byte[] value);
44
45 public void Serialize(string name, Type type, object value) {
46 WriteObject(name, GetSerializeData(type, true), value);
47 }
48
49 public abstract void SerializeCollection<T>(string name, Func<T, string> itemNameFunc, IEnumerable<T> collection);
50
51 public void SerializeCollection<T>(string name, IEnumerable<T> collection) {
52 SerializeCollection(name, null, collection);
53 }
54
55 public abstract void SerializeDictionary<K, V>(string name, IDictionary<K, V> dictionary);
56
57 public void Serialize<T>(string name, T value) {
58 Serialize(name, typeof(T), value);
59 }
60
61 public abstract void WriteObjectInfo(int? objectId, bool isReference, Type runtimeType);
62
63 protected virtual void WriteObject(string name, SerializeData staticSerializeData, object value) {
64 if (!staticSerializeData.UseObjectInfo
65 || !UseObjectInfos) {
66 staticSerializeData.VerifySerializable();
67 staticSerializeData.Write(this, value);
68 return;
69 }
70 if (value == null) {
71 WriteObjectInfo(0, true, null);
72 return;
73 }
74 if (m_idByObject.TryGetValue(value, out int value2)) {
75 WriteObjectInfo(value2, true, null);
76 return;
77 }
78 Type type = value.GetType();
79 int? objectId;
80 if (type == staticSerializeData.Type) {
81 objectId = staticSerializeData.UseObjectInfo ? new int?(m_nextObjectId++) : null;
82 WriteObjectInfo(value2, false, null);
83 staticSerializeData.VerifySerializable();
84 staticSerializeData.Write(this, value);
85 }
86 else {
87 SerializeData serializeData = GetSerializeData(type, false);
88 objectId = serializeData.UseObjectInfo ? new int?(m_nextObjectId++) : null;
89 WriteObjectInfo(value2, false, type);
90 staticSerializeData.VerifySerializable();
91 serializeData.Write(this, value);
92 }
93 if (objectId.HasValue) {
94 m_idByObject.Add(value, objectId.Value);
95 }
96 }
97
98 protected virtual void WriteObject<T>(string name, SerializeData staticSerializeData, T value) {
99 if (staticSerializeData.IsValueType) {
100 staticSerializeData.VerifySerializable();
101 ((SerializeData<T>)staticSerializeData).WriteGeneric(this, value);
102 }
103 else {
104 WriteObject(name, staticSerializeData, (object)value);
105 }
106 }
107 }
108}
static SerializeData GetSerializeData(Type type, bool allowEmptySerializer)
Archive(int version, object context)
void Serialize(string name, long value)
void Serialize(string name, sbyte value)
Dictionary< object, int > m_idByObject
void WriteObjectInfo(int? objectId, bool isReference, Type runtimeType)
virtual void WriteObject< T >(string name, SerializeData staticSerializeData, T value)
void Serialize(string name, Type type, object value)
void Serialize(string name, uint value)
void SerializeCollection< T >(string name, Func< T, string > itemNameFunc, IEnumerable< T > collection)
virtual void WriteObject(string name, SerializeData staticSerializeData, object value)
void Serialize(string name, ushort value)
void Serialize(string name, int value)
new void Reset(int version, object context)
void Serialize(string name, char value)
void Serialize< T >(string name, T value)
void SerializeDictionary< K, V >(string name, IDictionary< K, V > dictionary)
void Serialize(string name, string value)
void Serialize(string name, double value)
void Serialize(string name, ulong value)
void Serialize(string name, byte[] value)
void Serialize(string name, byte value)
void Serialize(string name, float value)
void Serialize(string name, short value)
void Serialize(string name, int length, byte[] value)
void Serialize(string name, bool value)
OutputArchive(int version, object context)