#!/usr/bin/env bash # Dialog setup: DIALOG_ITEM_HELP="" export DIALOGOPTS='--no-lines --visit-items' # Path where doom wads are stored doomPath="$(find /usr/share -type d -name "doom" 2> /dev/null | head -1)" # Path to gzdoom. gzdoom="$(command -v gzdoom)" # Version of the accessibility mod tobyVersion="6-1" doomGames=( # Unmodified Doom with accessibility. "${gzdoom} ${doomPath}/TobyAccMod_V${tobyVersion}.pk3" "FreeDoom" # Toby accessibility mods "${gzdoom} ${doomPath}/TobyAccMod_V${tobyVersion}.pk3 ${doomPath}/TobyDoomLevels.wad" "Freedoom Toby Mod" # OperationMDK "${gzdoom} ${doomPath}/TobyAccMod_V${tobyVersion}.pk3 ${doomPath}/OpMDK.wad" "Freedoom OperationMDK" ) gameOption="$(dialog --backtitle "Select your Doom!" \ --clear \ --no-tags \ --ok-label "Single Player" \ --cancel-label "Death Match" \ --extra-button \ --extra-label "co-op" \ --help-button \ --help-label "Exit" \ --menu "Please select one" 0 0 0 "${doomGames[@]}" --stdout)" buttonCode=$? case ${buttonCode} in 1) # Death match setup echo "Not yet implemented." exit 1 ;; 2) # Exit was pressed, so exit. exit 0 ;; 3) # Co-op setup echo "Not yet implemented." exit 1 ;; 0) exec stdbuf -oL ${gameOption} | stdbuf -oL grep -E \ -e '^[0-9]+\. ' \ -e '^"cl_run"' \ -e '^Game saved. ' \ -e '^A secret is revealed!$' \ -e '^MAP[0-9]*' \ -e '^Player was ' \ -e '^Please select a game wad \(or 0 to exit\):' \ -e '^You have no keys in your pocket!$' | stdbuf -oL sed \ -e 's/"cl_run" = "true"/run/' \ -e 's/"cl_run" = "false"/walk/' \ -e 's/MAP0\([1-9]\)/Map \1/' \ -e 's:.*/:Game saved. (:' | spd-say -e ;; esac exit 0