#!/usr/bin/env bash
# run.sh — Transport Tycoon LayerPlan: скрипт управления проектом
set -euo pipefail

ROOT="$(cd "$(dirname "$0")/.." && pwd)"
cd "$ROOT"

ACTION="${1:-help}"

case "$ACTION" in
    init)
        echo "📦 Initialisation du projet Transport Tycoon..."
        mkdir -p {core,systems,economy,routing,render,tests,state}
        echo "   ✓ Директории созданы"
        if [ ! -f "config.json" ]; then
            cat > config.json <<'JSON'
{
  "seed": 42,
  "map": { "width": 80, "height": 60 },
  "economy": {
    "r_efficiency": 0.85,
    "inflation_rate": 0.002,
    "base_prices": { "coal": 50, "iron": 80, "steel": 200, "food": 30, "goods": 150 }
  },
  "routing": {
    "max_vehicles_per_edge": 3,
    "deadlock_timeout_ticks": 50
  },
  "simulation": {
    "ticks_per_second": 60,
    "max_ticks": 100000
  }
}
JSON
            echo "   ✓ config.json создан"
        else
            echo "   ✓ config.json уже существует"
        fi
        echo "✅ Init terminé. Lancez: ./scripts/run.sh alpha"
        ;;
    
    alpha)
        echo "🚀 Lancement Alpha (L0+L1+L2)..."
        python3 scripts/alpha_init.py --seed "${2:-42}" --width "${3:-64}" --height "${4:-64}" --ticks "${5:-1000}"
        ;;
    
    test)
        echo "🧪 Тестирование core..."
        python3 scripts/alpha_init.py --test
        ;;
    
    json)
        echo "📊 Snapshot final en JSON..."
        python3 scripts/alpha_init.py --seed "${2:-42}" --ticks "${3:-100}" --json
        ;;
    
    snapshot)
        echo "📸 Sauvegarde d'un snapshot..."
        TICK="${2:-1000}"
        OUTFILE="state/snapshot-tick-${TICK}.json"
        python3 scripts/alpha_init.py --seed "${3:-42}" --ticks "$TICK" --json > "$OUTFILE"
        echo "   ✓ Snapshot sauvegardé: $OUTFILE"
        ;;
    
    status)
        echo "📋 État du projet:"
        echo "   Répertoire: $ROOT"
        if [ -f "state/last_run.json" ]; then
            cat "state/last_run.json"
        else
            echo "   ⚠️ Aucun run enregistré."
        fi
        if [ -f "state/progress.json" ]; then
            echo "   Progression:"
            python3 -c "import json; d=json.load(open('state/progress.json')); [print(f'     {k}: {v}') for k,v in d.items()]"
        fi
        ;;
    
    clean)
        echo "🧹 Nettoyage..."
        rm -rf state/*.json __pycache__ */__pycache__
        echo "   ✓ Fait"
        ;;
    
    watch)
        echo "👁️ Mode surveillance (Ctrl+C pour quitter)..."
        while true; do
            clear
            echo "=== LayerPlan — Surveillance ==="
            date
            echo ""
            python3 scripts/alpha_init.py --seed "${2:-42}" --ticks 50 2>&1
            sleep 2
        done
        ;;

    replay)
        SNAPSHOT="${2:-state/snapshot-latest.json}"
        if [ ! -f "$SNAPSHOT" ]; then
            echo "❌ Snapshot non trouvé: $SNAPSHOT"
            echo "   Utilisez: ./scripts/run.sh snapshot [ticks]"
            exit 1
        fi
        echo "🎬 Replay de $SNAPSHOT..."
        python3 -c "
import json
with open('$SNAPSHOT') as f:
    data = json.load(f)
print(f'Ticks: {data[\"tick\"]}')
print(f'Entités: {data[\"entity_count\"]}')
print(f'A(t): {data[\"economy\"][\"abundance_index\"]:.4f}')
print(f'R: {data[\"economy\"][\"r_efficiency\"]}')
"
        ;;

    help|*)
        echo "LayerPlan — Управление проектом Transport Tycoon"
        echo ""
        echo "Использование: ./scripts/run.sh <команда> [аргументы]"
        echo ""
        echo "Команды:"
        echo "  init           Создать структуру проекта и config.json"
        echo "  alpha          Запустить Alpha-симуляцию"
        echo "  test           Запустить тесты"
        echo "  json           Вывести финальный snapshot как JSON"
        echo "  snapshot [N]   Сохранить snapshot после N тиков"
        echo "  status         Показать состояние проекта"
        echo "  clean          Очистить временные файлы"
        echo "  watch          Режим наблюдения (обновление каждые 2с)"
        echo "  replay [file]  Воспроизвести snapshot"
        echo ""
        echo "Примеры:"
        echo "  ./scripts/run.sh init"
        echo "  ./scripts/run.sh alpha"
        echo "  ./scripts/run.sh alpha 42 100 100 5000"
        echo "  ./scripts/run.sh test"
        echo "  ./scripts/run.sh snapshot 5000"
        echo "  ./scripts/run.sh watch"
esac
