#!/bin/bash

function saverc {
    echo X11_GEOM="'"${X11_GEOM:=320x200}"'" > $RCFILE
    echo CONHEIGHT="'"${CONHEIGHT:=200}"'" >> $RCFILE
    echo CONWIDTH="'"${CONWIDTH:=320}"'" >> $RCFILE
    echo IWADDIR="'"${IWADDIR:=/usr/share/games/doom}"'" >> $RCFILE
    echo PWADDIR="'"${PWADDIR:=/usr/share/games/doom}"'" >> $RCFILE
    echo IWAD="'"${IWAD:=doom.wad}"'" >> $RCFILE
    [ ! -z "$TMPWAD" ] && echo TMPWAD="'"$TMPWAD"'" >> $RCFILE
    [ ! -z "$TMPLGAME" ] && echo TMPLGAME="'"$TMPLGAME"'" >> $RCFILE
    [ ! -z "$TMPWARP" ] && echo TMPWARP="'"$TMPWARP"'" >> $RCFILE
    echo TURBO="'"${TURBO:=100}"'" >> $RCFILE
    echo DOOMSKILL="'"${DOOMSKILL:=3}"'" >> $RCFILE
    echo TMPFAST="'"${TMPFAST:=off}"'" >> $RCFILE
    echo TMPRESPAWN="'"${TMPRESPAWN:=off}"'" >> $RCFILE
    echo TMPNOMONSTERS="'"${TMPNOMONSTERS:=off}"'" >> $RCFILE
    echo TMPQ1GAME="'"${TMPQ1GAME:=Quake}"'" >> $RCFILE
    [ ! -z "$Q1GAME" ] && echo Q1GAME="'"$Q1GAME"'" >> $RCFILE
    echo TMPQ2GAME="'"${TMPQ2GAME:=Quake II}"'" >> $RCFILE
    [ ! -z "$Q2GAME" ] && echo Q2GAME="'"$Q2GAME"'" >> $RCFILE
    echo DOOMBINDIR="'"${DOOMBINDIR:=/usr/games}"'" >> $RCFILE
    echo QUAKEBINDIR="'"${QUAKEBINDIR:=/usr/games/quake}"'" >> $RCFILE
    echo QUAKEPAKDIR="'"${QUAKEPAKDIR:=/usr/share/games/quake}"'" >> $RCFILE
    echo QUAKE2BINDIR="'"${QUAKE2BINDIR:=/usr/games/quake2}"'" >> $RCFILE
    echo QUAKEHOMEDIR="'"${QUAKEHOMEDIR:=$HOME/.quake}"'" >> $RCFILE
    echo QUAKE2HOMEDIR="'"${QUAKE2HOMEDIR:=$HOME/.quake2}"'" >> $RCFILE
    echo Q1_RMODE="'"${Q1_RMODE:=soft}"'" >> $RCFILE
    echo TMP_Q1_RMODE="'"${TMP_Q1_RMODE:=Software Rendering}"'" >> $RCFILE
    echo Q1_DRV="'"${Q1_DRV:=libMesaGL.so.2}"'" >> $RCFILE
    echo TMP_Q1_DRV="'"${TMP_Q1_DRV:=Mesa 3-D}"'" >> $RCFILE
    echo Q2_RMODE="'"${Q2_RMODE:=soft}"'" >> $RCFILE
    echo Q2_DRV="'"${Q2_DRV:=libMesaGL.so.2}"'" >> $RCFILE
    echo TMP_Q2_DRV="'"${TMP_Q2_DRV:=Software Driver}"'" >> $RCFILE
    echo TMP_SOUND="'"${TMP_SOUND:=on}"'" >> $RCFILE
    echo TMP_WMOUSE="'"${TMP_WMOUSE:=on}"'" >> $RCFILE
    echo WMOUSE="'"${WMOUSE:=1}"'" >> $RCFILE
    echo MODE="'"${MODE:=6}"'" >> $RCFILE
}

function make_doom_config {

    [ -d $HOME/.lxdoom ] || mkdir $HOME/.lxdoom

    if [ -f "$DOOMBINDIR/prboom" ]; then

	DOOMBIN="prboom"

	if [ -f "$DOOMBINDIR/prboom.gl" ]; then

	    [ ! -z "$DISPLAY" ] && DOOMBIN="prboom.gl"

	fi

    else

	[ -z "$DISPLAY" ] && DOOMBIN="lsdoom" || DOOMBIN="lxdoom"

    fi

}

function make_quake_config {
    [ -d $HOME/.quake  ] || mkdir $HOME/.quake
    [ -d $QUAKEHOMEDIR/id1 ] || mkdir $QUAKEHOMEDIR/id1
    [ -d $QUAKEHOMEDIR/qw/maps ] || mkdir -p $QUAKEHOMEDIR/qw/maps
    [ -d $QUAKEHOMEDIR/qw/skins ] || mkdir -p $QUAKEHOMEDIR/qw/skins
    [ -d $QUAKEHOMEDIR/ctf ] || mkdir $QUAKEHOMEDIR/ctf
    [ -d $QUAKEHOMEDIR/hipnotic ] || mkdir $QUAKEHOMEDIR/hipnotic
    [ -d $QUAKEHOMEDIR/rogue ] || mkdir $QUAKEHOMEDIR/rogue

    ## CREATE QUAKE SYMBOLIC LINKS

    for GAMEDIR in ctf id1 hipnotic rogue ; do

	for PAKFILE in pak0.pak pak1.pak; do

	    [ ! -f "$QUAKEHOMEDIR/$GAMEDIR/$PAKFILE" ] && \
	    ln -sf $QUAKEPAKDIR/$GAMEDIR/$PAKFILE $QUAKEHOMEDIR/$GAMEDIR/$PAKFILE

	done

    done

    for MAP in base32b.bsp death32c.bsp ; do

	[ ! -f "$QUAKEHOMEDIR/qw/maps/$MAP" ] && \
	ln -sf $QUAKEPAKDIR/qw/maps/$MAP $QUAKEHOMEDIR/qw/maps/$MAP

    done
}

function make_quake2_config {
    [ ! -z "$QUAKE2BINDIR" ] && \
    grep -q $QUAKE2BINDIR /etc/quake2.conf || \
    echo "$QUAKE2BINDIR" > /etc/quake2.conf

    [ -d $HOME/.quake2 ] || mkdir $HOME/.quake2
    [ -d $QUAKE2HOMEDIR/baseq2 ] || mkdir $QUAKE2HOMEDIR/baseq2
    [ -d $QUAKE2HOMEDIR/ctf ] || mkdir $QUAKE2HOMEDIR/ctf
    [ -d $QUAKE2HOMEDIR/rogue ] || mkdir $QUAKE2HOMEDIR/rogue
    [ -d $QUAKE2HOMEDIR/xatrix ] || mkdir $QUAKE2HOMEDIR/xatrix

    ## CREATE QUAKE2 SYMBOLIC LINKS
    [ ! -d $QUAKE2HOMEDIR/baseq2/video ] && \
    ln -sfn $QUAKE2BINDIR/baseq2/video $QUAKE2HOMEDIR/baseq2/video

    for GAMEDIR in baseq2 ctf rogue xatrix ; do

	for Q2FILE in pak0.pak pak1.pak pak2.pak gamei386.so ; do

	    [ ! -f "$QUAKE2HOMEDIR/$GAMEDIR/$Q2FILE" -o -L "$QUAKE2HOMEDIR/$GAMEDIR/$Q2FILE" ] && \
	    ln -sf  $QUAKE2BINDIR/$GAMEDIR/$Q2FILE $QUAKE2HOMEDIR/$GAMEDIR/$Q2FILE

	done

    done

}

function check_gamecd {

    [ "$DRIVE" = "$E" ] && local CDDEV=$CDROM || local CDDEV=$CDRW

    cd $DRIVE 2> /dev/null

    until [ -d "`echo "$DOOMBINDIR" | grep $DRIVE`" -o \
            -d "`echo "$IWADDIR" | grep $DRIVE`" -o \
	    -d "`echo "$PWADDIR" | grep $DRIVE`" -o \
            -d "`echo "$QUAKEBINDIR" | grep $DRIVE`" -o \
            -d "`echo "$QUAKE2BINDIR" | grep $DRIVE`" ]; do
	eject $CDDEV 2> /dev/null
	yesnobox  "Can't find a Games CD-ROM. Do you want to continue without a CD-ROM ?"
	if [ "$YNRETVAL" = "0" ]; then
	    eject -t $CDDEV 2> /dev/null
	    break
	else
	    msgbox "Insert the CD-ROM in the CD-ROM drive"
	    eject -t $CDDEV 2> /dev/null
	    grep -q $DRIVE /etc/mtab || mount $DRIVE 2> /dev/null
	    cd $DRIVE 2> /dev/null
	fi
    done
}

function mount_drive {
    if grep -q $DRIVE /etc/mtab ; then
	check_gamecd
    else
	mount $DRIVE 2> /dev/null || return
	check_gamecd
    fi
}

function check_cdrom {
    [ -x "/etc/rc.d/init.d/gpm" ] && /etc/rc.d/init.d/gpm stop >/dev/null

    if [ ! -z "`echo "$DOOMBINDIR $IWADDIR $PWADDIR $QUAKEBINDIR $QUAKE2BINDIR" | grep $F 2> /dev/null`" ]; then
	DRIVE=$F && mount_drive
    elif [ ! -z "`echo "$DOOMBINDIR $IWADDIR $PWADDIR $QUAKEBINDIR1 $QUAKE2BINDIR" | grep $E 2> /dev/null`" ]; then
	DRIVE=$E && mount_drive
    fi
}

function select_geometry {
    case $CHOICE in
	A) X11_GEOM=320x200
	   CONWIDTH=320;;
	B) X11_GEOM=480x340
	   CONWIDTH=480;;
	C) X11_GEOM=640x480
	   CONWIDTH=640;;
	D) X11_GEOM=800x600
	   CONWIDTH=800;;
	E) X11_GEOM=1024x768
	   CONWIDTH=1024;;
    esac
}

function set_geometry {
    RAD="Select X11 window geometry"
    INPUT=select_geometry
    STRING=("A" "320x200" on \
	    "B" "480x340" off \
	    "C" "640x480" off \
	    "D" "800x600" off \
	    "E" "1024x768" off)
    radiolist "${STRING[@]}"
}

function set_sound {
    if [ "$TMP_SOUND" = "off" ]; then
	TMP_SOUND=on
	SOUND=
    else
	TMP_SOUND=off
	SOUND="-nosound"
    fi
}

function set_wmouse {
    if [ "$TMP_WMOUSE" = "off" ]; then
	TMP_WMOUSE=on
	WMOUSE="1"
    else
	TMP_WMOUSE=off
	WMOUSE="0"
    fi
}
