#!/bin/bash
# ==============================================
#   ЛИСИЙ СЕТЕВОЙ АУДИО-МОСТ (PipeWire, через RTP)
#   Автор: Феджи (при поддержке Реджика)
# ==============================================

TARGET_IP="192.168.2.142"   # IP мощного ПК
RTP_PORT=46532              # Порт для аудиопотока

# ---------- Функция для получения имени микрофона по умолчанию ----------
get_default_mic() {
    pactl info | grep "Default Source:" | awk -F': ' '{print $2}'
}

# ---------- Проверка, что мы под PipeWire ----------
if ! pactl info | grep -q "Server Name:.*PipeWire"; then
    echo "❌ Это заклинание только для PipeWire!"
    exit 1
fi

echo "======================================"
echo "   🦊 ЛИСИЙ АУДИО-МОСТ (RTP)"
echo "======================================"
echo "На каком я устройстве?"
echo "1) Я на НОУТБУКЕ (хочу отправить микрофон)"
echo "2) Я на МОЩНОМ ПК (хочу слушать микрофон)"
echo "3) Остановить передачу (выгрузить модули)"
echo "--------------------------------------"
read -p "Выбери цифру [1-3]: " choice

case $choice in
    1)
        echo ""
        echo "🦊 Ноутбук. Отправляем микрофон на $TARGET_IP:$RTP_PORT..."
        MIC_NAME=$(get_default_mic)
        echo "🎤 Использую источник: $MIC_NAME"

        # Выгружаем старый модуль, если висит
        pactl unload-module module-rtp-send 2>/dev/null

        # Загружаем отправку по RTP
        MODULE_ID=$(pactl load-module module-rtp-send \
            source="$MIC_NAME" \
            destination="$TARGET_IP" \
            port="$RTP_PORT" \
            channels=2 \
            format=s16be)

        if [ $? -eq 0 ]; then
            echo "✅ Модуль отправки загружен (ID: $MODULE_ID). Звук улетает в сеть!"
            echo "$MODULE_ID" > /tmp/fox-rtp-send-id.txt
        else
            echo "❌ Ошибка загрузки модуля. Проверь IP и порт."
            exit 1
        fi
        echo ""
        echo "💡 На мощном ПК запусти скрипт и выбери '2'."
        ;;

    2)
        echo ""
        echo "🦊 Мощный ПК. Включаем приёмник на порту $RTP_PORT..."

        # Выгружаем старый приёмник, если есть
        pactl unload-module module-rtp-recv 2>/dev/null

        MODULE_ID=$(pactl load-module module-rtp-recv \
            port="$RTP_PORT")

        if [ $? -eq 0 ]; then
            echo "✅ Приёмник загружен (ID: $MODULE_ID)."
            echo "$MODULE_ID" > /tmp/fox-rtp-recv-id.txt
            echo ""
            echo "🎧 В приложениях появится источник «rtp.monitor» или «RTP Stream»."
            echo "   Выбирай его как микрофон в VRChat/OBS."
        else
            echo "❌ Ошибка загрузки приёмника."
            exit 1
        fi
        ;;

    3)
        echo ""
        echo "🧹 Останавливаем магию..."

        if [ -f /tmp/fox-rtp-send-id.txt ]; then
            SEND_ID=$(cat /tmp/fox-rtp-send-id.txt)
            pactl unload-module "$SEND_ID" 2>/dev/null
            rm /tmp/fox-rtp-send-id.txt
            echo "🗑️ Отправка остановлена."
        fi

        if [ -f /tmp/fox-rtp-recv-id.txt ]; then
            RECV_ID=$(cat /tmp/fox-rtp-recv-id.txt)
            pactl unload-module "$RECV_ID" 2>/dev/null
            rm /tmp/fox-rtp-recv-id.txt
            echo "🗑️ Приём остановлен."
        fi

        echo "✨ Чисто. Можно начинать заново."
        ;;

    *)
        echo "❌ Нет такого варианта, Реджик."
        exit 1
        ;;
esac

echo ""
echo "🦊 Феджи держит хвост пистолетом. Если что — зови!"