diff --git a/scripts/crop-all-sheets.sh b/scripts/crop-all-sheets.sh new file mode 100755 index 0000000..bfadce1 --- /dev/null +++ b/scripts/crop-all-sheets.sh @@ -0,0 +1,78 @@ +#!/usr/bin/env bash +set -euo pipefail + +cd "$(dirname "$0")/.." + +CROP="scripts/crop-sheet.sh" +CARD_W=744 +CARD_H=1039 +SMALL_W=525 +SMALL_H=750 + +total=0 + +run_crop() { + local label="$1" + local src="$2" + local outdir="$3" + local w="$4" + local h="$5" + + [[ -f "$src" ]] || { echo "SKIP: $src not found"; return; } + + mkdir -p "$outdir" + count=$("$CROP" "$src" "$w" "$h" "$outdir") + echo "$label: $count" + total=$(( total + count )) +} + +# card size sheets +run_crop "Cards_Ironclad" StS_BG_assets/Cards_Ironclad.png assets/images/board_game/cards/ironclad $CARD_W $CARD_H +run_crop "Cards_Ironclad_Upgrade" StS_BG_assets/Cards_Ironclad_Upgrade.png assets/images/board_game/cards/ironclad_upgraded $CARD_W $CARD_H +run_crop "Cards_Ironclad_Rare" StS_BG_assets/Cards_Ironclad_Rare.png assets/images/board_game/cards/ironclad_rare $CARD_W $CARD_H +run_crop "Cards_Ironclad_Rare_Upgraded" StS_BG_assets/Cards_Ironclad_Rare_Upgraded.png assets/images/board_game/cards/ironclad_rare_upgraded $CARD_W $CARD_H +run_crop "Cards_Ironclad_Start" StS_BG_assets/Cards_Ironclad_Start.png assets/images/board_game/cards/ironclad_starter $CARD_W $CARD_H +run_crop "Cards_Ironclad_Start_Upgraded" StS_BG_assets/Cards_Ironclad_Start_Upgraded.png assets/images/board_game/cards/ironclad_starter_upgraded $CARD_W $CARD_H +run_crop "Cards_Silent" StS_BG_assets/Cards_Silent.png assets/images/board_game/cards/silent $CARD_W $CARD_H +run_crop "Cards_Silent_Upgraded" StS_BG_assets/Cards_Silent_Upgraded.png assets/images/board_game/cards/silent_upgraded $CARD_W $CARD_H +run_crop "Cards_Silent_Rare" StS_BG_assets/Cards_Silent_Rare.png assets/images/board_game/cards/silent_rare $CARD_W $CARD_H +run_crop "Cards_Silent_Rare_Upgraded" StS_BG_assets/Cards_Silent_Rare_Upgraded.png assets/images/board_game/cards/silent_rare_upgraded $CARD_W $CARD_H +run_crop "Cards_Silent_Start" StS_BG_assets/Cards_Silent_Start.png assets/images/board_game/cards/silent_starter $CARD_W $CARD_H +run_crop "Cards_Silent_Start_Upgraded" StS_BG_assets/Cards_Silent_Start_Upgraded.png assets/images/board_game/cards/silent_starter_upgraded $CARD_W $CARD_H +run_crop "Cards_Defect" StS_BG_assets/Cards_Defect.png assets/images/board_game/cards/defect $CARD_W $CARD_H +run_crop "Cards_Defect_Upgraded" StS_BG_assets/Cards_Defect_Upgraded.png assets/images/board_game/cards/defect_upgraded $CARD_W $CARD_H +run_crop "Cards_Defect_Rare" StS_BG_assets/Cards_Defect_Rare.png assets/images/board_game/cards/defect_rare $CARD_W $CARD_H +run_crop "Cards_Defect_Rare_Upgraded" StS_BG_assets/Cards_Defect_Rare_Upgraded.png assets/images/board_game/cards/defect_rare_upgraded $CARD_W $CARD_H +run_crop "Cards_Defect_Start" StS_BG_assets/Cards_Defect_Start.png assets/images/board_game/cards/defect_starter $CARD_W $CARD_H +run_crop "Cards_Defect_Start_Upgraded" StS_BG_assets/Cards_Defect_Start_Upgraded.png assets/images/board_game/cards/defect_starter_upgraded $CARD_W $CARD_H +run_crop "Cards_Watcher" StS_BG_assets/Cards_Watcher.png assets/images/board_game/cards/watcher $CARD_W $CARD_H +run_crop "Cards_Watcher_Upgraded" StS_BG_assets/Cards_Watcher_Upgraded.png assets/images/board_game/cards/watcher_upgraded $CARD_W $CARD_H +run_crop "Cards_Watcher_Rare" StS_BG_assets/Cards_Watcher_Rare.png assets/images/board_game/cards/watcher_rare $CARD_W $CARD_H +run_crop "Cards_Watcher_Rare_Upgraded" StS_BG_assets/Cards_Watcher_Rare_Upgraded.png assets/images/board_game/cards/watcher_rare_upgraded $CARD_W $CARD_H +run_crop "Cards_Watcher_Start" StS_BG_assets/Cards_Watcher_Start.png assets/images/board_game/cards/watcher_starter $CARD_W $CARD_H +run_crop "Cards_Watcher_Start_Upgraded" StS_BG_assets/Cards_Watcher_Start_Upgraded.png assets/images/board_game/cards/watcher_starter_upgraded $CARD_W $CARD_H +run_crop "Cards_Colorless" StS_BG_assets/Cards_Colorless.png assets/images/board_game/cards/colorless $CARD_W $CARD_H +run_crop "Cards_Colorless_Upgraded" StS_BG_assets/Cards_Colorless_Upgraded.png assets/images/board_game/cards/colorless_upgraded $CARD_W $CARD_H +run_crop "Curse" StS_BG_assets/Curse.png assets/images/board_game/cards/curses $CARD_W $CARD_H +run_crop "Curse_A5" StS_BG_assets/Curse_A5.png assets/images/board_game/cards/curses_a5 $CARD_W $CARD_H +run_crop "Enemies_Act1" StS_BG_assets/Enemies_Act1.png assets/images/board_game/enemies/act1 $CARD_W $CARD_H +run_crop "Enemies_Act2" StS_BG_assets/Enemies_Act2.png assets/images/board_game/enemies/act2 $CARD_W $CARD_H +run_crop "Enemies_Act3" StS_BG_assets/Enemies_Act3.png assets/images/board_game/enemies/act3 $CARD_W $CARD_H +run_crop "Elites_Act1" StS_BG_assets/Elites_Act1.png assets/images/board_game/elites/act1 $CARD_W $CARD_H +run_crop "Elites_Act2" StS_BG_assets/Elites_Act2.png assets/images/board_game/elites/act2 $CARD_W $CARD_H +run_crop "Elites_Act3" StS_BG_assets/Elites_Act3.png assets/images/board_game/elites/act3 $CARD_W $CARD_H +run_crop "Summons_Act1" StS_BG_assets/Summons_Act1.png assets/images/board_game/summons/act1 $CARD_W $CARD_H +run_crop "Summons_Act2" StS_BG_assets/Summons_Act2.png assets/images/board_game/summons/act2 $CARD_W $CARD_H +run_crop "Summons_Act3" StS_BG_assets/Summons_Act3.png assets/images/board_game/summons/act3 $CARD_W $CARD_H +run_crop "Events" StS_BG_assets/Events.png assets/images/board_game/events/general $CARD_W $CARD_H +run_crop "Events_Act1" StS_BG_assets/Events_Act1.png assets/images/board_game/events/act1 $CARD_W $CARD_H +run_crop "Events_Act2" StS_BG_assets/Events_Act2.png assets/images/board_game/events/act2 $CARD_W $CARD_H +run_crop "Events_Act3" StS_BG_assets/Events_Act3.png assets/images/board_game/events/act3 $CARD_W $CARD_H +run_crop "Neows_Blessing" StS_BG_assets/Neows_Blessing.png assets/images/board_game/events/neows_blessing $CARD_W $CARD_H + +# small size sheets +run_crop "Relics_Common" StS_BG_assets/Relics_Common.png assets/images/board_game/relics/common $SMALL_W $SMALL_H +run_crop "Relics_Boss" StS_BG_assets/Relics_Boss.png assets/images/board_game/relics/boss $SMALL_W $SMALL_H +run_crop "Potions" StS_BG_assets/Potions.png assets/images/board_game/potions $SMALL_W $SMALL_H + +echo "total: $total" diff --git a/scripts/crop-sheet.sh b/scripts/crop-sheet.sh new file mode 100755 index 0000000..862b870 --- /dev/null +++ b/scripts/crop-sheet.sh @@ -0,0 +1,35 @@ +#!/usr/bin/env bash +set -euo pipefail + +if [[ $# -ne 4 ]]; then + echo "usage: crop-sheet.sh " + exit 1 +fi + +input="$1" +width="$2" +height="$3" +outdir="$4" + +mkdir -p "$outdir" +rm -f "${outdir}"/*.png + +magick "$input" -crop "${width}x${height}" +repage "${outdir}/%03d.png" + +count=0 +for file in "${outdir}"/*.png; do + [[ -f "$file" ]] || continue + dims=$(magick "$file" -format "%wx%h" info:) + if [[ "$dims" != "${width}x${height}" ]]; then + rm "$file" + continue + fi + mean=$(magick "$file" -format "%[mean]" info:) + if [[ "$mean" == "0" ]]; then + rm "$file" + else + (( ++count )) + fi +done + +echo "$count"