#!/bin/sh
BASE=${BASE:-/home/data/baseq1}
EXEC=${EXEC:-./build-glx/quore}
QUORE=${QUORE:-1}

if [ ! -x ${EXEC} ]; then
  echo "error: cannot find executable"
  exit 1
fi
if [ ! -d ${BASE}/id1 ]; then
  BASE=${EXEC%/*}
  echo "warning: trying ${BASE} as a basedir"
  if [ ! -d ${BASE}/id1 ]; then
    BASE=${EXEC%/*}/..
    echo "warning: trying ${BASE} as a basedir"
    if [ ! -d ${BASE}/id1 ]; then
      BASE=${EXEC%/*}/../..
      echo "warning: trying ${BASE} as a basedir"
      if [ ! -d ${BASE}/id1 ]; then
        echo "error: basedir not found"
        exit 1
      fi
    fi
  fi
fi
if [ ${QUORE} -eq 1 ] && [ -d ${BASE}/quore ] && [ "${1}" != "bastion" ]; then
  echo "warning: HD pack works only with glx"
  COMMAND="${COMMAND} -quore"
fi
case ${1} in
  *help|-h)
    echo "usage: ${0##*/} [{<mod>|help|single}] [<options>]"
    echo "environment variables :"
    echo "  BASE = ${0##*/} base directory"
    echo "  EXEC = path of an executable"
    echo "  QUORE = enable (1) or disable (0) quore HD pack"
    echo "  SIZE = window size factor starting from 160x80"
    echo "functionning mods :"
    echo "  5rivers, alba01, alba02, alk05, alk07, alk08, alk11, alk12, alk13, alk15,"
    echo "  bastion, bbelief, chapters, contract, czg07, dis_sp6, fc1, fmb_bdg1, fq,"
    echo "  guncotton, haunting, hrim, marcher, marine, n3sp02, ne, necro, nehahra,"
    echo "  nesp06, nesp09, nihilore, oum, quore, quoth, rapture, rde, rmx, shesp1,"
    echo "  slave, tchak, tdk, terra1, thehand, travail, warp, whiteroom, zer"
    echo "nonfunctioning mods:"
    echo "  alk10, flesh, nightjourney"
    exit 0
    ;;
  [^+-]*)
    if [ ! -d ${BASE}/${1} ]; then
      case ${1} in
        debug|devel|nice) ;;
        *)
          echo "error: moddir ${BASE}/${1} not found"
          exit 1
          ;;
      esac
    fi
    MOD=${1}
    shift 1
    ;;
esac

COMMAND="${EXEC} -basedir ${BASE} -mem 64 ${COMMAND}"
#COMMAND="${COMMAND} +exec ../global.cfg"      # create the file in your basedir
if [ -n "${SIZE}" ]; then
  WIDTH=$((80*${SIZE})); HEIGHT=$((160*${SIZE}))
  WIDTH=$((120*${SIZE})); HEIGHT=$((160*${SIZE}))
  WIDTH=$((160*${SIZE})); HEIGHT=$((120*${SIZE}))
  WIDTH=$((160*${SIZE})); HEIGHT=$((80*${SIZE}))
#  WIDTH=$((320*${SIZE})); HEIGHT=$((80*${SIZE}))
  COMMAND="${COMMAND} -window -width ${WIDTH} -height ${HEIGHT}"
else
  COMMAND="${COMMAND} -fullscreen -current"
fi

case ${MOD} in
  debug) COMMAND="valgrind --tool=memcheck --leak-check=yes ${COMMAND} +set developer 2" ;;
  devel) COMMAND="${COMMAND} +set developer 1 +map start" ;;
  nice) COMMAND="sudo nice -n 10 ${COMMAND}" ;;

  alba*|alk*|fc1|flesh|fmb_bdg1|haunting|marcher|marine|necro|nihilore|tchak|terra1)
    COMMAND="${COMMAND} -game ${MOD} +map ${MOD}"
    ;;
  bastion) COMMAND="${COMMAND} -game ${MOD} +map ${MOD} -legacy" ;;
  zer) COMMAND="${COMMAND} -game ${MOD}" ;;
  rde) COMMAND="${COMMAND} -game ${MOD} +map rdstart" ;;
  quoth) COMMAND="${COMMAND} -hipnotic -game ${MOD}" ;;
  5rivers|hrim|n3sp02|neh*|warp) COMMAND="${COMMAND} -quoth -game ${MOD}" ;;
  dis_sp6|slave|shesp1|thehand) COMMAND="${COMMAND} -quoth -game ${MOD} +map ${MOD}" ;;
  ne) COMMAND="${COMMAND} -quoth -game ${MOD} +map ne_lend" ;;
  nightjourney) COMMAND="${COMMAND} -rogue -game ${MOD}" ;;

  single) COMMAND="${COMMAND} -game ${MOD} +menu_singlemaps" ;;
  [a-z0-9]*) COMMAND="${COMMAND} -game ${MOD}" ;;
esac

echo "${COMMAND} ${*}"
${COMMAND} ${*}
