Refactor asset packs to build properly with fbt

This commit is contained in:
Willy-JL
2023-11-12 05:30:22 +00:00
parent 748932151d
commit 94efe04132
5 changed files with 76 additions and 25 deletions
+24 -10
View File
@@ -2,9 +2,7 @@
import os
import shutil
import pathlib
import asset_packer
from flipper.app import App
from flipper.assets.icon import file2image
@@ -103,6 +101,17 @@ class Main(App):
)
self.parser_dolphin.set_defaults(func=self.dolphin)
self.parser_packs = self.subparsers.add_parser(
"packs", help="Assemble asset packs"
)
self.parser_packs.add_argument(
"input_directory", help="Packs source directory"
)
self.parser_packs.add_argument(
"output_directory", help="Packs output directory"
)
self.parser_packs.set_defaults(func=self.packs)
def _icon2header(self, file):
image = file2image(file)
return image.width, image.height, image.data_as_carray()
@@ -284,14 +293,6 @@ extern const size_t ICON_PATHS_COUNT;
else:
self.logger.info("Manifest is up-to-date!")
self.logger.info("Packing custom asset packs")
root_dir = pathlib.Path(__file__).absolute().parent.parent
asset_packer.pack(
root_dir / "assets/packs",
root_dir / f"assets/resources/asset_packs",
self.logger.info,
)
self.logger.info("Complete")
return 0
@@ -331,6 +332,19 @@ extern const size_t ICON_PATHS_COUNT;
return 0
def packs(self):
import asset_packer
self.logger.info("Packing custom asset packs")
asset_packer.pack(
self.args.input_directory,
self.args.output_directory,
self.logger.info,
)
self.logger.info("Finished custom asset packs")
return 0
if __name__ == "__main__":
Main()()
+38
View File
@@ -67,6 +67,28 @@ def _dolphin_emitter(target, source, env):
return target, source
def _packs_emitter(target, source, env):
source_dir = source[0]
target_dir = target[0]
env.Replace(_PACKS_OUT_DIR=target_dir)
env.Replace(_PACKS_SRC_DIR=source_dir)
target = [
target_dir.File(source_dir.rel_path(node))
for node in env.GlobRecursive("*/Anims/manifest.txt", source_dir.srcnode())
]
target.extend(
target_dir.File(source_dir.rel_path(node).removesuffix(".png") + ".bm")
for node in env.GlobRecursive("*/Anims/**/*.png", source_dir.srcnode())
)
target.extend(
target_dir.File(source_dir.rel_path(node).removesuffix(".png") + ".bmx")
for node in env.GlobRecursive("*/Icons/**/*.png", source_dir.srcnode())
)
return target, source
def __invoke_git(args, source_dir):
cmd = ["git"]
cmd.extend(args)
@@ -146,6 +168,7 @@ def generate(env):
ICONSCOMSTR="\tICONS\t${TARGET}",
PROTOCOMSTR="\tPROTO\t${SOURCE}",
DOLPHINCOMSTR="\tDOLPHIN\t${DOLPHIN_RES_TYPE}",
PACKSCOMSTR="\tPACKS\t${SOURCE}",
PBVERCOMSTR="\tPBVER\t${TARGET}",
)
@@ -218,6 +241,21 @@ def generate(env):
),
emitter=_dolphin_emitter,
),
"AssetPacksBuilder": Builder(
action=Action(
[
[
"${PYTHON3}",
"${ASSETS_COMPILER}",
"packs",
"${_PACKS_SRC_DIR}",
"${_PACKS_OUT_DIR}",
],
],
"${PACKSCOMSTR}",
),
emitter=_packs_emitter,
),
"ProtoVerBuilder": Builder(
action=Action(
_proto_ver_generator,