fix loading old savegames from ponyorm DB
This commit is contained in:
		
							parent
							
								
									d9e7248ebc
								
							
						
					
					
						commit
						626b6b0521
					
				| 
						 | 
				
			
			@ -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"]})
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -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()
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in New Issue