74 lines
1.9 KiB
Bash
Executable file
74 lines
1.9 KiB
Bash
Executable file
#!/bin/bash
|
|
|
|
if [[ $# != 3 ]]; then
|
|
echo "Usage: $0 <command> <pwad> <map>" >&2
|
|
exit 1
|
|
fi
|
|
|
|
PWAD="$2"
|
|
MAP="$3"
|
|
COMMAND=()
|
|
PWADPATH="${HOME}/doom/pwads/${PWAD}"
|
|
DEMOPATH="${HOME}/doom/demos/${PWAD}"
|
|
VIDPATH="${HOME}/doom/fabricate/${PWAD}"
|
|
MAPSTR="$(tr ' ' '-' <<< "${MAP}")"
|
|
|
|
if ! [[ -e "${PWADPATH}" ]]; then
|
|
echo "PWAD ${PWAD} not found." >&2
|
|
exit 1
|
|
fi
|
|
|
|
case $1 in
|
|
"play")
|
|
;;
|
|
"record")
|
|
mkdir -p "${DEMOPATH}"
|
|
COMMAND=("-record" "${DEMOPATH}/${PWAD}_map${MAPSTR}.lmp")
|
|
;;
|
|
"fabricate")
|
|
mkdir -p "${VIDPATH}"
|
|
COMMAND=("-timedemo" "${DEMOPATH}/${PWAD}_map${MAPSTR}.lmp" "-viddump" "${VIDPATH}/${PWAD}_map${MAPSTR}.mp4")
|
|
;;
|
|
"pb")
|
|
ffplay "${HOME}/doom/fabricate/${PWAD}/${PWAD}_map${MAPSTR}.mp4"
|
|
exit $?
|
|
;;
|
|
"ss")
|
|
convert x: +repage -crop '1280x720+0+0' -gravity center +repage "${HOME}/doom/fabricate/${PWAD}/${PWAD}_map${MAPSTR}_base.png"
|
|
exit $?
|
|
;;
|
|
*)
|
|
echo "Unknown command $1." >&2
|
|
exit 1
|
|
esac
|
|
|
|
WADS=()
|
|
readarray -d '' WADS < <(find "${PWADPATH}" -maxdepth 1 -iname '*.wad' -print0 | sort -z)
|
|
if ! [[ -z "${WADS[@]}" ]]; then
|
|
WADS=("-file" "${WADS[@]}")
|
|
# otherwise, assume it's an iwad alone.
|
|
fi
|
|
|
|
IWAD=("-iwad" "${HOME}/doom/iwads/DOOM2.WAD")
|
|
if [[ -e "${PWADPATH}/iwad" ]]; then
|
|
IWAD=("-iwad" "${HOME}/doom/iwads/$(< "${PWADPATH}/iwad").WAD")
|
|
fi
|
|
|
|
readarray -d '' DEH < <(find "${PWADPATH}" -maxdepth 1 -iname '*.deh' -print0)
|
|
if ! [[ -z "${DEH[@]}" ]]; then
|
|
DEH=("-deh" "${DEH[@]}")
|
|
fi
|
|
if ! [[ -e "${PWADPATH}/complevel" ]]; then
|
|
echo "No complevel set in PWAD dir ${PWADPATH}." >&2
|
|
exit 1
|
|
fi
|
|
COMPLEVEL=("-complevel" "$(< "${PWADPATH}/complevel")")
|
|
OPTIONS=()
|
|
if [[ -e "${PWADPATH}/options" ]]; then
|
|
OPTIONS=("-assign" "$(< "${PWADPATH}/options")")
|
|
fi
|
|
|
|
# TODO: properly split MAP into an array in case this is a UDoom wad.
|
|
dsda-doom \
|
|
-skill 4 -warp ${MAP} \
|
|
"${IWAD[@]}" "${WADS[@]}" "${DEH[@]}" "${COMPLEVEL[@]}" "${OPTIONS[@]}" "${COMMAND[@]}"
|