Started restructuring of the game launcher function. This included splitting it into 3 functions as well as redoing the way games are read from the games.conf file. There very well may be bugs.
This commit is contained in:
parent
9ce0c4c1e3
commit
f459791fda
@ -834,11 +834,132 @@ kill_game() {
|
|||||||
exit 0
|
exit 0
|
||||||
}
|
}
|
||||||
|
|
||||||
|
# for games that require custom scripts before launch or custom launch parameters
|
||||||
|
custom_launch_parameters() {
|
||||||
|
if [[ "${game[0]}" == "dragon-pong" ]]; then
|
||||||
|
"${0%/*}/speech/speak_window_title.sh" DragonPong.exe &
|
||||||
|
pushd "$(winepath "$winePath")"
|
||||||
|
wine "$wineExec"
|
||||||
|
popd
|
||||||
|
exit 0
|
||||||
|
fi
|
||||||
|
if [[ "${game[0]}" == "executioner's-rage" ]]; then
|
||||||
|
find "${WINEPREFIX}/drive_c/Program Files" -type f -name 'nvdaControllerClient64.dll' -exec cp -v "${cache}/nvda2speechd64.dll" "{}" \;
|
||||||
|
fi
|
||||||
|
if [[ "${game[0]}" == "haunted-party" ]]; then
|
||||||
|
pgrep -u "$USER" nvda2speechd &> /dev/null || ${XDG_DATA_HOME:-$HOME/.local/share}/audiogame-manager/nvda2speechd &
|
||||||
|
fi
|
||||||
|
if [[ "${game[0]}" == "laser-breakout" ]]; then
|
||||||
|
pgrep -u "$USER" nvda2speechd &> /dev/null || ${XDG_DATA_HOME:-$HOME/.local/share}/audiogame-manager/nvda2speechd &
|
||||||
|
"${0%/*}/speech/speak_window_title.sh" play.exe &
|
||||||
|
fi
|
||||||
|
if [[ "${game[0]}" == "light-battles" ]]; then
|
||||||
|
pgrep -u "$USER" nvda2speechd &> /dev/null || ${XDG_DATA_HOME:-$HOME/.local/share}/audiogame-manager/nvda2speechd &
|
||||||
|
fi
|
||||||
|
if [[ "${game[0]}" == "mist-world" ]]; then
|
||||||
|
"${0%/*}/speech/speak_window_title.sh" mw.exe &
|
||||||
|
pgrep -u "$USER" nvda2speechd &> /dev/null || ${XDG_DATA_HOME:-$HOME/.local/share}/audiogame-manager/nvda2speechd &
|
||||||
|
fi
|
||||||
|
if [[ "${game[0]}" == "oh-shit" ]]; then
|
||||||
|
pgrep -u "$USER" nvda2speechd &> /dev/null || ${XDG_DATA_HOME:-$HOME/.local/share}/audiogame-manager/nvda2speechd &
|
||||||
|
fi
|
||||||
|
if [[ "${game[0]}" == "bokurano-daibouken-2" ]]; then
|
||||||
|
"${0%/*}/speech/clipboard_translator.sh" play.exe bokurano-daibouken2 &
|
||||||
|
fi
|
||||||
|
if [[ "${game[0]}" == "bokurano-daibouken" ]]; then
|
||||||
|
"${0%/*}/speech/clipboard_translator.sh" play.exe bokurano-daibouken &
|
||||||
|
fi
|
||||||
|
if [[ "${game[0]}" =~ "bokurano-daibouken-3" ]]; then
|
||||||
|
dictPath="$(winepath "${winePath}")"
|
||||||
|
if [[ -r "${cache}/bk3-dict.dat" ]] && [[ ! -d "${dictPath}/dict" ]]; then
|
||||||
|
cp "${cache}/bk3-dict.dat" "${dictPath}/dict.dat"
|
||||||
|
fi
|
||||||
|
if [[ -d "${dictPath}/dict" ]]; then
|
||||||
|
if [[ ! -e "${dictPath}/data/nvdaControllerClient.dll" ]]; then
|
||||||
|
cp "${cache}/nvda2speechd32.dll" "${dictPath}/data/nvdaControllerClient.dll"
|
||||||
|
fi
|
||||||
|
pgrep -u "$USER" nvda2speechd &> /dev/null || ${XDG_DATA_HOME:-$HOME/.local/share}/audiogame-manager/nvda2speechd &
|
||||||
|
fi
|
||||||
|
if [[ ! -d "${dictPath}/dict" ]] && [[ ! -r "${cache}/bk3-dict.dat" ]]; then
|
||||||
|
find "${WINEPREFIX}/drive_c/nyanchangame/bk3" -type f -name 'nvdaControllerClient.dll' -exec rm -v "{}" \;
|
||||||
|
"${0%/*}/speech/clipboard_translator.sh" play.exe bokurano-daibouken3 &
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
if [[ "${game[0]}" == "bop-it-emulator" ]]; then
|
||||||
|
"${0%/*}/speech/speak_window_title.sh" bop.exe &
|
||||||
|
fi
|
||||||
|
if [[ "${game[0]}" == "breu2-shadow-hunt" ]]; then
|
||||||
|
pgrep -u "$USER" nvda2speechd &> /dev/null || ${XDG_DATA_HOME:-$HOME/.local/share}/audiogame-manager/nvda2speechd &
|
||||||
|
fi
|
||||||
|
if [[ "${game[0]}" == "road-to-rage" ]]; then
|
||||||
|
"${0%/*}/speech/speak_window_title.sh" trtr.exe &
|
||||||
|
fi
|
||||||
|
if [[ "${game[0]}" == "sequence-storm" ]]; then
|
||||||
|
"${0%/*}/speech/clipboard_reader.sh" SequenceStorm &
|
||||||
|
fi
|
||||||
|
if [[ "${game[0]}" == "shadow-line" ]]; then
|
||||||
|
find "${WINEPREFIX}/drive_c/" -type f -name 'nvdaControllerClient.dll' -exec rm -v "{}" \;
|
||||||
|
"${0%/*}/speech/clipboard_translator.sh" play_sr.exe shadow-line &
|
||||||
|
fi
|
||||||
|
if [[ "${game[0]}" == "sketchbook" ]]; then
|
||||||
|
find "${WINEPREFIX}" -type f -name 'nvdaControllerClient32.dll' -exec cp -v "${cache}/nvdaControllerClient32.dll" "{}" \;
|
||||||
|
fi
|
||||||
|
if [[ "${game[0]}" == "audiodisc" ]]; then
|
||||||
|
wine "$winePath\\$wineExec"
|
||||||
|
exit 0
|
||||||
|
fi
|
||||||
|
if [[ "${game[0]}" == "audioquake" ]]; then
|
||||||
|
wine "$winePath\\$wineExec"
|
||||||
|
exit 0
|
||||||
|
fi
|
||||||
|
if [[ "${game[0]}" == "screaming-strike-2" ]]; then
|
||||||
|
pushd "$(winepath "$winePath")"
|
||||||
|
${wine} "$wineExec"
|
||||||
|
popd
|
||||||
|
exit 0
|
||||||
|
fi
|
||||||
|
if [[ "${game[0]}" == "warsim" ]]; then
|
||||||
|
pushd "$(winepath "$winePath")"
|
||||||
|
wine "$wineExec"
|
||||||
|
popd
|
||||||
|
exit 0
|
||||||
|
fi
|
||||||
|
if [[ "${game[0]}" == "interceptor" ]]; then
|
||||||
|
pushd "$(winepath "$winePath")"
|
||||||
|
wine "$wineExec"
|
||||||
|
popd
|
||||||
|
exit 0
|
||||||
|
fi
|
||||||
|
if [[ "${game[0]}" == "vip-mud" ]]; then
|
||||||
|
pgrep -u "$USER" nvda2speechd &> /dev/null || ${XDG_DATA_HOME:-$HOME/.local/share}/audiogame-manager/nvda2speechd &
|
||||||
|
fi
|
||||||
|
if [[ -d "${WINEPREFIX}/drive_c/windows/syswow64" ]]; then
|
||||||
|
pgrep -u "$USER" nvda2speechd &> /dev/null || ${XDG_DATA_HOME:-$HOME/.local/share}/audiogame-manager/nvda2speechd &
|
||||||
|
# switch to wine64 for 64 bit prefix.
|
||||||
|
[[ "${wine}" == "wine" ]] && export wine="wine64"
|
||||||
|
fi
|
||||||
|
if [[ "${game[0]}" == "the-great-toy-robbery" ]] ; then
|
||||||
|
pgrep -u "$USER" nvda2speechd &> /dev/null || ${XDG_DATA_HOME:-$HOME/.local/share}/audiogame-manager/nvda2speechd &
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
create_game_array() {
|
||||||
|
# Game array 0 bottle, 1 path, 2 title, 3+ flags
|
||||||
|
for i in "${lines[@]}" ; do
|
||||||
|
if [[ "${game}" =~ ^${i} ]]; then
|
||||||
|
# This is weird. Why do I have to set game to i before making the array?
|
||||||
|
game="$i"
|
||||||
|
IFS='|' read -ra game <<< "$i"
|
||||||
|
break
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
}
|
||||||
|
|
||||||
# launch games that are installed
|
# launch games that are installed
|
||||||
game_launcher() {
|
game_launcher() {
|
||||||
# For use by update scripts that want to source functions in this file.
|
# For use by update scripts that want to source functions in this file.
|
||||||
[[ "$agmNoLaunch" == "true" ]] && return
|
[[ "$agmNoLaunch" == "true" ]] && return
|
||||||
mapfile -t lines < <(sed '/^$/d' "${configFile}" 2> /dev/null)
|
mapfile -t lines < <(sed -e '/^$/d' -e '/^ *#/d' "${configFile}" 2> /dev/null)
|
||||||
if [[ ${#lines} -eq 0 ]]; then
|
if [[ ${#lines} -eq 0 ]]; then
|
||||||
echo "Install some games first."
|
echo "Install some games first."
|
||||||
exit 0
|
exit 0
|
||||||
@ -847,7 +968,8 @@ game_launcher() {
|
|||||||
# Create the menu of installed games
|
# Create the menu of installed games
|
||||||
declare -a menuList
|
declare -a menuList
|
||||||
for i in "${lines[@]}" ; do
|
for i in "${lines[@]}" ; do
|
||||||
menuList+=("${i%|*}" "${i##*|}")
|
IFS='|' read -ra gameInfo <<< "$i"
|
||||||
|
menuList+=("${gameInfo[0]}|${gameInfo[1]}" "${gameInfo[2]}")
|
||||||
done
|
done
|
||||||
menuList+=("Donate" "Donate")
|
menuList+=("Donate" "Donate")
|
||||||
menuList+=("Become a Patron" "Become a Patron")
|
menuList+=("Become a Patron" "Become a Patron")
|
||||||
@ -864,156 +986,46 @@ game_launcher() {
|
|||||||
elif [[ $menuCode -eq 3 ]]; then
|
elif [[ $menuCode -eq 3 ]]; then
|
||||||
documentation "$game" "$(echo "$game" | cut -d '|' -f2)"
|
documentation "$game" "$(echo "$game" | cut -d '|' -f2)"
|
||||||
fi
|
fi
|
||||||
|
create_game_array
|
||||||
else
|
else
|
||||||
local game="$(grep "^${1}|" "${configFile}" 2> /dev/null)"
|
create_game_array
|
||||||
game="${game%|*}"
|
|
||||||
if [[ -z "$game" ]]; then
|
if [[ -z "$game" ]]; then
|
||||||
echo "Game $1 not found."
|
echo "Game $1 not found."
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
if [[ ${#game} -gt 0 ]]; then
|
if [[ ${#game[@]} -gt 0 ]]; then
|
||||||
if [[ "$game" == "Donate" ]]; then
|
if [[ "${game[0]}" == "Donate" ]]; then
|
||||||
open_url "https://ko-fi.com/stormux"
|
open_url "https://ko-fi.com/stormux"
|
||||||
exit 0
|
exit 0
|
||||||
fi
|
fi
|
||||||
if [[ "$game" == "Become a Patron" ]]; then
|
if [[ "${game[0]}" == "Become a Patron" ]]; then
|
||||||
open_url "https://2mb.games/product/2mb-patron/"
|
open_url "https://2mb.games/product/2mb-patron/"
|
||||||
exit 0
|
exit 0
|
||||||
fi
|
fi
|
||||||
get_bottle "$game"
|
get_bottle "${game[0]}"
|
||||||
# make sure wine is actually set to something
|
# make sure wine is actually set to something
|
||||||
export wine="${wine:-wine}"
|
export wine="${wine:-wine}"
|
||||||
echo -n "launching "
|
echo -n "launching "
|
||||||
${wine} --version
|
${wine} --version
|
||||||
local winePath="${game#*|}"
|
|
||||||
winePath="${winePath%\\*.exe}"
|
|
||||||
local wineExec="${game#*|}"
|
|
||||||
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.
|
||||||
${wine}server -k
|
${wine}server -k
|
||||||
# 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
|
||||||
touch "${HOME}/.qjoypad3/${game%|*}.lyt"
|
touch "${HOME}/.qjoypad3/${game[2]}.lyt"
|
||||||
# A | separated list of games that should not start with qjoypad.
|
# A | separated list of games that should not start with qjoypad.
|
||||||
noQjoypadGames="a-hero's-call"
|
noQjoypadGames="A Hero's Call"
|
||||||
if [[ "${noqjoypad}" != "true" ]] && ! [[ "${game}" =~ ${noQjoypadGames} ]]; then
|
if [[ "${noqjoypad}" != "true" ]] && ! [[ "${game[2]}" =~ ${noQjoypadGames} ]]; then
|
||||||
if pgrep qjoypad &> /dev/null ; then
|
if pgrep qjoypad &> /dev/null ; then
|
||||||
qjoypad -T "${game%|*}" 2> /dev/null
|
qjoypad -T "${game[2]}" 2> /dev/null
|
||||||
else
|
else
|
||||||
qjoypad -T "${game%|*}" 2> /dev/null &
|
qjoypad -T "${game[2]}" 2> /dev/null &
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
# for games that require custom scripts before launch or custom launch parameters
|
custom_launch_parameters
|
||||||
if [[ "$game" =~ dragon-pong ]]; then
|
${wine:-wine} start /d "${game[1]%\\*}" "${game[1]##*\\}" /realtime
|
||||||
"${0%/*}/speech/speak_window_title.sh" DragonPong.exe &
|
|
||||||
pushd "$(winepath "$winePath")"
|
|
||||||
wine "$wineExec"
|
|
||||||
popd
|
|
||||||
exit 0
|
|
||||||
fi
|
|
||||||
if [[ "$game" =~ executioner\'s ]]; then
|
|
||||||
find "${WINEPREFIX}/drive_c/Program Files" -type f -name 'nvdaControllerClient64.dll' -exec cp -v "${cache}/nvda2speechd64.dll" "{}" \;
|
|
||||||
fi
|
|
||||||
if [[ "$game" =~ haunted-party ]]; then
|
|
||||||
pgrep -u "$USER" nvda2speechd &> /dev/null || ${XDG_DATA_HOME:-$HOME/.local/share}/audiogame-manager/nvda2speechd &
|
|
||||||
fi
|
|
||||||
if [[ "$game" =~ laser-breakout ]]; then
|
|
||||||
pgrep -u "$USER" nvda2speechd &> /dev/null || ${XDG_DATA_HOME:-$HOME/.local/share}/audiogame-manager/nvda2speechd &
|
|
||||||
"${0%/*}/speech/speak_window_title.sh" play.exe &
|
|
||||||
fi
|
|
||||||
if [[ "$game" =~ light-battles ]]; then
|
|
||||||
pgrep -u "$USER" nvda2speechd &> /dev/null || ${XDG_DATA_HOME:-$HOME/.local/share}/audiogame-manager/nvda2speechd &
|
|
||||||
fi
|
|
||||||
if [[ "$game" =~ mist-world ]]; then
|
|
||||||
"${0%/*}/speech/speak_window_title.sh" mw.exe &
|
|
||||||
pgrep -u "$USER" nvda2speechd &> /dev/null || ${XDG_DATA_HOME:-$HOME/.local/share}/audiogame-manager/nvda2speechd &
|
|
||||||
fi
|
|
||||||
if [[ "$game" =~ oh-shit ]]; then
|
|
||||||
pgrep -u "$USER" nvda2speechd &> /dev/null || ${XDG_DATA_HOME:-$HOME/.local/share}/audiogame-manager/nvda2speechd &
|
|
||||||
fi
|
|
||||||
if [[ "$game" =~ ^bokurano-daibouken-2\| ]]; then
|
|
||||||
"${0%/*}/speech/clipboard_translator.sh" play.exe bokurano-daibouken2 &
|
|
||||||
fi
|
|
||||||
if [[ "$game" =~ ^bokurano-daibouken\| ]]; then
|
|
||||||
"${0%/*}/speech/clipboard_translator.sh" play.exe bokurano-daibouken &
|
|
||||||
fi
|
|
||||||
if [[ "$game" =~ bokurano-daibouken-3 ]]; then
|
|
||||||
dictPath="$(winepath "${winePath}")"
|
|
||||||
if [[ -r "${cache}/bk3-dict.dat" ]] && [[ ! -d "${dictPath}/dict" ]]; then
|
|
||||||
cp "${cache}/bk3-dict.dat" "${dictPath}/dict.dat"
|
|
||||||
fi
|
|
||||||
if [[ -d "${dictPath}/dict" ]]; then
|
|
||||||
if [[ ! -e "${dictPath}/data/nvdaControllerClient.dll" ]]; then
|
|
||||||
cp "${cache}/nvda2speechd32.dll" "${dictPath}/data/nvdaControllerClient.dll"
|
|
||||||
fi
|
|
||||||
pgrep -u "$USER" nvda2speechd &> /dev/null || ${XDG_DATA_HOME:-$HOME/.local/share}/audiogame-manager/nvda2speechd &
|
|
||||||
fi
|
|
||||||
if [[ ! -d "${dictPath}/dict" ]] && [[ ! -r "${cache}/bk3-dict.dat" ]]; then
|
|
||||||
find "${WINEPREFIX}/drive_c/nyanchangame/bk3" -type f -name 'nvdaControllerClient.dll' -exec rm -v "{}" \;
|
|
||||||
"${0%/*}/speech/clipboard_translator.sh" play.exe bokurano-daibouken3 &
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
if [[ "$game" =~ bop-it-emulator ]]; then
|
|
||||||
"${0%/*}/speech/speak_window_title.sh" bop.exe &
|
|
||||||
fi
|
|
||||||
if [[ "$game" =~ breu2-shadow-hunt ]]; then
|
|
||||||
pgrep -u "$USER" nvda2speechd &> /dev/null || ${XDG_DATA_HOME:-$HOME/.local/share}/audiogame-manager/nvda2speechd &
|
|
||||||
fi
|
|
||||||
if [[ "$game" =~ road-to-rage\| ]]; then
|
|
||||||
"${0%/*}/speech/speak_window_title.sh" trtr.exe &
|
|
||||||
fi
|
|
||||||
if [[ "$game" =~ sequence-storm ]]; then
|
|
||||||
"${0%/*}/speech/clipboard_reader.sh" SequenceStorm &
|
|
||||||
fi
|
|
||||||
if [[ "$game" =~ shadow-line ]]; then
|
|
||||||
find "${WINEPREFIX}/drive_c/" -type f -name 'nvdaControllerClient.dll' -exec rm -v "{}" \;
|
|
||||||
"${0%/*}/speech/clipboard_translator.sh" play_sr.exe shadow-line &
|
|
||||||
fi
|
|
||||||
if [[ "$game" =~ sketchbook ]]; then
|
|
||||||
find "${WINEPREFIX}" -type f -name 'nvdaControllerClient32.dll' -exec cp -v "${cache}/nvdaControllerClient32.dll" "{}" \;
|
|
||||||
fi
|
|
||||||
if [[ "$game" =~ audiodisc ]]; then
|
|
||||||
wine "$winePath\\$wineExec"
|
|
||||||
exit 0
|
|
||||||
fi
|
|
||||||
if [[ "$game" =~ audioquake ]]; then
|
|
||||||
wine "$winePath\\$wineExec"
|
|
||||||
exit 0
|
|
||||||
fi
|
|
||||||
if [[ "$game" =~ screaming-strike-2 ]]; then
|
|
||||||
pushd "$(winepath "$winePath")"
|
|
||||||
${wine} "$wineExec"
|
|
||||||
popd
|
|
||||||
exit 0
|
|
||||||
fi
|
|
||||||
if [[ "$game" =~ warsim ]]; then
|
|
||||||
pushd "$(winepath "$winePath")"
|
|
||||||
wine "$wineExec"
|
|
||||||
popd
|
|
||||||
exit 0
|
|
||||||
fi
|
|
||||||
if [[ "$game" =~ interceptor ]]; then
|
|
||||||
pushd "$(winepath "$winePath")"
|
|
||||||
wine "$wineExec"
|
|
||||||
popd
|
|
||||||
exit 0
|
|
||||||
fi
|
|
||||||
if [[ "$game" =~ vip-mud ]]; then
|
|
||||||
pgrep -u "$USER" nvda2speechd &> /dev/null || ${XDG_DATA_HOME:-$HOME/.local/share}/audiogame-manager/nvda2speechd &
|
|
||||||
fi
|
|
||||||
if [[ -d "${WINEPREFIX}/drive_c/windows/syswow64" ]]; then
|
|
||||||
pgrep -u "$USER" nvda2speechd &> /dev/null || ${XDG_DATA_HOME:-$HOME/.local/share}/audiogame-manager/nvda2speechd &
|
|
||||||
# switch to wine64 for 64 bit prefix.
|
|
||||||
[[ "${wine}" == "wine" ]] && export wine="wine64"
|
|
||||||
fi
|
|
||||||
if [[ "$game" =~ the-great-toy-robbery ]] ; then
|
|
||||||
pgrep -u "$USER" nvda2speechd &> /dev/null || ${XDG_DATA_HOME:-$HOME/.local/share}/audiogame-manager/nvda2speechd &
|
|
||||||
fi
|
|
||||||
${wine:-wine} start /d "${winePath}" "$wineExec" /realtime
|
|
||||||
fi
|
fi
|
||||||
exit 0
|
exit 0
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user