#!/bin/sh
BASE=${BASE:-/home/data/baseq1}
EXEC=${EXEC:-/home/apps/quore-0.2.10/build-glx/quore}
#EXEC=/home/apps/tyrquake-0.60/tyr-glquake
#EXEC=/home/apps/darkplaces/darkplaces-linux-686-glx
#EXEC=/home/apps/joequake/src/release_glx/joequake-gl.glx
QUORE=${QUORE:-0}

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 ]; then
  echo "warning: quore's 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 = base directory (BASE=/home/baseq1)"
    echo "  EXEC = path to an executable (EXEC=/home/quore/build-glx/quore)"
    echo "  QUORE = enable or disable quore mode (QUORE=0)"
    echo "  SIZE = window size multiplicator (SIZE=5)"
    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 "  flesh, guncotton, haunting, hrim, marcher, marine, n3sp02, ne, necro,"
    echo "  nehahra, nesp06, nesp09, nihilore, oum, quore, quoth, rapture, rde, rmx,"
    echo "  shesp1, slave, tchak, tdk, terra1, thehand, travail, warp, whiteroom, zer"
    echo "nonfunctioning mods:"
    echo "  alk10, nightjourney"
    exit 0
    ;;
  [^+-]*)
    if [ ! -d ${BASE}/${1} ]; then
      case ${1} in
        debug|debugmem|devel|nice|shot) ;;
        bigfoot|dredd) ;;
        *)
          echo "error: moddir ${BASE}/${1} not found"
          exit 1
          ;;
      esac
    fi
    MOD=${1}
    shift 1
    ;;
esac

COMMAND="${EXEC} -basedir ${BASE} ${COMMAND} -nomdga"
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

shot () {
  cat >${HOME}/.quore/shot.cfg <<EOF
map start
gl_dcontrastspeed 1
//r_drawviewmodel 0
show_clock 0
show_fps 0
viewsize 120
alias qwait "wait;wait;wait;wait;wait;wait;wait;wait;wait;wait;"
qwait
ambience ${1}
r_quality 1
`for i in {0..50}; do echo "qwait;"; done`
screenshot ${1}.png
quit
EOF
  AMBIENCE=${1}
  shift 1
  ${COMMAND} +exec ../shot.cfg ${*}
  gm convert ~/.quore/screenshots/${AMBIENCE}.png -resize 800 \
    /home/apps/quore-web/new/${AMBIENCE}.png
}

case ${MOD} in
  debug) COMMAND="gdb --batch -ex run ${EXEC} --args ${COMMAND}" ;;
  debugmem) COMMAND="valgrind --tool=memcheck --leak-check=yes ${COMMAND}" ;;
  devel) COMMAND="${COMMAND} +set developer 1 +map start" ;;
  nice) COMMAND="sudo nice -n 10 ${COMMAND}" ;;
  shot) shot ${*}; exit 0 ;;

  bigfoot) COMMAND="${COMMAND} -game net +connect bigfoot.quake1.net" ;;
  dredd) COMMAND="${COMMAND} -game net +connect dredd.quakeone.com" ;;

  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}" ;;
  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} ${*} 2>&1 >>/tmp/quore.log
