#!/usr/bin/env bash
# annotate-draft.sh — burns lower-third overlays into the draft scene
# Usage: bash scripts/annotate-draft.sh
set -euo pipefail

CLIPS_DIR="$(dirname "$0")/storyboard-the-takeover/clips"
IN="$(dirname "$0")/storyboard-the-takeover/the-takeover-draft.mp4"
OUT="$(dirname "$0")/storyboard-the-takeover/the-takeover-annotated.mp4"

# Clip start times (cumulative from actual durations)
# 01: 0.00   02: 7.04   03: 12.08   04: 17.13   05: 24.17
# 06: 31.21  07: 38.25  08: 45.29   09: 52.33   10: 59.38

FONT_PATH="/usr/share/fonts/truetype/dejavu/DejaVuSans-Bold.ttf"
if [ ! -f "$FONT_PATH" ]; then
  FONT_PATH=$(fc-match --format="%{file}" "DejaVuSans:bold" 2>/dev/null || echo "")
fi

# Lower-third function:
# title shown 0.5s after clip starts, fades out 1s before clip ends
# Format: drawtext=text='LINE':x=40:y=h-90:fontsize=28:fontcolor=white:box=1:boxcolor=black@0.55:boxborderw=8:enable='between(t,START,END)'

make_lt() {
  local start=$1 dur=$2 title=$3 desc=$4
  local show_in show_out
  show_in=$(echo "$start + 0.5" | bc)
  show_out=$(echo "$start + $dur - 0.8" | bc)
  # Title line
  echo "drawtext=text='${title}':x=40:y=h-96:fontsize=26:fontcolor=white:fontfile=${FONT_PATH}:box=1:boxcolor=black@0.6:boxborderw=10:enable='between(t,${show_in},${show_out})',"
  # Description line
  echo "drawtext=text='${desc}':x=40:y=h-58:fontsize=19:fontcolor=#cccccc:fontfile=${FONT_PATH}:box=1:boxcolor=black@0.6:boxborderw=8:enable='between(t,${show_in},${show_out})'"
}

# Build the full filter_complex string
FILTER=$(cat << 'FILTERS'
drawtext=text='THE TAKEOVER':x=(w-text_w)/2:y=(h-text_h)/2:fontsize=52:fontcolor=white:fontfile=FONTFILE:box=1:boxcolor=black@0.65:boxborderw=14:enable='between(t,0.3,3.0)',
drawtext=text='MICHA — a psychological horror film':x=(w-text_w)/2:y=(h-text_h)/2+64:fontsize=22:fontcolor=#aaaaaa:fontfile=FONTFILE:box=1:boxcolor=black@0.65:boxborderw=8:enable='between(t,0.3,3.0)',
drawtext=text='01 · THE GATHERING':x=40:y=h-96:fontsize=26:fontcolor=white:fontfile=FONTFILE:box=1:boxcolor=black@0.6:boxborderw=10:enable='between(t,3.5,6.2)',
drawtext=text='She arrives. Something is already off.':x=40:y=h-58:fontsize=19:fontcolor=#cccccc:fontfile=FONTFILE:box=1:boxcolor=black@0.6:boxborderw=8:enable='between(t,3.5,6.2)',
drawtext=text='02 · NORA — BEFORE':x=40:y=h-96:fontsize=26:fontcolor=white:fontfile=FONTFILE:box=1:boxcolor=black@0.6:boxborderw=10:enable='between(t,7.5,11.3)',
drawtext=text='The last moments of herself.':x=40:y=h-58:fontsize=19:fontcolor=#cccccc:fontfile=FONTFILE:box=1:boxcolor=black@0.6:boxborderw=8:enable='between(t,7.5,11.3)',
drawtext=text='03 · THE SHIFT':x=40:y=h-96:fontsize=26:fontcolor=white:fontfile=FONTFILE:box=1:boxcolor=black@0.6:boxborderw=10:enable='between(t,12.5,16.3)',
drawtext=text='The glass moves to her palm. MICHA takes control.':x=40:y=h-58:fontsize=19:fontcolor=#cccccc:fontfile=FONTFILE:box=1:boxcolor=black@0.6:boxborderw=8:enable='between(t,12.5,16.3)',
drawtext=text='04 · MICHA SPEAKS':x=40:y=h-96:fontsize=26:fontcolor=white:fontfile=FONTFILE:box=1:boxcolor=black@0.6:boxborderw=10:enable='between(t,17.5,23.3)',
drawtext=text='Calibrated. Precise. The other woman smiles too quickly.':x=40:y=h-58:fontsize=19:fontcolor=#cccccc:fontfile=FONTFILE:box=1:boxcolor=black@0.6:boxborderw=8:enable='between(t,17.5,23.3)',
drawtext=text='05 · ASSESSMENT':x=40:y=h-96:fontsize=26:fontcolor=white:fontfile=FONTFILE:box=1:boxcolor=black@0.6:boxborderw=10:enable='between(t,24.5,30.3)',
drawtext=text='Not socialising. MICHA is mapping the room.':x=40:y=h-58:fontsize=19:fontcolor=#cccccc:fontfile=FONTFILE:box=1:boxcolor=black@0.6:boxborderw=8:enable='between(t,24.5,30.3)',
drawtext=text='06 · RECOGNITION':x=40:y=h-96:fontsize=26:fontcolor=white:fontfile=FONTFILE:box=1:boxcolor=black@0.6:boxborderw=10:enable='between(t,31.5,37.3)',
drawtext=text='He checks his phone. She already knows what he found.':x=40:y=h-58:fontsize=19:fontcolor=#cccccc:fontfile=FONTFILE:box=1:boxcolor=black@0.6:boxborderw=8:enable='between(t,31.5,37.3)',
drawtext=text='07 · THE WINDOW':x=40:y=h-96:fontsize=26:fontcolor=white:fontfile=FONTFILE:box=1:boxcolor=black@0.6:boxborderw=10:enable='between(t,38.5,44.3)',
drawtext=text='MICHA studies the body it now inhabits.':x=40:y=h-58:fontsize=19:fontcolor=#cccccc:fontfile=FONTFILE:box=1:boxcolor=black@0.6:boxborderw=8:enable='between(t,38.5,44.3)',
drawtext=text='08 · THE REFLECTION':x=40:y=h-96:fontsize=26:fontcolor=white:fontfile=FONTFILE:box=1:boxcolor=black@0.6:boxborderw=10:enable='between(t,45.5,51.3)',
drawtext=text='They blink — together. Exactly on time.':x=40:y=h-58:fontsize=19:fontcolor=#ff4444:fontfile=FONTFILE:box=1:boxcolor=black@0.6:boxborderw=8:enable='between(t,45.5,51.3)',
drawtext=text='09 · THE HALLWAY':x=40:y=h-96:fontsize=26:fontcolor=white:fontfile=FONTFILE:box=1:boxcolor=black@0.6:boxborderw=10:enable='between(t,52.5,58.3)',
drawtext=text='Nora surfaces. She opens the app.':x=40:y=h-58:fontsize=19:fontcolor=#cccccc:fontfile=FONTFILE:box=1:boxcolor=black@0.6:boxborderw=8:enable='between(t,52.5,58.3)',
drawtext=text='10 · THE MESSAGE':x=40:y=h-96:fontsize=26:fontcolor=white:fontfile=FONTFILE:box=1:boxcolor=black@0.6:boxborderw=10:enable='between(t,59.8,63.5)',
drawtext=text='MICHA and Nora — texting each other. From the same body.':x=40:y=h-58:fontsize=19:fontcolor=#ff4444:fontfile=FONTFILE:box=1:boxcolor=black@0.6:boxborderw=8:enable='between(t,59.8,63.5)'
FILTERS
)

# Replace FONTFILE placeholder with actual path
FILTER="${FILTER//FONTFILE/$FONT_PATH}"

echo "Rendering annotated video..."
ffmpeg -i "$IN" \
  -vf "$FILTER" \
  -c:v libx264 -preset fast -crf 20 -c:a copy \
  "$OUT" -y 2>&1 | tail -4

echo ""
echo "Output: $OUT"
ls -lh "$OUT"
