Skip to content

Commit 740d33a

Browse files
isHarryhK0lb3
authored andcommitted
refactor(files): use assertion for version-specific assignment
1 parent 79c9601 commit 740d33a

2 files changed

Lines changed: 20 additions & 1 deletion

File tree

UnityPy/files/ObjectReader.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -152,9 +152,11 @@ def write(
152152
writer.write_u_short(self.class_id)
153153

154154
if header.version < 11:
155+
assert self.is_destroyed is not None
155156
writer.write_u_short(self.is_destroyed)
156157

157158
if 11 <= header.version < 17:
159+
assert self.serialized_type is not None
158160
writer.write_short(self.serialized_type.script_type_index)
159161

160162
if header.version == 15 or header.version == 16:

UnityPy/files/SerializedFile.py

Lines changed: 18 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
from __future__ import annotations
1+
from __future__ import annotations
22

33
import re
44
from ntpath import basename
@@ -83,8 +83,13 @@ def __init__(self, header: SerializedFileHeader, reader: EndianBinaryReader):
8383

8484
def write(self, header: SerializedFileHeader, writer: EndianBinaryWriter):
8585
if header.version >= 6:
86+
assert self.temp_empty is not None
8687
writer.write_string_to_null(self.temp_empty)
8788
if header.version >= 5:
89+
assert (
90+
self.guid is not None
91+
and self.type is not None
92+
)
8893
writer.write_bytes(self.guid)
8994
writer.write_int(self.type)
9095
writer.write_string_to_null(self.path)
@@ -170,9 +175,11 @@ def write(
170175
writer.write_int(self.class_id)
171176

172177
if version >= 16:
178+
assert self.is_stripped_type is not None
173179
writer.write_boolean(self.is_stripped_type)
174180

175181
if version >= 17:
182+
assert self.script_type_index is not None
176183
writer.write_short(self.script_type_index)
177184

178185
if version >= 13:
@@ -181,7 +188,9 @@ def write(
181188
or (version < 16 and self.class_id < 0)
182189
or (version >= 16 and self.class_id == 114)
183190
):
191+
assert self.script_id is not None
184192
writer.write_bytes(self.script_id) # Hash128
193+
assert self.old_type_hash is not None
185194
writer.write_bytes(self.old_type_hash) # Hash128
186195

187196
if serialized_file._enable_type_tree:
@@ -193,10 +202,16 @@ def write(
193202

194203
if version >= 21:
195204
if is_ref_type:
205+
assert (
206+
self.m_ClassName is not None
207+
and self.m_NameSpace is not None
208+
and self.m_AssemblyName is not None
209+
)
196210
writer.write_string_to_null(self.m_ClassName)
197211
writer.write_string_to_null(self.m_NameSpace)
198212
writer.write_string_to_null(self.m_AssemblyName)
199213
else:
214+
assert self.type_dependencies is not None
200215
writer.write_int_array(self.type_dependencies, True)
201216

202217
@property
@@ -443,11 +458,13 @@ def save(self, packer: str = None) -> bytes:
443458
external.write(header, meta_writer)
444459

445460
if header.version >= 20:
461+
assert self.ref_types is not None
446462
meta_writer.write_int(len(self.ref_types))
447463
for ref_type in self.ref_types:
448464
ref_type.write(self, meta_writer, True)
449465

450466
if header.version >= 5:
467+
assert self.userInformation is not None
451468
meta_writer.write_string_to_null(self.userInformation)
452469

453470
# prepare header

0 commit comments

Comments
 (0)