fix loading old savegames from ponyorm DB

This commit is contained in:
Fabian Dill 2020-07-16 02:29:36 +02:00
parent d9e7248ebc
commit 626b6b0521
2 changed files with 9 additions and 8 deletions

View File

@ -210,13 +210,14 @@ class Context(Node):
return d
def set_save(self, savedata: dict):
rom_names = savedata["rom_names"]
received_items = {tuple(k): [ReceivedItem(*i) for i in v] for k, v in savedata["received_items"]}
rom_names = savedata["rom_names"] # convert from TrackerList to List in case of ponyorm
if rom_names != self.rom_names:
adjusted = {rom: (team, slot) for (rom, (team, slot)) in rom_names}
adjusted = {tuple(rom): (team, slot) for (rom, (team, slot)) in rom_names} # old format, ponyorm friendly
if self.rom_names != adjusted:
raise Exception('Save file mismatch, will start a new game')
logging.warning('Save file mismatch, will start a new game')
return
received_items = {tuple(k): [ReceivedItem(*i) for i in v] for k, v in savedata["received_items"]}
self.received_items = received_items
self.hints_used.update({tuple(key): value for key, value in savedata["hints_used"]})

View File

@ -74,9 +74,9 @@ class WebHostContext(Context):
def init_save(self, enabled: bool = True):
self.saving = enabled
if self.saving:
existings_savegame = Room.get(id=self.room_id).multisave
if existings_savegame:
self.set_save(existings_savegame)
existing_savegame = Room.get(id=self.room_id).multisave
if existing_savegame:
self.set_save(existing_savegame)
self._start_async_saving()
threading.Thread(target=self.listen_to_db_commands, daemon=True).start()