Merge branch 'main' into launcher_loading_screen

This commit is contained in:
Fabian Dill
2026-06-01 22:39:49 +02:00
committed by GitHub
218 changed files with 10328 additions and 7454 deletions
+16 -5
View File
@@ -11,7 +11,7 @@ import json
from pathlib import Path
from types import ModuleType
from typing import List, Sequence
from zipfile import BadZipFile
from zipfile import ZipFile, BadZipFile
from NetUtils import DataPackage
from Utils import local_path, user_path, Version, version_tuple, tuplize_version, messagebox
@@ -33,7 +33,7 @@ __all__ = [
]
failed_world_loads: List[str] = []
failed_world_loads: dict[str, str] = {}
logger = logging.getLogger("Worlds")
logger.propagate = False
@@ -71,8 +71,9 @@ class WorldSource:
print(f"Could not load world {self}:", file=file_like)
traceback.print_exc(file=file_like)
file_like.seek(0)
logging.exception(file_like.read())
failed_world_loads.append(os.path.basename(self.path).rsplit(".", 1)[0])
reason = file_like.read()
logging.exception(reason)
failed_world_loads[os.path.basename(self.path).rsplit(".", 1)[0]] = reason
return False
@property
@@ -127,6 +128,7 @@ for world_source in world_sources:
game = manifest.get("game")
if game in AutoWorldRegister.world_types:
AutoWorldRegister.world_types[game].world_version = tuplize_version(manifest.get("world_version", "0.0.0"))
AutoWorldRegister.world_types[game].manifest = manifest
if apworlds:
# encapsulation for namespace / gc purposes
@@ -137,7 +139,7 @@ if apworlds:
def fail_world(game_name: str, reason: str, add_as_failed_to_load: bool = True) -> None:
if add_as_failed_to_load:
failed_world_loads.append(game_name)
failed_world_loads[game_name] = reason
logging.warning(reason)
for apworld_source in apworlds:
@@ -209,6 +211,15 @@ if apworlds:
# world could fail to load at this point
if apworld.world_version:
AutoWorldRegister.world_types[apworld.game].world_version = apworld.world_version
assert apworld.path
with ZipFile(apworld.path, "r") as zf:
manifest = apworld.read_contents(zf)
# version/compatible_version shouldn't be needed by world, makes it consistent with folder world
manifest.pop("version", None)
manifest.pop("compatible_version", None)
AutoWorldRegister.world_types[apworld.game].manifest = manifest
load_apworlds()
del load_apworlds