ochess/tools/skin/generate.sh
2022-02-23 18:11:55 +01:00

69 lines
2 KiB
Bash
Executable file

#!/usr/bin/env bash
# Check requirements
wai=$(dirname $(readlink -f "$0")) # Current script directory
[ $(command -v "convert") ] || { echo -e "\e[31mThis script require ImageMagick installed.\e[0m"; exit 1; }
[ $(command -v "inkscape") ] || { echo -e "\e[31mThis script require Inkscape installed.\e[0m"; exit 1; }
[ -d "${wai}/../../assets/" ] || { echo -e "\e[31mUnable to found assets folder.\e[0m"; exit 1; }
boards_path="${wai}/../../assets/boards/" && mkdir -p ${boards_path}
pieces_path="${wai}/../../assets/pieces/" && mkdir -p ${pieces_path}
generate () {
echo -e "\e[32mGenerating skin $(basename $1)\e[0m"
# Configure black's pieces
bk=$1/bk.png
bq=$1/bq.png
br=$1/br.png
bb=$1/bb.png
bn=$1/bn.png
bp=$1/bp.png
bs=$1/bs.png
# Configure white's pieces
wk=$1/wk.png
wq=$1/wq.png
wr=$1/wr.png
wb=$1/wb.png
wn=$1/wn.png
wp=$1/wp.png
ws=$1/ws.png
# First build the png files
for svg in $(find "$1/" -name "*.svg")
do
outFile=$(basename $svg|sed "s/\.svg$//g").png
inkscape -z -e $1/$outFile -w 200 -h 200 $svg > /dev/null
done
if [ ! -e "$ws" ] # Generate Pieces Skin
then
convert \( $bk $wk +append \) \
\( $bq $wq +append \) \
\( $br $wr +append \) \
\( $bb $wb +append \) \
\( $bn $wn +append \) \
\( $bp $wp +append \) \
-background none -append "${pieces_path}/$(basename "$1").png"
else # Generate Squares Skin
convert \( $bs $ws +append \) \
-background none -append "${boards_path}/$(basename "$1").png"
fi
rm $1/*.png
}
if [ $# -eq 1 ]
then
# Generate assets for each skin
for skin in $({ ls -d ${wai}/boards/*; ls -d ${wai}/pieces/*; } | grep "$1")
do
generate $skin
done
else
# Generate assets for each skin
for skin in $({ ls -d ${wai}/boards/*; ls -d ${wai}/pieces/*; })
do
generate $skin
done
fi