Add a system for loading custom mods for TobyDoom. Place scripts in the TobyCustom directory. Included three examples using Project Brutality.
This commit is contained in:
@ -6,33 +6,33 @@ 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)"
|
||||
export doomPath="$(find /usr/share -type d -name "doom" 2> /dev/null | head -1)"
|
||||
|
||||
# Path to gzdoom.
|
||||
gzdoom="$(command -v gzdoom)"
|
||||
export gzdoom="$(command -v gzdoom)"
|
||||
|
||||
# Version of the accessibility mod
|
||||
tobyVersion="7-0"
|
||||
tobyShortVersion=7
|
||||
export tobyVersion="7-0"
|
||||
|
||||
|
||||
doomGames=(
|
||||
export doomGames=(
|
||||
# Toby demo map
|
||||
"TobyAccMod_V${tobyVersion}.pk3 Toby-Demo-Level.wad ""$doomPath/Addons/TobyV${tobyShortVersion}_"* "Freedoom Toby Demo Map"
|
||||
"TobyAccMod_V${tobyVersion}.pk3 Toby-Demo-Level.wad ""$doomPath/Addons/TobyV${tobyVersion%%-*}_"* "Freedoom Toby Demo Map"
|
||||
# Unmodified Doom with accessibility.
|
||||
"TobyAccMod_V${tobyVersion}.pk3 ""$doomPath/Addons/TobyV${tobyShortVersion}_"* "Freedoom"
|
||||
"TobyAccMod_V${tobyVersion}.pk3 ""$doomPath/Addons/TobyV${tobyVersion%%-*}_"* "Freedoom"
|
||||
# Toby accessibility mods
|
||||
"TobyAccMod_V${tobyVersion}.pk3 TobyDoomLevels.wad ""$doomPath/Addons/TobyV${tobyShortVersion}_"* "Freedoom Toby Delux Map Pack"
|
||||
"TobyAccMod_V${tobyVersion}.pk3 TobyDoomLevels.wad ""$doomPath/Addons/TobyV${tobyVersion%%-*}_"* "Freedoom Toby Delux Map Pack"
|
||||
# OperationMDK
|
||||
"TobyAccMod_V${tobyVersion}.pk3 OpMDK.wad ""$doomPath/Addons/TobyV${tobyShortVersion}_"* "Freedoom OperationMDK"
|
||||
"TobyAccMod_V${tobyVersion}.pk3 OpMDK.wad ""$doomPath/Addons/TobyV${tobyVersion%%-*}_"* "Freedoom OperationMDK"
|
||||
"custom_game" "Custom Game"
|
||||
)
|
||||
|
||||
antiGrepStrings=(
|
||||
export antiGrepStrings=(
|
||||
'-E' '-v'
|
||||
'-e' '^Resolution:'
|
||||
)
|
||||
|
||||
grepStrings=(
|
||||
export grepStrings=(
|
||||
'-E'
|
||||
'-e' '^[A-Z][0-9a-z]+: .+'
|
||||
'-e' 'is now known as'
|
||||
@ -56,13 +56,34 @@ grepStrings=(
|
||||
'-e' '^You have no keys in your pocket!$'
|
||||
)
|
||||
|
||||
sedStrings=(
|
||||
export sedStrings=(
|
||||
'-e' 's/"cl_run" = "true"/run/'
|
||||
'-e' 's/"cl_run" = "false"/walk/'
|
||||
'-e' 's:.*/:Game saved. (:'
|
||||
)
|
||||
|
||||
gameOption="$(dialog --backtitle "Select your Doom!" \
|
||||
custom_game() {
|
||||
mapfile -t customGames < <(find "${0%/*}/TobyCustom/" -type f -iname '*.sh')
|
||||
declare -a customMenu
|
||||
for i in "${customGames[@]}" ; do
|
||||
customMenu+=("$i")
|
||||
title="${i##*/}"
|
||||
title="${title//_/ }"
|
||||
title="${title%.*}"
|
||||
customMenu+=("$title")
|
||||
done
|
||||
customGame="$(dialog --backtitle "Select your Custom Doom!" \
|
||||
--clear \
|
||||
--no-tags \
|
||||
--menu "Please select one" 0 0 0 "${customMenu[@]}" --stdout)"
|
||||
buttonCode=$?
|
||||
if [[ $buttonCode -eq 1 ]]; then
|
||||
exit 0
|
||||
fi
|
||||
source "${customGame}"
|
||||
}
|
||||
|
||||
export gameOption="$(dialog --backtitle "Select your Doom!" \
|
||||
--clear \
|
||||
--no-tags \
|
||||
--ok-label "Single Player" \
|
||||
@ -81,7 +102,7 @@ case ${buttonCode} in
|
||||
1)
|
||||
# Death match setup
|
||||
# Ignore the choice of map made above
|
||||
gameOption="${doomPath}/TobyAccMod_V${tobyVersion}.pk3 ${doomPath}/TobyDeathArena_V1-0.wad ""$doomPath/Addons/TobyV${tobyShortVersion}_"*
|
||||
gameOption="${doomPath}/TobyAccMod_V${tobyVersion}.pk3 ${doomPath}/TobyDeathArena_V1-0.wad ""$doomPath/Addons/TobyV${tobVersion%%-*}_"*
|
||||
ipAddress="$(dialog --backtitle "Deathmatch Options" \
|
||||
--clear \
|
||||
--no-tags \
|
||||
@ -221,8 +242,12 @@ case ${buttonCode} in
|
||||
exec stdbuf -oL ${gzdoom} ${gameOption} "${flags[@]}" | while IFS= read -r l ; do echo "$l" | { grep "${grepStrings[@]}" | grep "${antiGrepStrings[@]}" | sed "${sedStrings[@]}" | spd-say -e ${spd_module} ${spd_pitch} ${spd_rate} ${spd_voice} ${spd_volume} --; } ; echo "$l";done
|
||||
;;
|
||||
0)
|
||||
pushd "${doomPath}"
|
||||
exec stdbuf -oL ${gzdoom} ${gameOption} | while IFS= read -r l ; do echo "$l" | { grep "${grepStrings[@]}" | grep "${antiGrepStrings[@]}" | sed "${sedStrings[@]}" | spd-say -e ${spd_module} ${spd_pitch} ${spd_rate} ${spd_voice} ${spd_volume} -- > /dev/null 2>&1; }; echo "$l";done
|
||||
if [[ "${gameOption%% *}" == "custom_game" ]]; then
|
||||
custom_game
|
||||
else
|
||||
pushd "${doomPath}"
|
||||
exec stdbuf -oL ${gzdoom} ${gameOption} | while IFS= read -r l ; do echo "$l" | { grep "${grepStrings[@]}" | grep "${antiGrepStrings[@]}" | sed "${sedStrings[@]}" | spd-say -e ${spd_module} ${spd_pitch} ${spd_rate} ${spd_voice} ${spd_volume} -- > /dev/null 2>&1; }; echo "$l";done
|
||||
fi
|
||||
;;
|
||||
esac
|
||||
|
||||
|
Reference in New Issue
Block a user