Multiserver: location name groups fix (#1643)
This commit is contained in:
parent
6e271b643d
commit
510a460d84
|
@ -260,7 +260,8 @@ class Context:
|
||||||
|
|
||||||
def _init_game_data(self):
|
def _init_game_data(self):
|
||||||
for game_name, game_package in self.gamespackage.items():
|
for game_name, game_package in self.gamespackage.items():
|
||||||
self.checksums[game_name] = game_package["checksum"]
|
if "checksum" in game_package:
|
||||||
|
self.checksums[game_name] = game_package["checksum"]
|
||||||
for item_name, item_id in game_package["item_name_to_id"].items():
|
for item_name, item_id in game_package["item_name_to_id"].items():
|
||||||
self.item_names[item_id] = item_name
|
self.item_names[item_id] = item_name
|
||||||
for location_name, location_id in game_package["location_name_to_id"].items():
|
for location_name, location_id in game_package["location_name_to_id"].items():
|
||||||
|
@ -268,7 +269,7 @@ class Context:
|
||||||
self.all_item_and_group_names[game_name] = \
|
self.all_item_and_group_names[game_name] = \
|
||||||
set(game_package["item_name_to_id"]) | set(self.item_name_groups[game_name])
|
set(game_package["item_name_to_id"]) | set(self.item_name_groups[game_name])
|
||||||
self.all_location_and_group_names[game_name] = \
|
self.all_location_and_group_names[game_name] = \
|
||||||
set(game_package["location_name_to_id"]) | set(self.location_name_groups[game_name])
|
set(game_package["location_name_to_id"]) | set(self.location_name_groups.get(game_name, []))
|
||||||
|
|
||||||
def item_names_for_game(self, game: str) -> typing.Optional[typing.Dict[str, int]]:
|
def item_names_for_game(self, game: str) -> typing.Optional[typing.Dict[str, int]]:
|
||||||
return self.gamespackage[game]["item_name_to_id"] if game in self.gamespackage else None
|
return self.gamespackage[game]["item_name_to_id"] if game in self.gamespackage else None
|
||||||
|
@ -356,9 +357,7 @@ class Context:
|
||||||
[{"cmd": "PrintJSON", "data": [{ "text": text }], **additional_arguments}
|
[{"cmd": "PrintJSON", "data": [{ "text": text }], **additional_arguments}
|
||||||
for text in texts]))
|
for text in texts]))
|
||||||
|
|
||||||
|
|
||||||
# loading
|
# loading
|
||||||
|
|
||||||
def load(self, multidatapath: str, use_embedded_server_options: bool = False):
|
def load(self, multidatapath: str, use_embedded_server_options: bool = False):
|
||||||
if multidatapath.lower().endswith(".zip"):
|
if multidatapath.lower().endswith(".zip"):
|
||||||
import zipfile
|
import zipfile
|
||||||
|
@ -446,9 +445,10 @@ class Context:
|
||||||
logging.info(f"Loading embedded data package for game {game_name}")
|
logging.info(f"Loading embedded data package for game {game_name}")
|
||||||
self.gamespackage[game_name] = data
|
self.gamespackage[game_name] = data
|
||||||
self.item_name_groups[game_name] = data["item_name_groups"]
|
self.item_name_groups[game_name] = data["item_name_groups"]
|
||||||
self.location_name_groups[game_name] = data["location_name_groups"]
|
if "location_name_groups" in data:
|
||||||
|
self.location_name_groups[game_name] = data["location_name_groups"]
|
||||||
|
del data["location_name_groups"]
|
||||||
del data["item_name_groups"] # remove from data package, but keep in self.item_name_groups
|
del data["item_name_groups"] # remove from data package, but keep in self.item_name_groups
|
||||||
del data["location_name_groups"]
|
|
||||||
self._init_game_data()
|
self._init_game_data()
|
||||||
for game_name, data in self.item_name_groups.items():
|
for game_name, data in self.item_name_groups.items():
|
||||||
self.read_data[f"item_name_groups_{game_name}"] = lambda lgame=game_name: self.item_name_groups[lgame]
|
self.read_data[f"item_name_groups_{game_name}"] = lambda lgame=game_name: self.item_name_groups[lgame]
|
||||||
|
|
Loading…
Reference in New Issue