Merge branch 'testing' in preparation for binary release.

This commit is contained in:
Storm Dragon 2021-06-26 01:50:52 -04:00
commit 054d0b2d5e

View File

@ -282,6 +282,44 @@ download() {
done done
} }
get_bottle() {
# Handles games that use the same wine bottle
case "${game}" in
"bg-"*) export WINEPREFIX="${HOME}/.local/wine/bg";;
# Oriol Gomez games group
"beatstar-pro"*) ;&
"bombercats"*) ;&
"copter-mission"*) ;&
"danger-on-the-wheel"*) ;&
"death-on-the-road"*) ;&
"fuck-that-bird"*) ;&
"hammer-of-glory"*) ;&
"insect-therapy"*) ;&
"rhythm-rage"*) ;&
"run-for-your-life"*) ;&
"thief"*) ;&
"villains-from-beyond"*) export WINEPREFIX="${HOME}/.local/wine/oriol-gomez";;
*) export WINEPREFIX="${HOME}/.local/wine/${game%|*}";;
esac
}
get_installer() {
# If the file is in cache nothing else needs to be done.
if [[ -f "${cache}/$1" ]]; then
return
fi
read -p "Make sure $1 is available in either your Downloads or Desktop directory and press enter to continue." continue
# Search the Desktop and Downloads directories for the installation file
for i in ~/Downloads ~/Desktop ; do
find $i -type f -name "$1" -exec cp -v {} "${cache}/" \;
done
# If the file is still not available abort.
if [[ ! -f "${cache}/$1" ]]; then
echo "couldn't find $1. Please download the file and try again."
exit 1
fi
}
help() { help() {
echo "${0##*/}" echo "${0##*/}"
echo "Released under the terms of the Common Public Attribution License Version 1.0" echo "Released under the terms of the Common Public Attribution License Version 1.0"
@ -304,7 +342,7 @@ documentation() {
if ! command -v w3m &> /dev/null ; then if ! command -v w3m &> /dev/null ; then
echo "This feature of audiogame-manager requires w3m. Please install it before continuing." echo "This feature of audiogame-manager requires w3m. Please install it before continuing."
fi fi
export WINEPREFIX="$1" get_bottle "$1"
echo "Loading documentation, please wait..." echo "Loading documentation, please wait..."
# Try to find documentation based on common naming conventions. # Try to find documentation based on common naming conventions.
local gamePath="$(winepath -u "$2" 2> /dev/null)" local gamePath="$(winepath -u "$2" 2> /dev/null)"
@ -316,6 +354,9 @@ echo "Loading documentation, please wait..."
gameDoc="$(find "$gamePath" -type f -iname "$i" -or -iname 'manual.htm' | head -1)" gameDoc="$(find "$gamePath" -type f -iname "$i" -or -iname 'manual.htm' | head -1)"
done done
fi fi
if [[ -z "$gameDoc" ]]; then
gameDoc="$(find "$gamePath" -type f -iname '[A-Z]*Help.htm' -or -iname '[A-Z]*Help.html' | head -1)"
fi
if [[ -z "$gameDoc" ]]; then if [[ -z "$gameDoc" ]]; then
gameDoc="$(find "$gamePath" -type f -iname 'manual.html' -or -iname 'manual.htm' | head -1)" gameDoc="$(find "$gamePath" -type f -iname 'manual.html' -or -iname 'manual.htm' | head -1)"
fi fi
@ -348,12 +389,14 @@ echo "Loading documentation, please wait..."
install_wine_bottle() { install_wine_bottle() {
# 32 bit installations work best and are the default here, if you need to override it, do it in the game specific installation steps. # 32 bit installations work best and are the default here, if you need to override it, do it in the game specific installation steps.
export WINEARCH="${WINEARCH:-win32}" export WINEARCH="${WINEARCH:-win32}"
if [[ -z "$bottle" ]]; then
local bottle="${game,,}" local bottle="${game,,}"
bottle="${bottle//[[:space:]]/-}" bottle="${bottle//[[:space:]]/-}"
if [[ -d "$HOME/.local/wine/${bottle}" ]]; then if [[ -d "$HOME/.local/wine/${bottle}" ]]; then
echo "$HOME/.local/wine/${bottle} exists. Please remove it before running this installer." echo "$HOME/.local/wine/${bottle} exists. Please remove it before running this installer."
exit 1 exit 1
fi fi
fi
mkdir -p "$HOME/.local/wine/${bottle}" mkdir -p "$HOME/.local/wine/${bottle}"
export WINEPREFIX="$HOME/.local/wine/${bottle}" export WINEPREFIX="$HOME/.local/wine/${bottle}"
# Arguments to the function are dependancies to be installed. # Arguments to the function are dependancies to be installed.
@ -435,13 +478,21 @@ game_removal() {
local wineExec="${game#*|}" local wineExec="${game#*|}"
wineExec="${wineExec%|*}" wineExec="${wineExec%|*}"
wineExec="${wineExec##*\\}" wineExec="${wineExec##*\\}"
# Confirm removal
get_bottle "${game%|*}"
# Make sure the game can be handled by remove
if [[ "${HOME}/.local/wine/${game%|*}" == "${WINEPREFIX}" ]]; then
read -rp "To remove the wine bottle \"${WINEPREFIX##*/}\" and all of its contents press enter. To cancel press control+c. " continue
# kill any previous existing wineservers for this prefix in case they didn't shut down properly. # kill any previous existing wineservers for this prefix in case they didn't shut down properly.
WINEPREFIX="${HOME}/.local/wine/${game%|*}" wineserver -k wineserver -k
# remove the game # remove the game
rm -rf "${HOME}/.local/wine/${game%|*}" rm -rf "${WINEPREFIX}"
else
read -rp "This bottle \"${WINEPREFIX##*/}\" contains multiple entries and must be handled manually. To remove only the launcher from the menu, press enter. To cancel press control+c. " continue
fi
# remove the launcher # remove the launcher
gawk -i inplace -vLine="${game//\\/\\\\}" '!index($0,Line)' "$configFile" gawk -i inplace -vLine="${game//\\/\\\\}" '!index($0,Line)' "$configFile"
echo "The selected game has been deleted." echo "The selected item has been deleted."
fi fi
exit 0 exit 0
} }
@ -479,7 +530,8 @@ kill_game() {
wineExec="${wineExec%|*}" wineExec="${wineExec%|*}"
wineExec="${wineExec##*\\}" wineExec="${wineExec##*\\}"
# kill the wine server. # kill the wine server.
WINEPREFIX="${HOME}/.local/wine/${game%|*}" wineserver -k get_bottle "${game%|*}"
wineserver -k
echo "The selected game has been stopped." echo "The selected game has been stopped."
fi fi
exit 0 exit 0
@ -510,7 +562,7 @@ game_launcher() {
if [[ $menuCode -eq 1 ]]; then if [[ $menuCode -eq 1 ]]; then
exit 0 exit 0
elif [[ $menuCode -eq 3 ]]; then elif [[ $menuCode -eq 3 ]]; then
documentation "${HOME}/.local/wine/${game%|*}" "$(echo "$game" | cut -d '|' -f2)" documentation "$game" "$(echo "$game" | cut -d '|' -f2)"
fi fi
else else
local game="$(grep "^${1}|" "${configFile}" 2> /dev/null)" local game="$(grep "^${1}|" "${configFile}" 2> /dev/null)"
@ -529,13 +581,15 @@ game_launcher() {
open_url "https://patreon.com/stormux" open_url "https://patreon.com/stormux"
exit 0 exit 0
fi fi
get_bottle "$game"
local winePath="${game#*|}" local winePath="${game#*|}"
winePath="${winePath%\\*.exe}" winePath="${winePath%\\*.exe}"
local wineExec="${game#*|}" local wineExec="${game#*|}"
wineExec="${wineExec%|*}" wineExec="${wineExec%|*}"
wineExec="${wineExec##*\\}" wineExec="${wineExec##*\\}"
# kill any previous existing wineservers for this prefix in case they didn't shut down properly. # kill any previous existing wineservers for this prefix in case they didn't shut down properly.
WINEPREFIX="${HOME}/.local/wine/${game%|*}" wineserver -k wineserver -k
# launch the game
# launch the game # launch the game
if command -v qjoypad &> /dev/null ; then if command -v qjoypad &> /dev/null ; then
mkdir -p ~/.qjoypad3 mkdir -p ~/.qjoypad3
@ -546,7 +600,6 @@ game_launcher() {
qjoypad -T "${game%|*}" 2> /dev/null & qjoypad -T "${game%|*}" 2> /dev/null &
fi fi
fi fi
export WINEPREFIX="${HOME}/.local/wine/${game%|*}"
# for games that require custom scripts before launch or custom launch parameters # for games that require custom scripts before launch or custom launch parameters
if [[ "$game" =~ sequence-storm ]]; then if [[ "$game" =~ sequence-storm ]]; then
[[ -x ~/.SequenceStormReader ]] && ~/.SequenceStormReader & [[ -x ~/.SequenceStormReader ]] && ~/.SequenceStormReader &
@ -626,14 +679,23 @@ gameList=(
"Battle of the Hunter" "Battle of the Hunter"
"Battle Zone" "Battle Zone"
"Beatstar Pro" "Beatstar Pro"
"BG Cribbage"
"BG Free Cell Solitaire"
"BG Hearts"
"BG Klondike Solitaire"
"BG LAP"
"BG Mine Sweeper"
"BG Penguin Solitaire"
"BG Scorpion Solitaire"
"BG Uno"
"Bloodshed" "Bloodshed"
"Bombercats" "Bombercats"
"Breed Memorial" #"Breed Memorial"
"Castaways" "Castaways"
"Castaways 2" "Castaways 2"
#"Chopper Challenge" #"Chopper Challenge"
"Christmas WhoopAss" "Christmas WhoopAss"
"Constant Battle" #"Constant Battle"
"Copter Mission" "Copter Mission"
"Crazy Party" "Crazy Party"
"Crazy Tennis" "Crazy Tennis"
@ -661,6 +723,7 @@ gameList=(
"Light Cars" "Light Cars"
"Lockpick" "Lockpick"
"Lone Wolf" "Lone Wolf"
"Lunimals"
"Manamon" "Manamon"
"Manamon 2" "Manamon 2"
#"MudSplat French" #"MudSplat French"
@ -706,6 +769,7 @@ gameList=(
"Undead Assault" "Undead Assault"
"Villains From Beyond" "Villains From Beyond"
"VIP Mud" "VIP Mud"
"Windows Attack"
#"World of War" #"World of War"
) )
@ -811,12 +875,85 @@ case "${game}" in
add_launcher "c:\Program Files\Battle Zone\ss.exe" add_launcher "c:\Program Files\Battle Zone\ss.exe"
;; ;;
"Beatstar Pro") "Beatstar Pro")
export bottle="oriol-gomez"
export winVer="win7" export winVer="win7"
install_wine_bottle speechsdk mf install_wine_bottle speechsdk mf
download "https://oriolgomez.com/games/beat_windows.zip" download "https://oriolgomez.com/games/beat_windows.zip"
unzip -d "$WINEPREFIX/drive_c/Program Files/Beatstar Pro" "${cache}/beat_windows.zip" unzip -d "$WINEPREFIX/drive_c/Program Files/Beatstar Pro" "${cache}/beat_windows.zip"
add_launcher "c:\Program Files\Beatstar Pro/beatstar.exe" add_launcher "c:\Program Files\Beatstar Pro/beatstar.exe"
;; ;;
"BG Cribbage")
bgInstaller="BGC32Setup12e.exe"
export bottle="bg"
get_installer "$bgInstaller"
install_wine_bottle speechsdk
wine "${cache}/${bgInstaller}" /silent
add_launcher "c:\Program Files\Games\CribbageB\CribbageB.exe"
;;
"BG Free Cell Solitaire")
bgInstaller="BGF32Setup20.exe"
export bottle="bg"
get_installer "$bgInstaller"
install_wine_bottle speechsdk
wine "${cache}/${bgInstaller}" /silent
add_launcher "c:\Program Files\Games\FreecellB\FreecellB.exe"
;;
"BG Klondike Solitaire")
bgInstaller="BGK32Setup10b.exe"
export bottle="bg"
get_installer "$bgInstaller"
install_wine_bottle speechsdk
wine "${cache}/${bgInstaller}" /silent
add_launcher "c:\Program Files\Games\KlondikeB\KlondikeB.exe"
;;
"BG Hearts")
bgInstaller="BGH32Setup10b.exe"
export bottle="bg"
get_installer "${bgInstaller}"
install_wine_bottle speechsdk
wine "${cache}/${bgInstaller}" /silent
add_launcher "c:\Program Files\Games\HeartsB\HeartsB.exe"
;;
"BG LAP")
bgInstaller="LAP32Setup10.exe"
export bottle="bg"
get_installer "${bgInstaller}"
install_wine_bottle speechsdk
wine "${cache}/${bgInstaller}" /silent
add_launcher "c:\Program Files\Games\LAP\LAP.exe"
;;
"BG Mine Sweeper")
bgInstaller="MSB32Setup10.exe"
export bottle="bg"
get_installer "${bgInstaller}"
install_wine_bottle speechsdk
wine "${cache}/${bgInstaller}" /silent
add_launcher "c:\Program Files\Games\MinesweeperB\MinesweeperB.exe"
;;
"BG Penguin Solitaire")
bgInstaller="BPS32Setup10c.exe"
export bottle="bg"
get_installer "$bgInstaller"
install_wine_bottle speechsdk
wine "${cache}/${bgInstaller}" /silent
add_launcher "c:\Program Files\Games\PenguinB\PenguinB.exe"
;;
"BG Scorpion Solitaire")
bgInstaller="BSS32Setup10.exe"
export bottle="bg"
get_installer "$bgInstaller"
install_wine_bottle speechsdk
wine "${cache}/${bgInstaller}" /silent
add_launcher "c:\Program Files\Games\ScorpionB\ScorpionB.exe"
;;
"BG Uno")
bgInstaller="BGU32Setup11a.exe"
export bottle="bg"
get_installer "${bgInstaller}"
install_wine_bottle speechsdk
wine "${cache}/${bgInstaller}" /silent
add_launcher "c:\Program Files\Games\UnoB\UnoB.exe"
;;
"Bloodshed") "Bloodshed")
export winVer="win7" export winVer="win7"
install_wine_bottle speechsdk install_wine_bottle speechsdk
@ -825,6 +962,7 @@ case "${game}" in
add_launcher "c:\Program Files\bloodshed.exe" add_launcher "c:\Program Files\bloodshed.exe"
;; ;;
"Bombercats") "Bombercats")
export bottle="oriol-gomez"
export winVer="win7" export winVer="win7"
install_wine_bottle install_wine_bottle
download "http://oriolgomez.com/games/bombercats_en.zip" download "http://oriolgomez.com/games/bombercats_en.zip"
@ -880,6 +1018,7 @@ case "${game}" in
add_launcher "c:\Program Files\Draconis Entertainment\Christmas Whoop Ass\wa.exe" add_launcher "c:\Program Files\Draconis Entertainment\Christmas Whoop Ass\wa.exe"
;; ;;
"Copter Mission") "Copter Mission")
export bottle="oriol-gomez"
export winVer="win7" export winVer="win7"
install_wine_bottle install_wine_bottle
download "http://oriolgomez.com/games/copter_en.zip" download "http://oriolgomez.com/games/copter_en.zip"
@ -901,6 +1040,7 @@ case "${game}" in
add_launcher "c:\Program Files\Crazytennis\crazytennis.exe" add_launcher "c:\Program Files\Crazytennis\crazytennis.exe"
;; ;;
"Danger on the Wheel") "Danger on the Wheel")
export bottle="oriol-gomez"
export winVer="win7" export winVer="win7"
install_wine_bottle speechsdk install_wine_bottle speechsdk
download "http://oriolgomez.com/games/wheel_en.zip" download "http://oriolgomez.com/games/wheel_en.zip"
@ -909,6 +1049,7 @@ case "${game}" in
add_launcher "c:\Program Files\danger on the wheel\game.exe" add_launcher "c:\Program Files\danger on the wheel\game.exe"
;; ;;
"Death on the Road") "Death on the Road")
export bottle="oriol-gomez"
export winVer="win7" export winVer="win7"
install_wine_bottle install_wine_bottle
download "http://oriolgomez.com/games/road_en.zip" download "http://oriolgomez.com/games/road_en.zip"
@ -978,6 +1119,7 @@ case "${game}" in
add_launcher "c:\Program Files\Finger Panic 1.0\FingerPanic.exe" add_launcher "c:\Program Files\Finger Panic 1.0\FingerPanic.exe"
;; ;;
"Fuck That Bird") "Fuck That Bird")
export bottle="oriol-gomez"
export winVer="win7" export winVer="win7"
install_wine_bottle install_wine_bottle
download "http://oriolgomez.com/games/bird_en.zip" download "http://oriolgomez.com/games/bird_en.zip"
@ -1015,6 +1157,7 @@ case "${game}" in
add_launcher "c:\Program Files\GMA Tank Commander\gtc.exe" add_launcher "c:\Program Files\GMA Tank Commander\gtc.exe"
;; ;;
"Hammer of Glory") "Hammer of Glory")
export bottle="oriol-gomez"
export winVer="win7" export winVer="win7"
install_wine_bottle speechsdk install_wine_bottle speechsdk
download "http://oriolgomez.com/games/hammer_en.zip" download "http://oriolgomez.com/games/hammer_en.zip"
@ -1065,6 +1208,7 @@ case "${game}" in
add_launcher "c:\Program Files\Hunter\HunterRun.exe" add_launcher "c:\Program Files\Hunter\HunterRun.exe"
;; ;;
"Insect Therapy") "Insect Therapy")
export bottle="oriol-gomez"
export winVer="win7" export winVer="win7"
install_wine_bottle install_wine_bottle
download "http://oriolgomez.com/games/insect_en.zip" download "http://oriolgomez.com/games/insect_en.zip"
@ -1139,6 +1283,17 @@ EOF
wineserver -w wineserver -w
add_launcher "c:\Program Files\Lone Wolf\lw.exe" add_launcher "c:\Program Files\Lone Wolf\lw.exe"
;; ;;
"Lunimals")
export winVer="win7"
export winetricksSettings="vd=1024x768"
install_wine_bottle vb6run dx8vb quartz speechsdk corefonts
download "https://kaldobsky.com/audiogames/lunimals.zip"
unzip -d "$WINEPREFIX/drive_c/Program Files/lunimals" "${cache}/lunimals.zip"
cp "$WINEPREFIX/drive_c/Program Files/lunimals/dx7vb.dll" "$WINEPREFIX/drive_c/windows/system32"
wine cmd.exe /c 'cd /d c:\windows\system32 && regsvr32 dx7vb.dll'
add_launcher "c:\Program Files\lunimals\Lunimals.exe"
echo "Note: Lunimals installed. Once you start the game, you must press tab until you hear sapi on to get speech." >&2
;;
"Manamon") "Manamon")
export winVer="win7" export winVer="win7"
install_wine_bottle speechsdk install_wine_bottle speechsdk
@ -1240,6 +1395,7 @@ EOF
add_launcher "c:\Program Files\revenge of the undead\rotu.exe" add_launcher "c:\Program Files\revenge of the undead\rotu.exe"
;; ;;
"Rhythm Rage") "Rhythm Rage")
export bottle="oriol-gomez"
export winVer="win7" export winVer="win7"
install_wine_bottle speechsdk install_wine_bottle speechsdk
download "http://oriolgomez.com/games/rr_en.zip" "https://stormgames.wolfe.casa/downloads/nvdaControllerClient32.dll" download "http://oriolgomez.com/games/rr_en.zip" "https://stormgames.wolfe.casa/downloads/nvdaControllerClient32.dll"
@ -1265,6 +1421,7 @@ EOF
add_launcher "c:\Program Files\RS Games Client\rsg.exe" add_launcher "c:\Program Files\RS Games Client\rsg.exe"
;; ;;
"Run For Your Life") "Run For Your Life")
export bottle="oriol-gomez"
export winVer="win7" export winVer="win7"
install_wine_bottle install_wine_bottle
download "http://oriolgomez.com/games/rfyl_en.zip" download "http://oriolgomez.com/games/rfyl_en.zip"
@ -1288,14 +1445,7 @@ EOF
add_launcher "c:\Program Files\scrolling battles\SBYW.exe" add_launcher "c:\Program Files\scrolling battles\SBYW.exe"
;; ;;
"Sequence Storm") "Sequence Storm")
read -p "Make sure sequence-storm-win64.zip is available in either your Downloads or Desktop directory and press enter to continue." continue get_installer "sequence-storm-win64.zip"
for i in ~/Downloads ~/Desktop ; do
find $i -type f -name 'sequence-storm-win64.zip' -exec cp -v {} "${cache}/" \;
done
if [[ ! -f "${cache}/sequence-storm-win64.zip" ]]; then
echo "couldn't find sequence-storm-win64.zip. Please download the file and try again."
exit 1
fi
export WINEARCH=win64 export WINEARCH=win64
export winVer="win10" export winVer="win10"
install_wine_bottle install_wine_bottle
@ -1411,6 +1561,7 @@ EOF
add_launcher "c:\Program Files\Lworks\The Great Toy Robbery\tgtr.exe" add_launcher "c:\Program Files\Lworks\The Great Toy Robbery\tgtr.exe"
;; ;;
"Thief") "Thief")
export bottle="oriol-gomez"
export winVer="win7" export winVer="win7"
install_wine_bottle install_wine_bottle
download "http://oriolgomez.com/games/thief_en.zip" download "http://oriolgomez.com/games/thief_en.zip"
@ -1506,6 +1657,7 @@ EOF
add_launcher "c:\Program Files\undead_assault\Undead Assault.exe" add_launcher "c:\Program Files\undead_assault\Undead Assault.exe"
;; ;;
"Villains From Beyond") "Villains From Beyond")
export bottle="oriol-gomez"
export winVer="win7" export winVer="win7"
install_wine_bottle speechsdk install_wine_bottle speechsdk
download "http://oriolgomez.com/games/villains_en.zip" download "http://oriolgomez.com/games/villains_en.zip"
@ -1526,6 +1678,13 @@ EOF
echo "To be sure that each new dialog has had time to complete, wait a second between each press of enter." echo "To be sure that each new dialog has had time to complete, wait a second between each press of enter."
echo "In each subsequent launch, you will need to hit enter a couple times before it starts speaking." echo "In each subsequent launch, you will need to hit enter a couple times before it starts speaking."
;; ;;
"Windows Attack")
get_installer "WA.exe"
export winVer="win7"
install_wine_bottle speechsdk
cp "${cache}/WA.exe" "$WINEPREFIX/drive_c/Program Files/"
add_launcher "c:\Program Files\WA.exe"
;;
"World of War") "World of War")
export winVer="win7" export winVer="win7"
install_wine_bottle speechsdk install_wine_bottle speechsdk