diff options
Diffstat (limited to 'includes')
| -rw-r--r-- | includes/autoinstall-includes.sh | 55 | ||||
| -rw-r--r-- | includes/cd-includes.sh | 2 | ||||
| -rw-r--r-- | includes/cd-list.sh | 163 | ||||
| -rw-r--r-- | includes/generic-includes.sh | 46 | 
4 files changed, 219 insertions, 47 deletions
| diff --git a/includes/autoinstall-includes.sh b/includes/autoinstall-includes.sh index 8f80036..0cd3754 100644 --- a/includes/autoinstall-includes.sh +++ b/includes/autoinstall-includes.sh @@ -38,64 +38,39 @@ function query  	done  } -function choosegame -{ -	while true; do -		choice=0 -		echo "Choose the game to install from the list:" -		echo "1  | Baldur's Gate 1 (5CD International version)" -		echo "2  | Baldurs Gate & Tales of the Sword Coast (3CD US version)" -		echo "3  | Tales of the Sword Coast (1CD UK version)" -		echo "4  | Planescape: Torment (4CD version)" -		echo "5  | Planescape: Torment (2CD version)" -		echo "6  | Icewind Dale (2CD UK version)" -		echo "7  | Icewind Dale 2 (2CD version)" - -		read -n 1 choice -		echo - -		case $choice in -			1 ) export CDMD5="138528155dfeb695bd63f90eacee7dc0" -				return 0 ;; -			2 ) export CDMD5="1a6828b97a27967e8c4acc25e1ef48d2" -				return 0 ;; -			3 ) export CDMD5="e27d259ddc0171ff945dbba136e60309" -				return 0 ;; -			4 ) export CDMD5="5e8c2075163aca124de4a467fb33063d" -				return 0 ;; -			5 ) export CDMD5="640b61443cc86c434f1b6826e63c0e33" -				return 0 ;; -			6 ) export CDMD5="b79582f4f80270d48e6b26f529ba31dd" -				return 0 ;; -			7 ) export CDMD5="77307366ba3e8a246f6f238cbb3b7874" -				return 0 ;; -		esac -	done -} -  function recommendcfg  { -	# usage: recommendcfg [numofcds] +	# usage: recommendcfg [numofcds] [startCd]  	if [ "$1" ]; then -		NUMOFCDS=$1 +		NUMOFCDS="$1"  	else  		NUMOFCDS=1  	fi +    if [ "$2" ]; then +        STARTCD="$2" +    else +        STARTCD=1 +    fi +  	echo  	echo "To play the game with GemRB, you will need to add the following"  	echo "lines to your GemRB.cfg file:"  	echo  	LINE="GamePath=$TARGETDIR"; echo $LINE  	if [ $FULLINSTALL -eq 1 ]; then -		for CDNUMBER in $(seq $NUMOFCDS); do -			LINE="CD$CDNUMBER=$TARGETDIR" +		for CDNUMBER in $(seq $startCd $(($NUMOFCDS+$startCd-1))); do +            if [ -d "${TARGETDIR}/cd${CDNUMBER}" ]; then +                LINE="CD${CDNUMBER}=${TARGETDIR}/cd${CDNUMBER}" +            else +			    LINE="CD${CDNUMBER}=${TARGETDIR}" +            fi  			echo $LINE  		done  		echo "GameOnCD=0"  	else -		for CDNUMBER in $(seq $NUMOFCDS); do +		for CDNUMBER in $(seq $startCd $(($NUMOFCDS+$startCd-1))); do  			LINE="CD$CDNUMBER=$CDMOUNT/cd$CDNUMBER"  			echo $LINE  		done diff --git a/includes/cd-includes.sh b/includes/cd-includes.sh index 3ef9670..86359ea 100644 --- a/includes/cd-includes.sh +++ b/includes/cd-includes.sh @@ -32,7 +32,7 @@ export IWD_2CD_US_MD5="b79582f4f80270d48e6b26f529ba31dd"  export IWD_2CD_UK_MD5="b79582f4f80270d48e6b26f529ba31dd"  export IWD_HOW_1CD_US_MD5="d2c42de47026f6384053965319ff511b" -export IWD2_2CD_US_MD5="77307366ba3e8a246f6f238cbb3b7874" +export IWD2_2CD_INTL_MD5="77307366ba3e8a246f6f238cbb3b7874"  # a record of every IE collection I can find.  export IWD_ULTIMATE_COLLECTION_MD5="" diff --git a/includes/cd-list.sh b/includes/cd-list.sh new file mode 100644 index 0000000..bcdf5c4 --- /dev/null +++ b/includes/cd-list.sh @@ -0,0 +1,163 @@ +#!/bin/bash +# Copyright 2009 Nick White +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License +# as published by the Free Software Foundation; either version 2 +# of the License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the +# GNU General Public License for more details. +# +# See <http://www.gnu.org/licenses/> for a copy of the GNU General +# Public License. +# +# Selects the appropriate installer(s) for an Infinity Engine game, +# based on the CD inserted + +function get_game +{ +	while [ -z "$MINSCRIPT" ]; do +		case $CDMD5 in +			$BG1_5CD_INTL_MD5 ) +				FULLGAMENAME="Baldurs Gate 1: 5CD International version" +				SHORTGAMENAME="baldursgate1" +				MINSCRIPT="bg1/install-5cd-minimal.sh" +				EXTRASCRIPT="bg1/install-5cd-extra.sh" +				PATCHES="bg1/install-patch-intl.sh bg1/install-patch-baldurdash-fix.sh bg1/install-patch-baldurdash-text.sh" +				WINDOWSFILES="baldur.exe bgmain.exe config.exe keymap.ini luaauto.cfg update.url" +				CDNO=5 +				;; +			$BG1_TOTSC_3CD_US_MD5 ) +				FULLGAMENAME="Baldurs Gate 1 & Tales of the Sword Coast: 3CD US version" +				SHORTGAMENAME="baldursgate1totsc" +				MINSCRIPT="bg1/install-3cd-minimal.sh" +				EXTRASCRIPT="bg1/install-3cd-extra.sh" +				PATCHES="bg1/install-patch-baldurdash-fix.sh bg1/install-patch-totsc-baldurdash-text.sh" +				WINDOWSFILES="baldur.exe bgmain.exe config.exe keymap.ini luaauto.cfg update.url" +				CDNO=3 +				;; +			$BG1_TOTSC_1CD_UK_MD5 ) +				FULLGAMENAME="Baldurs Gate 1 & Tales of the Sword Coast: 1CD UK version" +				SHORTGAMENAME="baldursgate1totsc" +				MINSCRIPT="bg1/install-1cd-totsc-uk.sh" +				PATCHES="bg1/install-patch-totsc-uk.sh bg1/install-patch-baldurdash-fix.sh bg1/install-patch-totsc-baldurdash-text.sh" +				WINDOWSFILES="bgmain2.exe baldur.exe config.exe mconvert.exe" +				;; +			$BG2_4CD_US_MD5 ) +				FULLGAMENAME="Baldurs Gate 2 - Shadows of Amn: 4CD US version" +				SHORTGAMENAME="baldursgate2soa" +				MINSCRIPT="bg2/install-soa-4cd-us-minimal.sh" +				EXTRASCRIPT="bg2/install-soa-4cd-us-extra.sh" +				EXPANSIONSCRIPT="bg2/install-soa-4cd-us-tobMinimal.sh" +				EXPANSIONNAME="Throne of Bhaal" +				PATCHES="" # TODO: fill in patches +				# bg2/install-patch-soa-us.sh bg2/install-patch-baldurdash-fix.sh bg2/install-patch-soa-baldurdash-text.sh" +				WINDOWSFILES="bgdxtest.exe bggltest.exe glsetup.exe bgconfig.exe bgmain.exe charview.exe" +				CDNO=4 +				;; +			$BG2_TOB_1CD_US_MD5 ) +				FULLGAMENAME="Baldurs Gate 2 - Throne of Bhaal: 1CD US version" +				SHORTGAMENAME="baldursgate2soa" +				MINSCRIPT="bg2/install-tob-1cd-us-minimal.sh" +				PATCHES="" # TODO: fill in patches +				# bg2/install-patch-totsc-uk.sh bg1/install-patch-baldurdash-fix.sh bg1/install-patch-totsc-baldurdash-text.sh" +				WINDOWSFILES="autorun.ini bgconfig.exe bgdxtest.exe bggltest.exe bgmain.exe charview.exe glsetup.exe update.url earthlink gamespy" +				CDNO=1 +				CDSTART=5 +				;; +			$PST_2CD_MD5 ) +				FULLGAMENAME="Planescape Torment: 2CD version" +				SHORTGAMENAME="planescapetorment" +				MINSCRIPT="pst/install-2cd-minimal.sh" +				EXTRASCRIPT="pst/install-2cd-extra.sh" +				WINDOWSFILES="torment.exe ereg" +				CDNO=2 +				;; +			$PST_4CD_MD5 ) +				FULLGAMENAME="Planescape Torment: 4CD version" +				SHORTGAMENAME="planescapetorment" +				MINSCRIPT="pst/install-4cd-minimal.sh" +				EXTRASCRIPT="pst/install-4cd-extra.sh" +				PATCHES="pst/install-patch-official.sh" +				WINDOWSFILES="torment.exe ereg" +				CDNO=4 +				;; +			$IWD_2CD_UK_MD5 ) +				FULLGAMENAME="Icewind Dale 2CD International version" +				SHORTGAMENAME="icewinddale" +				MINSCRIPT="iwd/install-2cd-uk-minimal.sh" +				EXTRASCRIPT="iwd/install-2cd-uk-extra.sh" +				PATCHES="iwd/install-patch-uk-fix.sh iwd/install-patch-us.sh" +				WINDOWSFILES="3dfx.dll config.exe icewind.ini keymap.ini language.ini mpicewnd.mpi" +				CDNO=2 +				;; +			$IWD2_2CD_INTL_MD5 ) +				FULLGAMENAME="Icewind Dale 2CD International version" +				SHORTGAMENAME="icewinddale" +				MINSCRIPT="iwd/install-2cd-uk-minimal.sh" +				EXTRASCRIPT="iwd/install-2cd-uk-extra.sh" +				PATCHES="iwd/install-patch-uk-fix.sh iwd/install-patch-us.sh" +				WINDOWSFILES="3dfx.dll config.exe icewind.ini keymap.ini language.ini mpicewnd.mpi" +				CDNO=2 +				;; +			* ) +				echo "Unrecognised CD - please select game from menu or change the disc in ${CDMOUNT}" +				choosegame +				;; +		esac +	done +	 +	export FULLGAMENAME SHORTGAMENAME MINSCRIPT EXTRASCRIPT EXPANSIONSCRIPT EXPANSIONNAME PATCHES WINDOWSFILES CDNO CDSTART +} + +function choosegame +{ +	while true; do +		choice=0 +        # TODO: don't forget to add all the games to this list. +		echo "Choose the game to install from the list:" +		echo "1  | Baldur's Gate 1 (5CD International version)" +		echo "2  | Baldur's Gate & Tales of the Sword Coast (3CD US version)" +		echo "3  | Tales of the Sword Coast (1CD UK version)" +		echo "4  | Baldur's Gate 2 - Shadows of Amn (4CD US version)" +		echo "5  | Baldur's Gate 2 - Throne of Bhaal (1CD US version)" +		echo "6  | Planescape: Torment (2CD version)" +		echo "7  | Planescape: Torment (4CD version)" +		echo "8  | Icewind Dale (2CD UK version)" +		echo "9  | Icewind Dale 2 (2CD International version)" +		echo "Z  | My game isn't listed." +		echo "Q  | Quit" + +		read -n 1 choice +		echo + +		case $choice in +			1 ) export CDMD5=$BG1_5CD_INTL_MD5 +				return 0 ;; +			2 ) export CDMD5=$BG1_TOTSC_3CD_US_MD5 +				return 0 ;; +			3 ) export CDMD5=$BG1_TOTSC_1CD_UK_MD5 +				return 0 ;; +			4 ) export CDMD5=$BG2_4CD_US_MD5 +				return 0 ;; +			5 ) export CDMD5=$BG2_TOB_1CD_US_MD5 +				return 0 ;; +			6 ) export CDMD5=$PST_2CD_MD5 +				return 0 ;; +			7 ) export CDMD5=$PST_4CD_MD5 +				return 0 ;; +			8 ) export CDMD5=$IWD_2CD_UK_MD5 +				return 0 ;; +			9 ) export CDMD5=$IWD2_2CD_INTL_MD5 +				return 0 ;; +			[Qq] ) diequietly +				return 0 ;; +			[Zz] ) echo +				"$(dirname $0)/disc_collector.sh" +				return 0 ;; +		esac +	done +} diff --git a/includes/generic-includes.sh b/includes/generic-includes.sh index ac62dd2..b58177b 100644 --- a/includes/generic-includes.sh +++ b/includes/generic-includes.sh @@ -141,22 +141,56 @@ function parseargs  function copylower  {  	# usage: copylower source destination +	mkdir -p "$2" +  	if [ -d "$1" ]; then  		for filename in $(find "$1" -type f); do -			lowerpath="$(echo $filename|gawk -F "$1" '{print $2}'|tr A-Z a-z)" -			cp -f "$filename" "$2/$lowerpath" || die +			lowerpath="$(echo $filename|gawk -F '$1' '{print $2}'|tr A-Z a-z)" +			cp -f "$filename" "${2}/${lowerpath}" || die  		done  	elif [ -f "$1" ]; then  		lowername="$(basename $1|tr A-Z a-z)" -		cp -f "$1" "$2"/$lowername +		cp -f "$1" "${2}/${lowername}"  	fi  } +function setlower +{ +    # usage: setlower target +    if [ "$1" ] +    then +        cd "$1" +        for each_file in `find ./ -iname "*"` +        do +            lower="`echo "$each_file" | tr "[:upper:]" "[:lower:]"`" + +            if [ "$each_file" != "$lower" ] +            then +                mv "$each_file" "$lower" +            fi +        done +    fi +} +  function move_and_remove  {      # usage: move_and_remove source destination      # copies the files in the source directory to the destination. -    mkdir -p "$2" || die -    cp -R "$1/"* "$2" || die -    rm -r "$1" +    if [ "$1" != "$2" ] +    then +        mkdir -p "$2" || die +        cp -R "$1/"* "$2" || die +        rm -r "$1" +    fi +} + +function teardown +{ +    # usage: teardown target +    if [ "$1" ] +    then +        cleanuptmp +        setperms "$1" +        setlower "$1" +    fi  } | 
