dcc/dcc.sh

122 lines
4.2 KiB
Bash
Raw Normal View History

2024-07-10 01:43:11 -04:00
#!/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"
2024-07-10 01:43:11 -04:00
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)"
2024-07-10 01:43:11 -04:00
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")
2024-07-10 01:43:11 -04:00
;;
"fabricate")
mkdir -p "${VIDPATH}"
COMMAND=("-timedemo" "${DEMO_IN}" "-viddump" "${VIDPATH}/${PWAD}_map${MAPSTR}.mp4")
2024-07-10 01:43:11 -04:00
;;
"put")
s3cmd put -P --content-type=binary/octet-stream "${DEMO_IN}" "s3://yrriban/doom/${MAPFILE}.lmp"
exit $?
;;
2024-07-10 01:43:11 -04:00
"pb")
ffplay "${HOME}/doom/fabricate/${PWAD}/${PWAD}_map${MAPSTR}.mp4"
2024-07-10 01:43:11 -04:00
exit $?
;;
2024-07-26 01:28:16 -04:00
"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")
2025-02-28 02:40:29 -05:00
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 $?
2024-11-11 13:58:47 -05:00
;;
"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 $?
2024-07-26 01:28:16 -04:00
;;
2024-07-10 01:43:11 -04:00
*)
echo "Unknown command $1." >&2
exit 1
esac
WADS=()
readarray -d '' WADS < <(find "${PWADPATH}" -maxdepth 1 -iname '*.wad' -print0 | sort -z)
2024-07-10 01:43:11 -04:00
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} \
2024-07-10 01:43:11 -04:00
"${IWAD[@]}" "${WADS[@]}" "${DEH[@]}" "${COMPLEVEL[@]}" "${OPTIONS[@]}" "${COMMAND[@]}"