#!/bin/sh
# AppRun - start the recompiled Breakers player from inside the AppImage.
#
# ROM files are looked for in this order:
#   1. an explicit --rom-path on the command line;
#   2. ~/.local/share/breakers/roms (the usual prepared directory);
#   3. a "roms" folder next to the AppImage;
#   4. ~/Emulation/roms/breakers, ~/roms/breakers, ~/roms.
# No ROM or BIOS data is inside the AppImage; supply your own dump.
HERE=$(dirname "$(readlink -f "$0")")
export LD_LIBRARY_PATH="$HERE/usr/lib${LD_LIBRARY_PATH:+:$LD_LIBRARY_PATH}"

has_rom=0
rom_dir=""
for a in "$@"; do
    [ "$a" = "--rom-path" ] && has_rom=1
done
if [ "$has_rom" = 0 ] && [ -n "${APPIMAGE:-}" ]; then
    for d in "$HOME/.local/share/breakers/roms" \
             "$HOME/.local/share/breakers" \
             "$(dirname "$APPIMAGE")/roms" \
             "$(dirname "$APPIMAGE")/roms/breakers" \
             "$HOME/Emulation/roms/breakers" \
             "$HOME/roms/breakers" "$HOME/roms"; do
        if [ -d "$d" ]; then
            rom_dir="$d"
            set -- --rom-path "$d" "$@"
            has_rom=1
            break
        fi
    done
fi

# The game and BIOS files are sometimes split between two prepared folders.
if [ -n "$rom_dir" ] && [ ! -f "$rom_dir/sp-s2.sp1" ]; then
    for b in "$HOME/.local/share/breakers" \
             "$HOME/.local/share/breakers/roms"; do
        if [ -f "$b/sp-s2.sp1" ]; then
            set -- --bios-path "$b" "$@"
            break
        fi
    done
fi

# Steam Deck / Gaming Mode wants a fullscreen game.  Keep --headless, an
# explicit --fullscreen or an explicit --scale from being overridden.
add_fs=1
for a in "$@"; do
    case "$a" in --headless|--fullscreen|--scale) add_fs=0;; esac
done
[ "$add_fs" = 1 ] && set -- --fullscreen "$@"

exec "$HERE/usr/bin/Breakers" "$@"
