2021-06-29 01:49:29 +00:00
|
|
|
import importlib
|
|
|
|
import os
|
2021-02-26 20:03:16 +00:00
|
|
|
|
2021-02-21 19:17:24 +00:00
|
|
|
__all__ = {"lookup_any_item_id_to_name",
|
2021-02-26 20:03:16 +00:00
|
|
|
"lookup_any_location_id_to_name",
|
2021-11-19 18:44:34 +00:00
|
|
|
"network_data_package",
|
|
|
|
"AutoWorldRegister"}
|
2021-02-21 19:17:24 +00:00
|
|
|
|
2021-06-29 01:49:29 +00:00
|
|
|
# import all submodules to trigger AutoWorldRegister
|
2022-03-28 01:45:14 +00:00
|
|
|
world_folders = []
|
2021-06-29 01:49:29 +00:00
|
|
|
for file in os.scandir(os.path.dirname(__file__)):
|
|
|
|
if file.is_dir():
|
2022-03-28 01:45:14 +00:00
|
|
|
world_folders.append(file.name)
|
|
|
|
world_folders.sort()
|
|
|
|
for world in world_folders:
|
|
|
|
importlib.import_module(f".{world}", "worlds")
|
2021-07-12 16:05:46 +00:00
|
|
|
|
|
|
|
from .AutoWorld import AutoWorldRegister
|
|
|
|
lookup_any_item_id_to_name = {}
|
|
|
|
lookup_any_location_id_to_name = {}
|
|
|
|
games = {}
|
|
|
|
|
|
|
|
for world_name, world in AutoWorldRegister.world_types.items():
|
|
|
|
games[world_name] = {
|
|
|
|
"item_name_to_id" : world.item_name_to_id,
|
|
|
|
"location_name_to_id": world.location_name_to_id,
|
|
|
|
"version": world.data_version,
|
|
|
|
# seems clients don't actually want this. Keeping it here in case someone changes their mind.
|
|
|
|
# "item_name_groups": {name: tuple(items) for name, items in world.item_name_groups.items()}
|
|
|
|
}
|
|
|
|
lookup_any_item_id_to_name.update(world.item_id_to_name)
|
|
|
|
lookup_any_location_id_to_name.update(world.location_id_to_name)
|
|
|
|
|
|
|
|
network_data_package = {
|
2021-07-14 08:02:39 +00:00
|
|
|
"version": sum(world.data_version for world in AutoWorldRegister.world_types.values()),
|
2021-07-12 16:05:46 +00:00
|
|
|
"games": games,
|
|
|
|
}
|
2021-08-22 02:22:34 +00:00
|
|
|
|
|
|
|
# Set entire datapackage to version 0 if any of them are set to 0
|
|
|
|
if any(not world.data_version for world in AutoWorldRegister.world_types.values()):
|
|
|
|
network_data_package["version"] = 0
|
2021-09-26 07:10:27 +00:00
|
|
|
import logging
|
2022-03-18 03:53:09 +00:00
|
|
|
logging.warning(f"Datapackage is in custom mode. Custom Worlds: "
|
|
|
|
f"{[world for world in AutoWorldRegister.world_types.values() if not world.data_version]}")
|