diff --git a/openage/assets.py b/openage/assets.py index 8ffb06e484..ea8ca57830 100644 --- a/openage/assets.py +++ b/openage/assets.py @@ -18,10 +18,10 @@ from . import default_dirs if typing.TYPE_CHECKING: - from openage.util.fslike.directory import Directory + from openage.util.fslike.union import UnionPath -def get_asset_path(custom_asset_dir: str = None) -> Directory: +def get_asset_path(custom_asset_dir: str = None) -> UnionPath: """ Returns a Path object for the game assets. @@ -33,13 +33,15 @@ def get_asset_path(custom_asset_dir: str = None) -> Directory: the game as its data source(s). """ + # mount the possible locations in an union: + result = Union().root + # if we're in devmode, use only the in-repo asset folder if not custom_asset_dir and config.DEVMODE: - return Directory(os.path.join(config.BUILD_SRC_DIR, "assets")).root + result.mount(Directory(os.path.join(config.BUILD_SRC_DIR, "assets")).root) + return result - # else, mount the possible locations in an union: - # overlay the global dir and the user dir. - result = Union().root + # else overlay the global dir and the user dir. # the cmake-determined folder for storing assets global_data = Path(config.GLOBAL_ASSET_DIR) diff --git a/openage/convert/main.py b/openage/convert/main.py index d9461eaeec..b66d99b73e 100644 --- a/openage/convert/main.py +++ b/openage/convert/main.py @@ -23,11 +23,12 @@ if typing.TYPE_CHECKING: from argparse import ArgumentParser, Namespace from openage.util.fslike.directory import Directory + from openage.util.fslike.union import UnionPath from openage.util.fslike.path import Path def convert_assets( - assets: Directory, + assets: UnionPath, args: Namespace, srcdir: Directory = None ) -> None: diff --git a/openage/convert/service/init/api_export_required.py b/openage/convert/service/init/api_export_required.py index fe677ec246..61b8f5ba4d 100644 --- a/openage/convert/service/init/api_export_required.py +++ b/openage/convert/service/init/api_export_required.py @@ -13,17 +13,21 @@ from .modpack_search import get_modpack_info if typing.TYPE_CHECKING: - from openage.util.fslike.directory import Directory + from openage.util.fslike.union import UnionPath CURRENT_API_VERSION = "0.4.0" -def api_export_required(asset_dir: Directory) -> bool: +def api_export_required(asset_dir: UnionPath) -> bool: """ Returns true if the openage nyan API modpack cannot be found. TODO: Remove once the API modpack is generated by default. + + :param asset_dir: The asset directory to search in. + :type asset_dir: UnionPath + :returns: True if the openage nyan API modpack cannot be found, else False. """ modpack_dir = asset_dir / "converted" / "engine" diff --git a/openage/convert/service/init/conversion_required.py b/openage/convert/service/init/conversion_required.py index 0c09b4ea67..1c13a33142 100644 --- a/openage/convert/service/init/conversion_required.py +++ b/openage/convert/service/init/conversion_required.py @@ -11,10 +11,10 @@ from .modpack_search import enumerate_modpacks if typing.TYPE_CHECKING: - from openage.util.fslike.directory import Directory + from openage.util.fslike.union import UnionPath -def conversion_required(asset_dir: Directory) -> bool: +def conversion_required(asset_dir: UnionPath) -> bool: """ Check if an asset conversion is required to run the game. @@ -24,7 +24,7 @@ def conversion_required(asset_dir: Directory) -> bool: - the converted assets are outdated :param asset_dir: The asset directory to check. - :type asset_dir: Directory + :type asset_dir: UnionPath :return: True if an asset conversion is required, else False. """ try: diff --git a/openage/convert/service/init/modpack_search.py b/openage/convert/service/init/modpack_search.py index 986d25be2b..ea8bf87c24 100644 --- a/openage/convert/service/init/modpack_search.py +++ b/openage/convert/service/init/modpack_search.py @@ -11,15 +11,15 @@ from ....log import info, dbg if typing.TYPE_CHECKING: - from openage.util.fslike.directory import Directory + from openage.util.fslike.union import UnionPath -def enumerate_modpacks(modpacks_dir: Directory) -> set[str]: +def enumerate_modpacks(modpacks_dir: UnionPath) -> set[str]: """ Enumerate openage modpacks in a directory. :param asset_dir: The asset directory to search in. - :type asset_dir: Directory + :type asset_dir: UnionPath :returns: A list of modpack names that were found. :rtype: set[str] """ @@ -42,12 +42,12 @@ def enumerate_modpacks(modpacks_dir: Directory) -> set[str]: return modpacks -def get_modpack_info(modpack_dir: Directory) -> dict[str, typing.Any]: +def get_modpack_info(modpack_dir: UnionPath) -> dict[str, typing.Any]: """ Get information about an openage modpack from its definition file. :param modpack_dir: Modpack root directory. - :type modpack_dir: Directory + :type modpack_dir: UnionPath :returns: Modpack information. :rtype: dict[str, typing.Any] @@ -56,7 +56,7 @@ def get_modpack_info(modpack_dir: Directory) -> dict[str, typing.Any]: :raises toml.TomlDecodeError: If the modpack definition file is malformed. """ if not modpack_dir.exists(): - info("Modpack directory %s not found", modpack_dir.root.name) + info("Modpack directory %s not found", modpack_dir.name) raise FileNotFoundError("Modpack directory not found") modpack_def = modpack_dir / "modpack.toml" @@ -68,7 +68,7 @@ def get_modpack_info(modpack_dir: Directory) -> dict[str, typing.Any]: return content except FileNotFoundError as err: - dbg("Modpack definition file not found; ncould not find %s", modpack_def) + dbg("Modpack definition file not found; could not find %s", modpack_def) raise err except TypeError as err: