#!/bin/bash

F1=F
F2=("QUAKE SETTINGS")

function set_q1game {
    case $CHOICE in
	A) Q1GAME=
	   TMPQ1GAME="Quake"
	   ;;
	B) Q1GAME="qw"
	   TMPQ1GAME="Quakeworld"
	   ;;
	C) Q1GAME="qf"
	   TMPQ1GAME="Quakeforge Newtree"
	   ;;
	D) Q1GAME="nuq"
	   TMPQ1GAME="Quakeforge NUQ"
	   ;;
	E) Q1GAME="-game hipnotic"
	   TMPQ1GAME="Scourge Of Armagon"
	   ;;
	F) Q1GAME="-game rogue"
	   TMPQ1GAME="Dissolution Of Eternity"
	   ;;
    esac
}

function select_q1game {
    RAD="Select QUAKE Game"
    STRING=("A" "QUAKE" on \
	    "B" "QUAKEWORLD" off \
            "C" "QUAKEFORGE NEWTREE" off \
	    "D" "QUAKEFORGE NUQ" off \
	    "E" "MISSION PACK NO. 1: SCOURGE OF ARMAGON" off \
	    "F" "MISSION PACK NO. 2: DISSOLUTION OF ETERNITY" off)
    INPUT=set_q1game
    radiolist "${STRING[@]}"
}

function set_q1rmode {
    case $CHOICE in
	A) Q1_RMODE="soft"
	   TMP_Q1_RMODE="Software Rendering"
	   ;;
	B) Q1_RMODE="gl"
	   TMP_Q1_RMODE="GL Rendering"
	   ;;
    esac
}

function select_q1rmode {
    RAD="Select a Rendering Mode"
    STRING=("A" "Software Rendering" on \
	    "B" "GL Rendering" off)
    INPUT=set_q1rmode
    radiolist "${STRING[@]}"
    saverc
}

function set_q1drv {
    case $CHOICE in
	A) Q1_DRV="libMesaGL.so.2"
	   TMP_Q1_DRV="Mesa 3-D"
	   ;;
	B) Q1_DRV="lib3dfxgl.so"
	   TMP_Q1_DRV="3Dfx mini-OpenGL"
	   ;;
    esac
}

function select_q1drv {
    RAD="Select a Driver"
    STRING=("A" "Mesa 3-D" on \
	    "B" "3Dfx mini-OpenGL" off)
    INPUT=set_q1drv
    radiolist "${STRING[@]}"
    saverc
}

function set_mode {
    case $CHOICE in
	A) MODE="5";;
	B) MODE="6";;
	C) MODE="7";;
	D) MODE="8";;
	E) MODE="10";;
	F) MODE="11";;
	G) MODE="12";;
	H) MODE="55";;
	I) MODE="65";;
	J) MODE="80";;
	K) MODE="90";;
	L) MODE="100";;
	M) MODE="140";;
    esac
}

function select_mode {
    RAD="Select a Video Mode"
    STRING=("A" "  5:  320x200" off \
	    "B" "  6:  320x240" on \
	    "C" "  7:  320x400" off \
	    "D" "  8:  360x480" off \
	    "E" " 10:  640x480" off \
	    "F" " 11:  800x600" off \
	    "G" " 12: 1024x768" off \
	    "H" " 55:  400x300 (Quakeworld only)" off \
	    "I" " 65:  960x720 (Quakeworld only)" off \
	    "J" " 80:  640x400 (Quakeworld only)" off \
	    "K" " 90:  720x540 (Quakeworld only)" off \
	    "L" "100: 1072x600 (Quakeworld only)" off \
	    "M" "140:  400x600 (Quakeworld only)" off )
    INPUT=set_mode
    radiolist "${STRING[@]}"
    saverc
}

function menuchoices3 {
    case $choice in
	A) inputbox "Specify the directory with the QUAKE binary files
(OK for \"$QUAKEBINDIR\")"
	   QUAKEBINDIR=${INPUT:=$QUAKEBINDIR}
	   ;;
	B) inputbox "Specify the path to the 'id1' directory
(OK for \"$QUAKEPAKDIR\")"
	   QUAKEPAKDIR=${INPUT:=$QUAKEPAKDIR}
	   ;;
	C) select_q1game
	   ;;
	D) select_q1rmode
	   ;;
	E) select_q1drv
	   ;;
	F) set_geometry
	   ;;
	G) select_mode
	   ;;
	H) set_sound
	   ;;
	#I) set_wmouse
	#   ;;
	I) backup_conf --force $RCFILE
	   saverc
	   make_quake_config
	   return
	   ;;
    esac
    configure_quake
}

function configure_quake {
    MENU="CONFIGURE QUAKE"
    MENUCHOICES=menuchoices3
    CQ1=("A" "Where are the QUAKE binaries ?  [$QUAKEBINDIR]" \
	 "B" "Where are the QUAKE PAK files ? [$QUAKEPAKDIR]" \
	 "C" "Select a Game                   [$TMPQ1GAME]" \
	 "D" "Select a Rendering Mode         [$TMP_Q1_RMODE]" \
	 "E" "Select a Driver                 [$TMP_Q1_DRV]" \
	 "F" "Select X11 window size          [$X11_GEOM]" \
	 "G" "Select a Video Mode             [$MODE]" \
	 "H" "Sound                           [$TMP_SOUND]" \
	 "I" "Save settings to \"$RCFILE\"")
	 #"I" "Windowed Mouse                  [$TMP_WMOUSE]" \
    menubox "${CQ1[@]}"
}
