Skip to content
Snippets Groups Projects
Select Git revision
  • b3636fdedc8298c6d393457cb152f05ed3e793d6
  • master default protected
  • 49-fix-end-game
  • 40-improve-app-metadata
  • 12-improve-layout
  • 4-add-animations
  • Release_0.9.1_47 protected
  • Release_0.9.0_46 protected
  • Release_0.8.2_45 protected
  • Release_0.8.1_44 protected
  • Release_0.8.0_43 protected
  • Release_0.7.0_42 protected
  • Release_0.6.0_41 protected
  • Release_0.5.0_40 protected
  • Release_0.4.2_39 protected
  • Release_0.4.1_38 protected
  • Release_0.4.0_37 protected
  • Release_0.3.1_36 protected
  • Release_0.3.0_35 protected
  • Release_0.2.1_34 protected
  • Release_0.2.0_33 protected
  • Release_0.1.2_32 protected
  • Release_0.1.1_31 protected
  • Release_0.1.0_30 protected
  • Release_0.0.29_29 protected
  • Release_0.0.28_28 protected
26 results

build_ui_resources.sh

Blame
  • build_ui_resources.sh 2.88 KiB
    #! /bin/bash
    
    # Check dependencies
    command -v inkscape >/dev/null 2>&1 || { echo >&2 "I require inkscape but it's not installed. Aborting."; exit 1; }
    command -v scour >/dev/null 2>&1 || { echo >&2 "I require scour but it's not installed. Aborting."; exit 1; }
    command -v optipng >/dev/null 2>&1 || { echo >&2 "I require optipng but it's not installed. Aborting."; exit 1; }
    
    CURRENT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" >/dev/null 2>&1 && pwd)"
    BASE_DIR="$(dirname "$(dirname "${CURRENT_DIR}")")"
    ASSETS_DIR="${BASE_DIR}/assets"
    
    OPTIPNG_OPTIONS="-preserve -quiet -o7"
    ICON_SIZE=192
    
    #######################################################
    
    # Game images (svg files found in `images` folder)
    AVAILABLE_GAME_IMAGES=""
    if [ -d "${CURRENT_DIR}/images" ]; then
      AVAILABLE_GAME_IMAGES="$(find "${CURRENT_DIR}/images" -type f -name "*.svg" | awk -F/ '{print $NF}' | cut -d"." -f1 | sort)"
    fi
    
    # Skins (subfolders found in `skins` folder)
    AVAILABLE_SKINS=""
    if [ -d "${CURRENT_DIR}/skins" ]; then
      AVAILABLE_SKINS="$(find "${CURRENT_DIR}/skins" -mindepth 1 -type d | awk -F/ '{print $NF}')"
    fi
    
    # Images per skin (svg files found recursively in `skins` folder and subfolders)
    SKIN_IMAGES=""
    if [ -d "${CURRENT_DIR}/skins" ]; then
      SKIN_IMAGES="$(find "${CURRENT_DIR}/skins" -type f -name "*.svg" | awk -F/ '{print $NF}' | cut -d"." -f1 | sort | uniq)"
    fi
    
    #######################################################
    
    # optimize svg
    function optimize_svg() {
      SOURCE="$1"
    
      cp ${SOURCE} ${SOURCE}.tmp
      scour \
          --remove-descriptive-elements \
          --enable-id-stripping \
          --enable-viewboxing \
          --enable-comment-stripping \
          --nindent=4 \
          --quiet \
          -i ${SOURCE}.tmp \
          -o ${SOURCE}
      rm ${SOURCE}.tmp
    }
    
    # build icons
    function build_image() {
      SOURCE="$1"
      TARGET="$2"
    
      echo "Building ${TARGET}"
    
      if [ ! -f "${SOURCE}" ]; then
        echo "Missing file: ${SOURCE}"
        exit 1
      fi
    
      optimize_svg "${SOURCE}"
    
      mkdir -p "$(dirname "${TARGET}")"
    
      inkscape \
          --export-width=${ICON_SIZE} \
          --export-height=${ICON_SIZE} \
          --export-filename=${TARGET} \
          "${SOURCE}"
    
      optipng ${OPTIPNG_OPTIONS} "${TARGET}"
    }
    
    function build_image_for_skin() {
      SKIN_CODE="$1"
    
      # skin images
      for SKIN_IMAGE in ${SKIN_IMAGES}
      do
        build_image ${CURRENT_DIR}/skins/${SKIN_CODE}/${SKIN_IMAGE}.svg ${ASSETS_DIR}/skins/${SKIN_CODE}_${SKIN_IMAGE}.png
      done
    }
    
    #######################################################
    
    # Delete existing generated images
    if [ -d "${ASSETS_DIR}/ui" ]; then
      find ${ASSETS_DIR}/ui -type f -name "*.png" -delete
    fi
    if [ -d "${ASSETS_DIR}/skins" ]; then
      find ${ASSETS_DIR}/skins -type f -name "*.png" -delete
    fi
    
    # build game images
    for GAME_IMAGE in ${AVAILABLE_GAME_IMAGES}
    do
      build_image ${CURRENT_DIR}/images/${GAME_IMAGE}.svg ${ASSETS_DIR}/ui/${GAME_IMAGE}.png
    done
    
    # build skins images
    for SKIN in ${AVAILABLE_SKINS}
    do
      build_image_for_skin "${SKIN}"
    done