Initial commit.
This commit is contained in:
parent
96169b3bdd
commit
bc906ec5a5
228
audiogame-manager.sh
Executable file
228
audiogame-manager.sh
Executable file
@ -0,0 +1,228 @@
|
||||
#!/bin/bash
|
||||
|
||||
|
||||
# Wine configuration section
|
||||
|
||||
install_wine_bottle() {
|
||||
local bottle="${game,,}"
|
||||
bottle="${bottle//[[:space:]]/-}"
|
||||
mkdir -p "$HOME/.local/wine/${bottle}"
|
||||
export WINEPREFIX="$HOME/.local/wine/${bottle}"
|
||||
# Arguments to the function are dependancies to be installed.
|
||||
(wine msiexec /i z:/usr/share/wine/mono/$(ls -1 /usr/share/wine/mono/) /silent
|
||||
wine msiexec /i z:$(ls -1 /usr/share/wine/gecko/*x86.msi) /silent
|
||||
winetricks -q $@ ${winVer:-winxp} ${winetricksSettings}) | dialog --progressbox "Installing wine bottle, please wait..." -1 -1
|
||||
}
|
||||
|
||||
|
||||
# Install games
|
||||
game_installer() {
|
||||
# Find the last line of the script.
|
||||
local lastLine="$(grep -n '^exit 0' $0)"
|
||||
# Convert lastLine to a number andd increment it by 1.
|
||||
lastLine=${lastLine%%:*}
|
||||
lastLine=$((lastLine + 1))
|
||||
# An array of infromation from the end of the file, we'll parse it to make the menu.
|
||||
mapfile -t installedGames < <(tail +${lastLine} "$0" | sed '/^$/d' | cut -d '|' -f3)
|
||||
# Create the menu of installed games
|
||||
declare -a menuList
|
||||
for i in "${gameList[@]}" ; do
|
||||
local menuItem="$i"
|
||||
for j in "${installedGames[@]}" ; do
|
||||
if [[ "$j" == "$menuItem" ]]; then
|
||||
unset menuItem
|
||||
fi
|
||||
done
|
||||
if [[ -n "$menuItem" ]]; then
|
||||
menuList+=("$menuItem" "$menuItem")
|
||||
fi
|
||||
done
|
||||
if [[ ${#menuList[@]} -eq 0 ]]; then
|
||||
echo "All games are already installed."
|
||||
exit 0
|
||||
fi
|
||||
game="$(dialog --backtitle "Audio Game Installer" \
|
||||
--clear \
|
||||
--no-tags \
|
||||
--menu "Please select a game to install" 0 0 0 "${menuList[@]}" --stdout)"
|
||||
}
|
||||
|
||||
# launch games that are installed
|
||||
game_launcher() {
|
||||
# Find the last line of the script.
|
||||
local lastLine="$(grep -n '^exit 0' $0)"
|
||||
# Convert lastLine to a number andd increment it by 1.
|
||||
lastLine=${lastLine%%:*}
|
||||
lastLine=$((lastLine + 1))
|
||||
# An array of infromation from the end of the file, we'll parse it to make the menu.
|
||||
mapfile -t lines < <(tail +${lastLine} "$0" | sed '/^$/d')
|
||||
if [[ ${#lines} -eq 0 ]]; then
|
||||
echo "Install some games first."
|
||||
exit 0
|
||||
fi
|
||||
# Create the menu of installed games
|
||||
declare -a menuList
|
||||
for i in "${lines[@]}" ; do
|
||||
menuList+=("${i%|*}" "${i##*|}")
|
||||
done
|
||||
local game="$(dialog --backtitle "Audio Game Launcher" \
|
||||
--clear \
|
||||
--no-tags \
|
||||
--menu "Please select a game to play" 0 0 0 "${menuList[@]}" --stdout)"
|
||||
if [[ ${#game} -gt 0 ]]; then
|
||||
local winePath="${game#*|}"
|
||||
winePath="${winePath%\\*.exe}"
|
||||
local wineExec="${game#*|}"
|
||||
wineExec="${wineExec%|*}"
|
||||
wineExec="${wineExec##*\\}"
|
||||
WINEPREFIX="${HOME}/.local/wine/${game%|*}" wine start /d "${winePath}" "$wineExec"
|
||||
fi
|
||||
exit 0
|
||||
}
|
||||
|
||||
|
||||
# main script
|
||||
|
||||
#functions
|
||||
|
||||
add_launcher() {
|
||||
local launchSettings="${game,,}"
|
||||
launchSettings="${launchSettings//[[:space:]]/-}|${1}|${game}"
|
||||
# Find the last line of the script.
|
||||
local lastLine="$(grep -n '^exit 0' $0)"
|
||||
# Convert lastLine to a number andd increment it by 1.
|
||||
lastLine=${lastLine%%:*}
|
||||
lastLine=$((lastLine + 1))
|
||||
if ! tail +${lastLine} "$0" | grep -F -q -x "${launchSettings}" ; then
|
||||
echo "${launchSettings}" >> "$0"
|
||||
fi
|
||||
}
|
||||
|
||||
automate_installer() {
|
||||
# Function arguments are the keys to be pressed.
|
||||
declare -a keyList=("sleep 15")
|
||||
for i in ${@} ; do
|
||||
case "$i" in
|
||||
"alt+f") keyList+=("key ${i}");;
|
||||
"alt+i") keyList+=("sleep 10 key ${i}");;
|
||||
"alt+"*) keyList+=("key ${i} sleep 2");;
|
||||
*"+"*) keyList+=("key ${i} sleep 2");;
|
||||
*) xdotool type ${i};;
|
||||
esac
|
||||
done
|
||||
xdotool ${keyList[*]}
|
||||
}
|
||||
|
||||
# 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=win32
|
||||
# Turn off debug messages
|
||||
export WINEDEBUG="-all"
|
||||
# During installation, you can set winVer to the versions available.
|
||||
# To set winetricks arguments, such as virtual desktop, set the winetricksSettings variable.
|
||||
# Example: winetricksSettings="vd=1024x768"
|
||||
|
||||
# The list of games available for installation.
|
||||
# Use menu friendly names.
|
||||
gameList=(
|
||||
"Chopper Challenge"
|
||||
"Kitchensinc Games"
|
||||
"River Raiders"
|
||||
"Super Egg Hunt"
|
||||
"The Blind Swordsman"
|
||||
"Top Speed 3"
|
||||
"Q9"
|
||||
"RS Games"
|
||||
)
|
||||
|
||||
# With no arguments, open the game launcher.
|
||||
if [[ $# -eq 0 ]]; then
|
||||
game_launcher
|
||||
fi
|
||||
|
||||
# Array of command line arguments
|
||||
command=(
|
||||
"i" # Install
|
||||
)
|
||||
|
||||
while getopts "${command[@]//[[:space:]]/}" i ; do
|
||||
case "$i" in
|
||||
h) show_help;;
|
||||
i) game_installer
|
||||
esac
|
||||
done
|
||||
|
||||
# Install game based on the selection above.
|
||||
case "${game}" in
|
||||
"Chopper Challenge")
|
||||
install_wine_bottle vb6run dx8vb
|
||||
wget -O "$WINEPREFIX/drive_c/Program Files/chopper challenge setup.exe" "https://www.agarchive.net/games/XSight/chopper%20challenge%20setup.exe"
|
||||
wine "$WINEPREFIX/drive_c/Program Files/chopper challenge setup.exe" &
|
||||
sleep 5
|
||||
xdotool type y
|
||||
xdotool key --clearmodifiers --delay 1000 alt+n alt+n alt+n alt+i alt+f
|
||||
add_launcher "c:\Program Files\x-sight interactive\chopper challenge\Chopper.exe"
|
||||
echo 'Linux|n/a' >> "$WINEPREFIX/drive_c/Program Files/x-sight interactive/chopper challenge/config.dat" &
|
||||
rm -f "$WINEPREFIX/drive_c/Program Files/chopper challenge setup.exe"
|
||||
;;
|
||||
"Kitchensinc Games")
|
||||
install_wine_bottle vb6run speechsdk
|
||||
wget -O "$WINEPREFIX/drive_c/Program Files/Kitchensinc complete Setup.exe" "https://www.agarchive.net/games/kitchensinc/Kitchensinc%20complete%20Setup.exe"
|
||||
wine "$WINEPREFIX/drive_c/Program Files/Kitchensinc complete Setup.exe" &
|
||||
xdotool sleep 5 key y sleep 2 key alt+n sleep 2 key alt+n sleep 2 key alt+n sleep 2 key alt+n sleep 2 key alt+i sleep 10 key alt+f
|
||||
#automate_installer y alt+n alt+n alt+n alt+n alt+i alt+f
|
||||
add_launcher "c:\Program Files\Kitchen's Sink\gamemenu.exe"
|
||||
#rm -f "$WINEPREFIX/drive_c/Program Files/Kitchensinc complete Setup.exe"
|
||||
;;
|
||||
"River Raiders")
|
||||
install_wine_bottle
|
||||
wget -O "$WINEPREFIX/drive_c/Program Files/River Raiders.exe" "https://www.agarchive.net/games/XSight/River%20Raiders%201.3.5.exe"
|
||||
wine "c:\Program Files\River Raiders.exe" /silent &
|
||||
sleep 5
|
||||
xdotool type y
|
||||
xdotool key --delay 1000 alt+y alt+n alt+n alt+n alt+i alt+f
|
||||
rm -f "c:\Program Files\River Raiders.exe"
|
||||
add_launcher "c:\Program Files\River Raiders\raid.exe"
|
||||
;;
|
||||
"Super Egg Hunt")
|
||||
install_wine_bottle
|
||||
wget -O "$WINEPREFIX/drive_c/Program Files/superegghuntsetup.exe" "http://files.l-works.net/superegghuntsetup.exe"
|
||||
wine "$WINEPREFIX/drive_c/Program Files/superegghuntsetup.exe" /silent
|
||||
add_launcher "c:\Program Files\Lworks\super egg hunt\superegghunt.exe"
|
||||
rm -f "$WINEPREFIX/drive_c/Program Files/superegghuntsetup.exe"
|
||||
;;
|
||||
"The Blind Swordsman")
|
||||
install_wine_bottle
|
||||
wget -O "$WINEPREFIX/drive_c/Program Files/theblindswordsmanPC.zip" "http://www.evildogserver.com/theblindswordsman/theblindswordsmanPC.zip"
|
||||
unzip -d "$WINEPREFIX/drive_c/Program Files" "$WINEPREFIX/drive_c/Program Files/theblindswordsmanPC.zip"
|
||||
rm -f "$WINEPREFIX/drive_c/Program Files/theblindswordsmanPC.zip"
|
||||
add_launcher "c:\Program Files\TheBlindSwordsman.exe"
|
||||
;;
|
||||
"Top Speed 3")
|
||||
install_wine_bottle
|
||||
wget -O "$WINEPREFIX/drive_c/Program Files/Tspeed_3.0.3.exe" "https://github.com/PlayingintheDark/TopSpeed/releases/download/h/Tspeed_3.0.3.exe"
|
||||
wine "$WINEPREFIX/drive_c/Program Files/Tspeed_3.0.3.exe" /silent
|
||||
add_launcher "c:\Program Files\Playing in the dark\Top Speed 3\TopSpeed.exe"
|
||||
rm -f "$WINEPREFIX/drive_c/Program Files/Tspeed_3.0.3.exe"
|
||||
;;
|
||||
"Q9")
|
||||
install_wine_bottle
|
||||
wget -O "$WINEPREFIX/drive_c/Program Files/q9_english_installer.exe" "http://www.blastbay.com/q9_english_installer.exe"
|
||||
wine "$WINEPREFIX/drive_c/Program Files/q9_english_installer.exe" /silent
|
||||
add_launcher "c:\Program Files\Q9 Action Game\q9.exe"
|
||||
rm -f "$WINEPREFIX/drive_c/Program Files/q9_english_installer.exe"
|
||||
;;
|
||||
"RS Games")
|
||||
install_wine_bottle speechsdk
|
||||
wget -O "$WINEPREFIX/drive_c/Program Files/rsgames-client-setup-2.01.exe" "http://rsgames.org/rsdownloads/rsgclient/rsgames-client-setup-2.01.exe"
|
||||
wine "$WINEPREFIX/drive_c/Program Files/rsgames-client-setup-2.01.exe" /silent
|
||||
add_launcher "c:\Program Files\RS Games Client\rsg.exe"
|
||||
rm -f "$WINEPREFIX/drive_c/Program Files/rsgames-client-setup-2.01.exe"
|
||||
;;
|
||||
*)
|
||||
exit 0
|
||||
;;
|
||||
esac
|
||||
|
||||
# End of program, after the exit line, game information begins.
|
||||
# Field order bottle|path|Display Name
|
||||
exit 0
|
Loading…
Reference in New Issue
Block a user