# Builds the modding subproject - see README.md. # # Targets: # all (default) - `hacked` and `mods`. # build-image - builds the hacked-build-image Docker image # (./hacked-build-image.sh). Only needed once, or after # hacked-build-image/ or hacked/go.mod|go.sum changes. # hacked - compiles hacked/ for Linux and Windows via that image, # offline. Output lands in dist/. # mdlp-image - builds the mdlp-image Docker image (./mdlp-image.sh). # Only needed once, or after mdlp-image/ or # mdlp/go.mod|go.sum changes. # mods - builds every mod under mods/ via that image, offline. # Set MODS="name1 name2" to build only those. Output # lands in dist/mods/. # animgallery_base - browses res/assets/ss_ee/data alone: every animated # resource as a looping GIF in build/gallery-base/. # animgallery_mods - same, but with every built mod under dist/mods/ # layered on top (later wins), in build/gallery-mods/ - # shows what a mod actually changes without launching # the game. Run `make mods` first. # animgallery_dist - every built mod under dist/mods/ layered on top of # the base game, like animgallery_mods, but restricted # to only the resources a mod actually overrides, in # build/gallery-dist/ - a focused "what did my mods # change" view, in the base game's own colors (unlike # a mod's own output alone, which has no palette # resource and would render in grayscale). # Run `make mods` first. # (animgallery_base/_mods/_dist all write into this # subproject's own build/, not the repo root's.) # clean - removes dist/. .PHONY: all build-image hacked mdlp-image mods animgallery_base animgallery_mods animgallery_dist clean export MODS all: hacked mods build-image: ./hacked-build-image.sh # If we're already running inside the hacked-build-image # (HACKED_BUILD_IMAGE, set by its Dockerfile), compile directly instead of # trying to docker-run it again - e.g. a CI job already using this image as # its container. Otherwise, run it via Docker as usual. hacked: @if [ -n "$$HACKED_BUILD_IMAGE" ]; then \ bash hacked-build-image/build-hacked.sh; \ else \ ./hacked-build-run-image.sh; \ fi mdlp-image: ./mdlp-image.sh # Same already-in-the-image shortcut as `hacked` above, for MDLP_IMAGE. mods: @if [ -n "$$MDLP_IMAGE" ]; then \ bash mdlp-image/process-mods.sh; \ else \ ./mdlp-run-image.sh; \ fi animgallery_base: ./gen_animgallery.sh -data res/assets/ss_ee/data -out modding/build/gallery-base # Layers every built mod's mod/ folder on top of the base assets, later # wins - same discovery pattern as res/run-mods.sh. animgallery_mods: @ARGS="-data res/assets/ss_ee/data"; \ for d in dist/mods/*/mod; do \ [ -d "$$d" ] && ARGS="$$ARGS -data modding/$$d"; \ done; \ ./gen_animgallery.sh $$ARGS -out modding/build/gallery-mods # Same layering as animgallery_mods, but -only-changed restricts the output # to resources a mod layer actually overrides. animgallery_dist: @ARGS="-data res/assets/ss_ee/data"; \ FOUND=""; \ for d in dist/mods/*/mod; do \ [ -d "$$d" ] && ARGS="$$ARGS -data modding/$$d" && FOUND=1; \ done; \ if [ -z "$$FOUND" ]; then \ echo "PREFLIGHT FAIL: no built mods found under dist/mods/ - run 'make mods' first" >&2; \ exit 1; \ fi; \ ./gen_animgallery.sh $$ARGS -only-changed -out modding/build/gallery-dist clean: rm -rf dist