@@ -134,11 +134,11 @@ def __init__(self, reader, serialized_file, is_ref_type: bool):
134
134
if is_ref_type :
135
135
self .m_ClassName = reader .read_string_to_null ()
136
136
self .m_NameSpace = reader .read_string_to_null ()
137
- self .m_AsmName = reader .read_string_to_null ()
137
+ self .m_AssemblyName = reader .read_string_to_null ()
138
138
else :
139
139
self .type_dependencies = reader .read_int_array ()
140
140
141
- def write (self , serialized_file , writer ):
141
+ def write (self , serialized_file , writer , is_ref_type ):
142
142
version = serialized_file .header .version
143
143
writer .write_int (self .class_id )
144
144
@@ -149,8 +149,10 @@ def write(self, serialized_file, writer):
149
149
writer .write_short (self .script_type_index )
150
150
151
151
if version >= 13 :
152
- if (version < 16 and self .class_id < 0 ) or (
153
- version >= 16 and self .class_id == 114
152
+ if (
153
+ (is_ref_type and self .script_type_index >= 0 )
154
+ or (version < 16 and self .class_id < 0 )
155
+ or (version >= 16 and self .class_id == 114 )
154
156
):
155
157
writer .write_bytes (self .script_id ) # Hash128
156
158
writer .write_bytes (self .old_type_hash ) # Hash128
@@ -161,6 +163,14 @@ def write(self, serialized_file, writer):
161
163
else :
162
164
serialized_file .save_type_tree (self .nodes , writer )
163
165
166
+ if version >= 21 :
167
+ if is_ref_type :
168
+ writer .write_string_to_null (self .m_ClassName )
169
+ writer .write_string_to_null (self .m_NameSpace )
170
+ writer .write_string_to_null (self .m_AssemblyName )
171
+ else :
172
+ writer .write_int_array (self .type_dependencies )
173
+
164
174
165
175
class SerializedFile (File .File ):
166
176
reader : EndianBinaryReader
@@ -243,8 +253,6 @@ def __init__(self, reader: EndianBinaryReader, parent=None, name=None):
243
253
# ReadTypes
244
254
type_count = reader .read_int ()
245
255
self .types = [SerializedType (reader , self , False ) for _ in range (type_count )]
246
- if config .SERIALIZED_FILE_PARSE_TYPETREE is False :
247
- self ._enable_type_tree = False
248
256
249
257
self .big_id_enabled = 0
250
258
if 7 <= header .version < 14 :
@@ -277,6 +285,9 @@ def __init__(self, reader: EndianBinaryReader, parent=None, name=None):
277
285
SerializedType (reader , self , True ) for _ in range (ref_type_count )
278
286
]
279
287
288
+ if config .SERIALIZED_FILE_PARSE_TYPETREE is False :
289
+ self ._enable_type_tree = False
290
+
280
291
if header .version >= 5 :
281
292
self .userInformation = reader .read_string_to_null ()
282
293
@@ -439,7 +450,7 @@ def save(self, packer: str = None) -> bytes:
439
450
# ReadTypes
440
451
meta_writer .write_int (len (self .types ))
441
452
for typ in self .types :
442
- typ .write (self , meta_writer )
453
+ typ .write (self , meta_writer , False )
443
454
444
455
if 7 <= header .version < 14 :
445
456
meta_writer .write_int (self .big_id_enabled )
@@ -464,7 +475,7 @@ def save(self, packer: str = None) -> bytes:
464
475
if header .version >= 20 :
465
476
meta_writer .write_int (len (self .ref_types ))
466
477
for ref_type in self .ref_types :
467
- ref_type .write (self , meta_writer )
478
+ ref_type .write (self , meta_writer , True )
468
479
469
480
if header .version >= 5 :
470
481
meta_writer .write_string_to_null (self .userInformation )
0 commit comments