121 lines
4.2 KiB
Bash
Executable file
121 lines
4.2 KiB
Bash
Executable file
#!/bin/bash
|
|
|
|
if [[ $# != 3 ]]; then
|
|
echo "Usage: $0 <command> <pwad> <map>" >&2
|
|
exit 1
|
|
fi
|
|
|
|
PWAD="$2"
|
|
MAP="$3"
|
|
COMMAND=()
|
|
DSDA="${HOME}/dsda-doom/dsda-0.28.3"
|
|
PWADPATH="${HOME}/doom/pwads/${PWAD}"
|
|
DEMOPATH="${HOME}/doom/demos/${PWAD}"
|
|
VIDPATH="${HOME}/doom/fabricate/${PWAD}"
|
|
MAPSTR="$(tr ' ' '-' <<< "${MAP}")"
|
|
MAPFILE="${PWAD}_map${MAPSTR}"
|
|
DEMONAME="${MAPFILE}.lmp"
|
|
DEMO_IN="$(ls "${DEMOPATH}/${MAPFILE}"* -t | head -1)"
|
|
|
|
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" "${DEMO_IN}" "-viddump" "${VIDPATH}/${PWAD}_map${MAPSTR}.mp4")
|
|
;;
|
|
"put")
|
|
s3cmd put -P --content-type=binary/octet-stream "${DEMO_IN}" "s3://yrriban/doom/${MAPFILE}.lmp"
|
|
exit $?
|
|
;;
|
|
"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 $?
|
|
;;
|
|
"check")
|
|
identify "${HOME}/doom/fabricate/${PWAD}/${PWAD}_map${MAPSTR}_base.png"
|
|
display "${HOME}/doom/fabricate/${PWAD}/${PWAD}_map${MAPSTR}_base.png"
|
|
exit $?
|
|
;;
|
|
"nmtext")
|
|
LABEL="$(printf "%s\nUV-Max Demo" "$(cat -)")"
|
|
convert -background transparent -fill white -font "League-Spartan-Bold" -strokewidth 10 \
|
|
-stroke "srgb(176,0,0)" -interline-spacing -10 -pointsize 64 -trim +repage -border 5 \
|
|
-bordercolor transparent -gravity NorthWest \
|
|
label:"${LABEL}" -stroke none -strokewidth 0 -annotate +8+6 "${LABEL}" \
|
|
"${HOME}/doom/fabricate/${PWAD}/${PWAD}_map${MAPSTR}_text.png"
|
|
exit $?
|
|
;;
|
|
"text")
|
|
LABEL="$(printf "MAP%s: %s\nUV-Max Demo" "${MAPSTR}" "$(cat -)")"
|
|
convert -background transparent -fill white -font "League-Spartan-Bold" -strokewidth 10 \
|
|
-stroke "srgb(176,0,0)" -interline-spacing -10 -pointsize 64 -trim +repage -border 5 \
|
|
-bordercolor transparent -gravity NorthWest \
|
|
label:"${LABEL}" -stroke none -strokewidth 0 -annotate +8+6 "${LABEL}" \
|
|
"${HOME}/doom/fabricate/${PWAD}/${PWAD}_map${MAPSTR}_text.png"
|
|
exit $?
|
|
;;
|
|
"tysontext")
|
|
read TEXT
|
|
LABEL="$(printf "MAP%s: %s\nUV-Tyson-Max Demo" "${MAPSTR}" "${TEXT}")"
|
|
convert -background transparent -fill white -font "League-Spartan-Bold" -strokewidth 10 \
|
|
-stroke "srgb(176,0,0)" -interline-spacing -10 -pointsize 64 -trim +repage -border 5 \
|
|
-bordercolor transparent -gravity NorthWest \
|
|
label:"${LABEL}" -stroke none -strokewidth 0 -annotate +8+6 "${LABEL}" \
|
|
"${HOME}/doom/fabricate/${PWAD}/${PWAD}_map${MAPSTR}_text.png"
|
|
exit $?
|
|
;;
|
|
"thumb")
|
|
convert "${VIDPATH}/${PWAD}_map${MAPSTR}_base.png" "${VIDPATH}/M_DOOM_scaled.png" -gravity NorthWest -composite "${VIDPATH}/${PWAD}_map${MAPSTR}_text.png" -gravity SouthWest -composite "${VIDPATH}/${PWAD}_map${MAPSTR}_final.png"
|
|
exit $?
|
|
;;
|
|
"dithumb")
|
|
convert "${VIDPATH}/${PWAD}_map${MAPSTR}_base.png" "${VIDPATH}/M_DOOM_scaled.png" -gravity NorthWest -composite "${VIDPATH}/${PWAD}_map${MAPSTR}_text.png" -gravity SouthWest -composite "${HOME}/doom/fabricate/doomed_index.png" -gravity NorthEast -composite "${VIDPATH}/${PWAD}_map${MAPSTR}_final.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}" -skill 4 -warp ${MAP} \
|
|
"${IWAD[@]}" "${WADS[@]}" "${DEH[@]}" "${COMPLEVEL[@]}" "${OPTIONS[@]}" "${COMMAND[@]}"
|