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 } |