Compare commits

...

10 Commits

6 changed files with 60 additions and 42 deletions

1
.gitignore vendored
View File

@ -1 +1,2 @@
nohup.out
/.launch/*.sh /.launch/*.sh

View File

@ -1,4 +1,4 @@
tobyVersion="7-5" tobyVersion="8-0"
mkdir -p "${installPath}/doom" mkdir -p "${installPath}/doom"
doomPath="$(find /usr/share -type d -name "doom" 2> /dev/null)" doomPath="$(find /usr/share -type d -name "doom" 2> /dev/null)"
if [[ ${#doomPath} -lt 5 ]]; then if [[ ${#doomPath} -lt 5 ]]; then
@ -37,16 +37,16 @@ dialog --backtitle "Linux Game manager" \
fi fi
# The url breaks the normal download function # The url breaks the normal download function
download_named "keyshare-universal.pk3" "https://forum.zdoom.org/download/file.php?id=42262" download_named "keyshare-universal.pk3" "https://forum.zdoom.org/download/file.php?id=42262"
download "${ipfsGateway}/ipfs/QmRjg1GSBmVCCtPv8GRTZSjNNDMjHEXE2k5hKxoBnYMFKQ?filename=TobyAccessibilityMod_V${tobyVersion}.zip" download "${ipfsGateway}/ipfs/QmV1HFHH5qJMQ6RmEqL9ERngL85BUtUwFr9TgQHvqiUcBU?filename=TobyAccessibilityMod_V${tobyVersion}.zip"
[[ -e "${cache}/DoomMetalVol6.wad" ]] && mv "${cache}/DoomMetalVol6.wad" "${installPath}/doom" [[ -e "${cache}/DoomMetalVol6.wad" ]] && mv "${cache}/DoomMetalVol6.wad" "${installPath}/doom"
[[ -e "${cache}/DoomMetalVol7.wad" ]] && mv "${cache}/DoomMetalVol7.wad" "${installPath}/doom" [[ -e "${cache}/DoomMetalVol7.wad" ]] && mv "${cache}/DoomMetalVol7.wad" "${installPath}/doom"
unzip -n -d "${installPath}/doom" "${cache}/TobyAccessibilityMod_V${tobyVersion}.zip" unzip -n -d "${installPath}/doom" "${cache}/TobyAccessibilityMod_V${tobyVersion}.zip"
unzip -n -d "${installPath}/doom" "${cache}/OpMDK_ForV${tobyVersion}.zip" #unzip -n -d "${installPath}/doom" "${cache}/OpMDK_ForV${tobyVersion}.zip"
cp -v "${cache}/keyshare-universal.pk3" "${installPath}/doom" cp -v "${cache}/keyshare-universal.pk3" "${installPath}/doom"
rm -fv "${installPath}/doom/"*.{ahk,bat,exe,dll,ps1} rm -fv "${installPath}/doom/"*.{ahk,bat,exe,dll,ps1}
if [[ -e /usr/share/doom/blasphem.wad ]]; then #if [[ -e /usr/share/doom/blasphem.wad ]]; then
ln -s /usr/share/doom/blasphem.wad "${installPath}/doom/" #ln -s /usr/share/doom/blasphem.wad "${installPath}/doom/"
fi #fi
mkdir -p "${XDG_CONFIG_HOME:-$HOME/.config}/gzdoom" mkdir -p "${XDG_CONFIG_HOME:-$HOME/.config}/gzdoom"
cp "${installPath}/doom/TobyConfig.ini" "${XDG_CONFIG_HOME:-$HOME/.config}/gzdoom/gzdoom.ini" cp "${installPath}/doom/TobyConfig.ini" "${XDG_CONFIG_HOME:-$HOME/.config}/gzdoom/gzdoom.ini"
cp "${installPath}/doom/zcajun/bots.cfg" "${XDG_CONFIG_HOME:-$HOME/.config}/gzdoom/" cp "${installPath}/doom/zcajun/bots.cfg" "${XDG_CONFIG_HOME:-$HOME/.config}/gzdoom/"

View File

@ -0,0 +1,8 @@
check_architecture x86_64
get_installer "Ttc v3.0 linux.zip" "https://renzivan.itch.io/the-tornado-chicken"
unzip -d "${installPath}/The Tornado Chicken" "${cache}/Ttc v3.0 linux.zip"
chmod +x "${installPath}/The Tornado Chicken/Ttc"
echo "Note: When the game first starts it will be playing very loud music with the built in suboptimal voice."
echo "You are recommended to press page down several times to turn down the music, then go to settings and enable speech with screen reader, using speech dispatcher."
echo "You may then press page up to set the music to your liking."
alert

View File

@ -1,7 +1,8 @@
#!/usr/bin/env bash #!/usr/bin/env bash
launch_game() { launch_game() {
pushd "${doomPath}" pushd "${gamePath}"
#echo "exec stdbuf -oL ${gzdoom} ${@} | speak"
exec stdbuf -oL ${gzdoom} ${@} | speak exec stdbuf -oL ${gzdoom} ${@} | speak
popd popd
} }
@ -42,38 +43,46 @@ export gamePath=~/.local/games/doom
export doomPath="$(find /usr/share -type d -name "doom" 2> /dev/null | head -1)" export doomPath="$(find /usr/share -type d -name "doom" 2> /dev/null | head -1)"
# Path to gzdoom or yadoom. # Path to gzdoom or yadoom.
if [[ -x "yadoom" ]]; then if [[ -x "${BASH_SOURCE[0]%/*}/yadoom" ]]; then
export gzdoom=$(readlink -f "yadoom") export gzdoom="$(readlink -f "${BASH_SOURCE[0]%/*}/yadoom")"
else else
export gzdoom="$(command -v gzdoom)" export gzdoom="$(command -v gzdoom)"
fi fi
# Version of the accessibility mod # Version of the accessibility mod
export tobyVersion="7-5" export tobyVersion="8-0"
# Doom Addons # Doom Addons
mapfile -t doomAddons < <(find "$gamePath/Addons/DOOM/" -type f -name "TobyV${tobyVersion%%-*}_*.pk3" mapfile -t doomAddons < <(find "$gamePath/Addons/DOOM/" -type f -name "Toby*.pk3"
find "$gamePath/Addons/MENU/" -type f -name "TobyV${tobyVersion%%-*}_*.pk3" find "$gamePath/Addons/MENU/" -type f -name "Toby*.pk3"
) )
# Heretic Addons # Heretic Addons
mapfile -t hereticAddons < <(find "$gamePath/Addons/HERETIC/" -type f -name "TobyHeretic*.pk3" mapfile -t hereticAddons < <(find "$gamePath/Addons/HERETIC/" -type f -name "TobyHeretic*.pk3"
find "$gamePath/Addons/MENU/" -type f -name "TobyV${tobyVersion%%-*}_*.pk3" find "$gamePath/Addons/MENU/" -type f -name "Toby*.pk3"
)
# Hexen Addons
mapfile -t hexenAddons < <(find "$gamePath/Addons/HEXEN/" -type f -name "TobyHexen*.pk3"
find "$gamePath/Addons/MENU/" -type f -name "Toby*.pk3"
) )
doomGames=( doomGames=(
# Toby demo map # Toby demo map
"TobyAccMod_V${tobyVersion}.pk3 Toby-Demo-Level.wad ${doomAddons[*]}" "Freedoom Toby Demo Map" "${gamePath}/TobyAccMod_V${tobyVersion}.pk3 ${gamePath}/Addons/MAPS/Toby-Demo-Level.wad ${doomAddons[*]}" "Freedoom Toby Demo Map"
# Unmodified Doom with accessibility. # Unmodified Doom with accessibility.
"TobyAccMod_V${tobyVersion}.pk3 ${doomAddons[*]}" "Freedoom" "${gamePath}/TobyAccMod_V${tobyVersion}.pk3 ${doomAddons[*]}" "Freedoom"
# Toby accessibility mods # Toby accessibility mods
"TobyAccMod_V${tobyVersion}.pk3 TobyDoomLevels.wad Toby-Doom-Level-Music-Renamer.pk3 ${doomAddons[*]}" "Freedoom Toby Delux Map Pack" "${gamePath}/TobyAccMod_V${tobyVersion}.pk3 ${gamePath}/Addons/MAPS/TobyDoomLevels.wad ${doomAddons[*]}" "Freedoom Toby Delux Map Pack"
# OperationMDK # OperationMDK
"TobyAccMod_V${tobyVersion}.pk3 OpMDK.wad ${doomAddons[*]}" "Freedoom OperationMDK" "${gamePath}/TobyAccMod_V${tobyVersion}.pk3 ${gamePath}/OpMDK.wad ${doomAddons[*]}" "Freedoom OperationMDK"
# Unmodified Heretic with accessibility # Unmodified Heretic with accessibility
"TobyAccMod_V${tobyVersion}.pk3 ${hereticAddons[*]}" "Classic Heretic" "${gamePath}/TobyAccMod_V${tobyVersion}.pk3 ${hereticAddons[*]}" "Classic Heretic"
# Heretic accessibility mods # Heretic accessibility mods
"TobyAccMod_V${tobyVersion}.pk3 TobyHereticLevels.wad ${hereticAddons[*]}" "Toby Heretic" "${gamePath}/TobyAccMod_V${tobyVersion}.pk3 ${gamePath}/Addons/MAPS/TobyHereticLevels.wad ${hereticAddons[*]}" "Toby Heretic"
# Unmodified Hexen with accessibility
"${gamePath}/TobyAccMod_V${tobyVersion}.pk3 ${hexenAddons[*]}" "Classic Hexen"
# Heretic accessibility mods
"${gamePath}/TobyAccMod_V${tobyVersion}.pk3 ${gamePath}/Addons/MAPS/TobyHexen.pk3 ${hexenAddons[*]}" "Toby Hexen"
"custom_game" "Custom Game" "custom_game" "Custom Game"
) )
@ -90,6 +99,8 @@ export antiGrepStrings=(
'-e' 'key card' '-e' 'key card'
'-e' '^New PDA Entry:' '-e' '^New PDA Entry:'
'-e' "^(As |Computer Voice:|Holy|I |I've|Monorail|Sector |Ugh|What|Where)" '-e' "^(As |Computer Voice:|Holy|I |I've|Monorail|Sector |Ugh|What|Where)"
'-e' 'Script warning, "'
'-e' 'Tried to define'
) )
export sedStrings=('-E' export sedStrings=('-E'
@ -190,7 +201,7 @@ case ${buttonCode} in
1) 1)
# Death match setup # Death match setup
# Ignore the choice of map made above # Ignore the choice of map made above
gameOption="${gamePath}/TobyAccMod_V${tobyVersion}.pk3 ${gamePath}/TobyDeathArena_V1-0.wad ""$gamePath/Addons/TobyV${tobVersion%%-*}_"* gameOption="${gamePath}/TobyAccMod_V${tobyVersion}.pk3 ${gamePath}/Addons/MAPS/TobyDeathArena_V1-5.wad ""$gamePath/Addons/DOOM/TobyV*_"*
ipAddress="$(dialog --backtitle "Deathmatch Options" \ ipAddress="$(dialog --backtitle "Deathmatch Options" \
--clear \ --clear \
--no-tags \ --no-tags \
@ -217,7 +228,9 @@ case ${buttonCode} in
"5" "Ocean Fortress (2-4 players)" "5" "Ocean Fortress (2-4 players)"
"6" "Water Treatment Facility (2-4 players)" "6" "Water Treatment Facility (2-4 players)"
"7" "Phobos Base Site 4 (2-4 players)" "7" "Phobos Base Site 4 (2-4 players)"
"8" "Hangar Bay 18 (2-4 players)") "8" "Hangar Bay 18 (2-4 players)"
"9" "Garden of Demon (2-4 players)"
"10" "Outpost 69 (2-4 players)")
# Array of how many players a given map supports in dialog rangebox syntax # Array of how many players a given map supports in dialog rangebox syntax
declare -a mapPlayers=( declare -a mapPlayers=(
[1]="2 4" [1]="2 4"
@ -227,7 +240,9 @@ case ${buttonCode} in
[5]="2 4" [5]="2 4"
[6]="2 4" [6]="2 4"
[7]="2 4" [7]="2 4"
[8]="2 4") [8]="2 4"
[9]="2 4"
[10]="2 4")
map="$(dialog --backtitle "Select Map" \ map="$(dialog --backtitle "Select Map" \
--clear \ --clear \
--no-tags \ --no-tags \
@ -325,7 +340,7 @@ case ${buttonCode} in
'-extratic' '-dup' '3' '-extratic' '-dup' '3'
) )
fi fi
pushd "${doomPath}" pushd "${gamePath}"
launch_game ${gameOption} "${flags[@]}" launch_game ${gameOption} "${flags[@]}"
;; ;;
0) 0)

View File

@ -0,0 +1,3 @@
check_architecture x86_64
pushd "${installPath}/The Tornado Chicken"
${fex}./Ttc

View File

@ -152,7 +152,7 @@ desktop_launcher() {
'Name=Linux game manager' 'Name=Linux game manager'
'GenericName=Linux game Manager' 'GenericName=Linux game Manager'
'Comment=Install and launch games that are accessible to the blind' 'Comment=Install and launch games that are accessible to the blind'
"Exec=${terminal} -t \"Linux Game Manager\" -e \"/usr/bin/bash -c 'nohup $(readlink -e "$0") 2> /dev/null'\"" "Exec=${terminal} -t \"Linux Game Manager\" -e \"/usr/bin/bash -c 'pushd $(readlink -e "${0%/*}");nohup ./"${0##*/}" 2> /dev/null'\""
'Terminal=false' 'Terminal=false'
'Type=Application' 'Type=Application'
'StartupNotify=false' 'StartupNotify=false'
@ -233,15 +233,14 @@ download() {
fi fi
;; ;;
"wad") "wad")
if [[ "$(file -b --mime-type "${cache}/${dest}")" != "application/octet-stream" ]]; then if [[ "$(file -b --mime-type "${cache}/${dest}")" == "application/octet-stream" ]]; then
downloadError=0 downloadError=0
fi fi
;; ;;
*) *)
# Add HTML check for other file types # Add HTML check for other file types
if file -b "${cache}/${dest}" | grep -q "HTML document" ; then if file -b "${cache}/${dest}" | grep -q "HTML document" ; then
echo "File not found: \"$i\" (HTML document probably 404)" downloadError=1
downloadError=0
fi fi
;; ;;
esac esac
@ -333,19 +332,9 @@ help() {
# main script # main script
add_launcher() {
local launchSettings="${game}|${*}"
if ! grep -F -q -x "${launchSettings}" "${configFile}" 2> /dev/null ; then
echo "${launchSettings}" >> "${configFile}"
sort -o "${configFile}" "${configFile}"
fi
}
# Install games # Install games
game_installer() { game_installer() {
# Get list of installed games from config file
mapfile -t installedGames < <(sed '/^$/d' "${configFile}" 2> /dev/null | cut -d '|' -f1)
# Create the menu of available games by reading from .install directory # Create the menu of available games by reading from .install directory
declare -a menuList declare -a menuList
# Get all .sh files from .install directory, excluding those starting with #, and sort them # Get all .sh files from .install directory, excluding those starting with #, and sort them
@ -425,11 +414,13 @@ game_removal() {
exit 0 exit 0
fi fi
# Create the menu of installed games # Create the menu of installed games
local selectedGame="$(dialog --backtitle "Linux Game Manager" \ local selectedGame
selectedGame=$(dialog --backtitle "Linux Game Manager" \
--clear \ --clear \
--no-tags \ --no-tags \
--menu "Please select a game to delete" 0 0 0 "${menuList[@]}" --stdout)" --menu "Please select a game to delete" 0 0 0 "${menuList[@]}" --stdout)
[[ $? -ne 0 ]] && exit 0 exitCode=$?
[[ $exitCode -ne 0 ]] && exit 0
# Get the actual game file paths # Get the actual game file paths
local gameName="${selectedGame##*/}" local gameName="${selectedGame##*/}"
gameName="${gameName%.sh}" gameName="${gameName%.sh}"
@ -439,12 +430,12 @@ game_removal() {
gameInstallPath="$(grep -F "installPath" "$gameFile" | grep -v 'pushd' | head -n1)" gameInstallPath="$(grep -F "installPath" "$gameFile" | grep -v 'pushd' | head -n1)"
gameInstallPath="${gameInstallPath#*/}" gameInstallPath="${gameInstallPath#*/}"
gameInstallPath="${installPath}/${gameInstallPath%/*}" gameInstallPath="${installPath}/${gameInstallPath%/*}"
if [[ -z "$gameInstallPath" ]]; then if [[ -z "$gameInstallPath" ]] || [[ "${gameInstallPath%%/}" == "$installPath" ]]; then
# No install path found, just remove from list # No install path found, just remove from list
dialog --backtitle "Linux Game Manager" \ dialog --backtitle "Linux Game Manager" \
--yesno "This will remove the game from your game list, but will not remove any files. Do you want to continue?" -1 -1 || exit 0 --yesno "This will remove the game from your game list, but will not remove any files. Do you want to continue?" -1 -1 || exit 0
# Remove only the .sh symlink # Remove only the .sh symlink
rm -f "${0%/*}/.launch/${gameName}.sh" | \ rm -fv "${0%/*}/.launch/${gameName}.sh" | \
dialog --backtitle "Linux Game Manager" \ dialog --backtitle "Linux Game Manager" \
--progressbox "Removing game from list..." -1 -1 --progressbox "Removing game from list..." -1 -1
else else