def save(self):
stream = StreamWrite.from_file(self._filename, Endianness.BIG)
levels_not_saved = 0
for level_index, level in enumerate(self._levels):
if level.modified:
if not level.can_save():
levels_not_saved += 1
continue
# Write entities first.
level.write_entities(stream)
# Save level data.
if level_index == 0:
level.save(stream)
else:
filename = 'L{}-{}'.format(self._world_index + 1, level_index + 1)
game_dir = os.path.dirname(self._filename)
filename = os.path.join(game_dir, filename)
level_stream = StreamWrite.from_file(filename, Endianness.BIG)
if self._world_index == 2 and level_index == 1:
offset = 19620
else:
offset = 0
level.save(level_stream, offset)
level_stream.write_to_file(filename)
# Save level header.
stream.seek(self._level_offsets[level_index])
level.save_header(stream)
level.modified = False
stream.write_to_file(self._filename)
if levels_not_saved:
wx.MessageBox('{} level(s) could not be saved.'.format(levels_not_saved), 'Levels not saved', wx.ICON_INFORMATION | wx.OK)
评论列表
文章目录