set(sprites
  "sprites/menu/bevel-invert-24-24.png"
  "sprites/menu/checkmark.png"
  "sprites/menu/dice.png"
  "sprites/menu/discord.png"
  "sprites/menu/discord-background-1-1-1-1.png"
  "sprites/menu/horizontal-edge-1-76.png"
  "sprites/menu/price-tag-88-40.png"
  "sprites/menu/round-button-yellow-small.png"
  "sprites/menu/rounded-button-border-54-66.png"
  "sprites/menu/rounded-button-fill-54-66.png"
  "sprites/menu/rounded-dark-rectangle-93-93.png"
  "sprites/menu/rubber.png"
  "sprites/menu/stripe-1-79-1-258.png"
  "sprites/menu/shop-item-border-107-109.png"
  "sprites/menu/shop-item-stripe-1-1.png"
  "sprites/menu/shop-item-mask-107-109.png"
  "sprites/menu/shop-ribbon-227.png"
  "sprites/menu/success-rate-disc.png"
  "sprites/menu/success-rate-disc-empty.png"
  "sprites/menu/top-panel-114-114.png"

  "sprites/popup/popup-border-146-146.png"
  "sprites/popup/popup-fill-146-146.png"

  "sprites/ui/line-7-4.png"
)
set(sprites_crop
  "sprites/bomb.png"
  "sprites/crate.png"
  "sprites/power-up-bomb.png"
  "sprites/power-up-flame.png"
  "sprites/power-up-invisibility.png"
  "sprites/power-up-shield.png"
  "sprites/solid-wall.png"
  "sprites/transparent.png"

  "sprites/features/background-blue.png"
  "sprites/features/background-green.png"
  "sprites/features/background-off.png"
  "sprites/features/background-white.png"
  "sprites/features/falling-blocks.png"
  "sprites/features/fog-of-war.png"
  "sprites/features/invisibility.png"
  "sprites/features/padlock.png"
  "sprites/features/plus.png"
  "sprites/features/shield.png"

  "sprites/menu/audio.png"
  "sprites/menu/back.png"
  "sprites/menu/bluesky.png"
  "sprites/menu/coin.png"
  "sprites/menu/coins-pack-1.png"
  "sprites/menu/coins-pack-2.png"
  "sprites/menu/coins-pack-3.png"
  "sprites/menu/coins-pack-4.png"
  "sprites/menu/dot-100.png"
  "sprites/menu/dot-70.png"
  "sprites/menu/gamepad.png"
  "sprites/menu/gamepad-d-pad-left.png"
  "sprites/menu/gamepad-d-pad-right.png"
  "sprites/menu/gear.png"
  "sprites/menu/github.png"
  "sprites/menu/glow.png"
  "sprites/menu/joystick.png"
  "sprites/menu/language.png"
  "sprites/menu/mail.png"
  "sprites/menu/music.png"
  "sprites/menu/rays.png"
  "sprites/menu/round-button-yellow.png"
  "sprites/menu/rounded-dark-rectangle-spike.png"
  "sprites/menu/share.png"
  "sprites/menu/shop-icon.png"
  "sprites/menu/silhouette-1.png"
  "sprites/menu/silhouette-2.png"
  "sprites/menu/silhouette-3.png"
  "sprites/menu/silhouette-4.png"
  "sprites/menu/stats-icon.png"
  "sprites/menu/vibration.png"
  "sprites/menu/wallet-coin.png"

  "sprites/player/1-disappear-0.png"
  "sprites/player/1-disappear-1.png"
  "sprites/player/1-disappear-2.png"
  "sprites/player/1-disappear-3.png"
  "sprites/player/1-walk-back-0-4.png"
  "sprites/player/1-walk-back-1-3-m5-m7.png"
  "sprites/player/1-walk-back-2-m6.png"
  "sprites/player/1-walk-front-0-4.png"
  "sprites/player/1-walk-front-1-m5.png"
  "sprites/player/1-walk-front-2-m6.png"
  "sprites/player/1-walk-front-3-m7.png"
  "sprites/player/1-walk-side-0-4.png"
  "sprites/player/1-walk-side-1-3.png"
  "sprites/player/1-walk-side-2.png"
  "sprites/player/1-walk-side-5-7.png"
  "sprites/player/1-walk-side-6.png"
  "sprites/player/2-disappear-0.png"
  "sprites/player/2-disappear-1.png"
  "sprites/player/2-disappear-2.png"
  "sprites/player/2-disappear-3.png"
  "sprites/player/2-walk-back-0-4.png"
  "sprites/player/2-walk-back-1-3-m5-m7.png"
  "sprites/player/2-walk-back-2-m6.png"
  "sprites/player/2-walk-front-0-4.png"
  "sprites/player/2-walk-front-1-m5.png"
  "sprites/player/2-walk-front-2-m6.png"
  "sprites/player/2-walk-front-3-m7.png"
  "sprites/player/2-walk-side-0-4.png"
  "sprites/player/2-walk-side-1-3.png"
  "sprites/player/2-walk-side-2.png"
  "sprites/player/2-walk-side-5-7.png"
  "sprites/player/2-walk-side-6.png"
  "sprites/player/3-disappear-0.png"
  "sprites/player/3-disappear-1.png"
  "sprites/player/3-disappear-2.png"
  "sprites/player/3-disappear-3.png"
  "sprites/player/3-walk-back-0-4.png"
  "sprites/player/3-walk-back-1-3-m5-m7.png"
  "sprites/player/3-walk-back-2-m6.png"
  "sprites/player/3-walk-front-0-4.png"
  "sprites/player/3-walk-front-1-m5.png"
  "sprites/player/3-walk-front-2-m6.png"
  "sprites/player/3-walk-front-3-m7.png"
  "sprites/player/3-walk-side-0-4.png"
  "sprites/player/3-walk-side-1-3.png"
  "sprites/player/3-walk-side-2.png"
  "sprites/player/3-walk-side-5-7.png"
  "sprites/player/3-walk-side-6.png"
  "sprites/player/4-disappear-0.png"
  "sprites/player/4-disappear-1.png"
  "sprites/player/4-disappear-2.png"
  "sprites/player/4-disappear-3.png"
  "sprites/player/4-walk-back-0-4.png"
  "sprites/player/4-walk-back-1-3-m5-m7.png"
  "sprites/player/4-walk-back-2-m6.png"
  "sprites/player/4-walk-front-0-4.png"
  "sprites/player/4-walk-front-1-m5.png"
  "sprites/player/4-walk-front-2-m6.png"
  "sprites/player/4-walk-front-3-m7.png"
  "sprites/player/4-walk-side-0-4.png"
  "sprites/player/4-walk-side-1-3.png"
  "sprites/player/4-walk-side-2.png"
  "sprites/player/4-walk-side-5-7.png"
  "sprites/player/4-walk-side-6.png"
  "sprites/player/burned-0.png"
  "sprites/player/burned-1-6.png"
  "sprites/player/burned-2-7.png"
  "sprites/player/burned-3.png"
  "sprites/player/burned-4.png"
  "sprites/player/burned-5.png"
  "sprites/player/burned-8.png"
  "sprites/player/burned-9.png"
  "sprites/player/disappear-burned-0.png"
  "sprites/player/disappear-burned-1.png"
  "sprites/player/disappear-burned-2.png"
  "sprites/player/disappear-burned-3.png"

  "sprites/player/shield/1-idle-back.png"
  "sprites/player/shield/1-idle-front.png"
  "sprites/player/shield/1-idle-side.png"
  "sprites/player/shield/1-walk-back-0-4.png"
  "sprites/player/shield/1-walk-back-1-3.png"
  "sprites/player/shield/1-walk-back-2.png"
  "sprites/player/shield/1-walk-back-5-7.png"
  "sprites/player/shield/1-walk-back-6.png"
  "sprites/player/shield/1-walk-front-0-4.png"
  "sprites/player/shield/1-walk-front-1.png"
  "sprites/player/shield/1-walk-front-2.png"
  "sprites/player/shield/1-walk-front-3.png"
  "sprites/player/shield/1-walk-front-5.png"
  "sprites/player/shield/1-walk-front-6.png"
  "sprites/player/shield/1-walk-front-7.png"
  "sprites/player/shield/1-walk-side-0-4.png"
  "sprites/player/shield/1-walk-side-1-3.png"
  "sprites/player/shield/1-walk-side-2.png"
  "sprites/player/shield/1-walk-side-5-7.png"
  "sprites/player/shield/1-walk-side-6.png"
  "sprites/player/shield/2-idle-back.png"
  "sprites/player/shield/2-idle-front.png"
  "sprites/player/shield/2-idle-side.png"
  "sprites/player/shield/2-walk-back-0-4.png"
  "sprites/player/shield/2-walk-back-1-3.png"
  "sprites/player/shield/2-walk-back-2.png"
  "sprites/player/shield/2-walk-back-5-7.png"
  "sprites/player/shield/2-walk-back-6.png"
  "sprites/player/shield/2-walk-front-0-4.png"
  "sprites/player/shield/2-walk-front-1.png"
  "sprites/player/shield/2-walk-front-2.png"
  "sprites/player/shield/2-walk-front-3.png"
  "sprites/player/shield/2-walk-front-5.png"
  "sprites/player/shield/2-walk-front-6.png"
  "sprites/player/shield/2-walk-front-7.png"
  "sprites/player/shield/2-walk-side-0-4.png"
  "sprites/player/shield/2-walk-side-1-3.png"
  "sprites/player/shield/2-walk-side-2.png"
  "sprites/player/shield/2-walk-side-5-7.png"
  "sprites/player/shield/2-walk-side-6.png"
  "sprites/player/shield/3-idle-back.png"
  "sprites/player/shield/3-idle-front.png"
  "sprites/player/shield/3-idle-side.png"
  "sprites/player/shield/3-walk-back-0-4.png"
  "sprites/player/shield/3-walk-back-1-3.png"
  "sprites/player/shield/3-walk-back-2.png"
  "sprites/player/shield/3-walk-back-5-7.png"
  "sprites/player/shield/3-walk-back-6.png"
  "sprites/player/shield/3-walk-front-0-4.png"
  "sprites/player/shield/3-walk-front-1.png"
  "sprites/player/shield/3-walk-front-2.png"
  "sprites/player/shield/3-walk-front-3.png"
  "sprites/player/shield/3-walk-front-5.png"
  "sprites/player/shield/3-walk-front-6.png"
  "sprites/player/shield/3-walk-front-7.png"
  "sprites/player/shield/3-walk-side-0-4.png"
  "sprites/player/shield/3-walk-side-1-3.png"
  "sprites/player/shield/3-walk-side-2.png"
  "sprites/player/shield/3-walk-side-5-7.png"
  "sprites/player/shield/3-walk-side-6.png"
  "sprites/player/shield/4-idle-back.png"
  "sprites/player/shield/4-idle-front.png"
  "sprites/player/shield/4-idle-side.png"
  "sprites/player/shield/4-walk-back-0-4.png"
  "sprites/player/shield/4-walk-back-1-3.png"
  "sprites/player/shield/4-walk-back-2.png"
  "sprites/player/shield/4-walk-back-5-7.png"
  "sprites/player/shield/4-walk-back-6.png"
  "sprites/player/shield/4-walk-front-0-4.png"
  "sprites/player/shield/4-walk-front-1.png"
  "sprites/player/shield/4-walk-front-2.png"
  "sprites/player/shield/4-walk-front-3.png"
  "sprites/player/shield/4-walk-front-5.png"
  "sprites/player/shield/4-walk-front-6.png"
  "sprites/player/shield/4-walk-front-7.png"
  "sprites/player/shield/4-walk-side-0-4.png"
  "sprites/player/shield/4-walk-side-1-3.png"
  "sprites/player/shield/4-walk-side-2.png"
  "sprites/player/shield/4-walk-side-5-7.png"
  "sprites/player/shield/4-walk-side-6.png"

  "sprites/ui/bomb-button.png"
  "sprites/ui/directional-pad-left.png"
  "sprites/ui/directional-pad-right.png"
  "sprites/ui/directional-pad-up.png"
  "sprites/ui/directional-pad-down.png"
  "sprites/ui/joystick-background.png"
  "sprites/ui/joystick-stick.png"
)
set(sprites_bleeding
  "sprites/arena-border.png"
  "sprites/arena-corner.png"
  "sprites/flame-arm.png"
  "sprites/flame-center.png"
  "sprites/flame-end.png"
  "sprites/pixel.png"

  "sprites/fog/00000000.png"
  "sprites/fog/00000001.png"
  "sprites/fog/00000010.png"
  "sprites/fog/00000011.png"
  "sprites/fog/00000100.png"
  "sprites/fog/00000101.png"
  "sprites/fog/00000110.png"
  "sprites/fog/00000111.png"
  "sprites/fog/00001000.png"
  "sprites/fog/00001001.png"
  "sprites/fog/00001010.png"
  "sprites/fog/00001011.png"
  "sprites/fog/00001100.png"
  "sprites/fog/00001101.png"
  "sprites/fog/00001110.png"
  "sprites/fog/00001111.png"
  "sprites/fog/00010101.png"
  "sprites/fog/00010111.png"
  "sprites/fog/00011101.png"
  "sprites/fog/00011111.png"
  "sprites/fog/00100110.png"
  "sprites/fog/00100111.png"
  "sprites/fog/00101110.png"
  "sprites/fog/00101111.png"
  "sprites/fog/00110111.png"
  "sprites/fog/00111111.png"
  "sprites/fog/01001001.png"
  "sprites/fog/01001011.png"
  "sprites/fog/01001101.png"
  "sprites/fog/01001111.png"
  "sprites/fog/01011101.png"
  "sprites/fog/01011111.png"
  "sprites/fog/01101111.png"
  "sprites/fog/01111111.png"
  "sprites/fog/10001010.png"
  "sprites/fog/10001011.png"
  "sprites/fog/10001110.png"
  "sprites/fog/10001111.png"
  "sprites/fog/10011111.png"
  "sprites/fog/10101110.png"
  "sprites/fog/10101111.png"
  "sprites/fog/10111111.png"
  "sprites/fog/11001011.png"
  "sprites/fog/11001111.png"
  "sprites/fog/11011111.png"
  "sprites/fog/11101111.png"
  "sprites/fog/11111111.png"
  "sprites/fog/roll-in-1.png"
  "sprites/fog/roll-in-2.png"
  "sprites/fog/roll-in-3.png"
  "sprites/fog/roll-in-4.png"
  "sprites/fog/roll-in-5.png"
  "sprites/fog/roll-in-6.png"

  "sprites/menu/horizontal-gradient.png"
  "sprites/menu/red-stripe-1-7-1-136.png"
  "sprites/menu/vertical-gradient.png"
  "sprites/menu/vertical-gray-gradient.png"
  "sprites/menu/vertical-green-gradient.png"
  "sprites/menu/vertical-purple-gradient.png"
  "sprites/menu/vertical-red-gradient.png"
  "sprites/menu/vertical-yellow-gradient.png"

  "sprites/ui/edging-60-88.png"
  "sprites/ui/edging-216-88.png"
)

foreach(s ${sprites} ${sprites_crop} ${sprites_bleeding})
  set(sprites_full_path ${sprites_full_path} ${CMAKE_CURRENT_LIST_DIR}/../${s})
endforeach()

find_program(auto_pack_my_sprites auto-pack-my-sprites REQUIRED)

# Handling the paths for the sprite sheet is quite complex. We want
# relative paths in the plist, so we pass the PNGs via relative paths,
# and consequently we must change the working directory. Moreover the
# --output argument does not work well with paths thus we generate the
# resulting files in the current working directory then we move them
# to the build directory. Note that the current working directory is
# in the source tree, so if we ever intentionally add a
# sprite-sheet.png file there, we are going to have problems.
add_custom_command(
  OUTPUT
    ${BIM_GENERATED_ASSETS_DIR}/sprite-sheet-1.png
    ${BIM_GENERATED_ASSETS_DIR}/sprite-sheet-2.png
    ${BIM_GENERATED_ASSETS_DIR}/sprite-sheet-3.png
    ${BIM_GENERATED_ASSETS_DIR}/sprite-sheet-1.plist
    ${BIM_GENERATED_ASSETS_DIR}/sprite-sheet-2.plist
    ${BIM_GENERATED_ASSETS_DIR}/sprite-sheet-3.plist
  COMMAND ${auto_pack_my_sprites}
    --output sprite-sheet
    --no-rotation
    --format plist
    --size 2048x2048
    ${sprites}
    --bleeding
    ${sprites_bleeding}
    --crop
    ${sprites_crop}
  COMMAND
    mv sprite-sheet*.* ${BIM_GENERATED_ASSETS_DIR}
  DEPENDS ${sprites_full_path}
  WORKING_DIRECTORY ${CMAKE_CURRENT_LIST_DIR}/..
)

add_custom_target(
  sprite-sheets ALL
  DEPENDS
  ${BIM_GENERATED_ASSETS_DIR}/sprite-sheet-1.png
  ${BIM_GENERATED_ASSETS_DIR}/sprite-sheet-2.png
  ${BIM_GENERATED_ASSETS_DIR}/sprite-sheet-3.png
)
