# Build Script dla Ping-Pong Game
# Minifikuje i obfuskuje kod JavaScript dla produkcji
# Wymagania: Node.js, npm, javascript-obfuscator

Write-Host "🔨 Building Neon Ping-Pong Game..." -ForegroundColor Cyan

# Sprawdź czy javascript-obfuscator jest zainstalowany
$obfuscatorInstalled = Get-Command javascript-obfuscator -ErrorAction SilentlyContinue

if (-not $obfuscatorInstalled) {
    Write-Host "⚠️  javascript-obfuscator nie jest zainstalowany." -ForegroundColor Yellow
    Write-Host "Instaluję javascript-obfuscator..." -ForegroundColor Yellow
    npm install -g javascript-obfuscator
}

# Utwórz folder dist jeśli nie istnieje
$distPath = Join-Path $PSScriptRoot "dist"
if (-not (Test-Path $distPath)) {
    New-Item -ItemType Directory -Path $distPath | Out-Null
}

$distJsPath = Join-Path $distPath "js"
if (-not (Test-Path $distJsPath)) {
    New-Item -ItemType Directory -Path $distJsPath | Out-Null
}

# Lista plików do obfuskacji
$jsFiles = @(
    "js/audio-manager.js",
    "js/bot-ai.js",
    "js/game.js",
    "js/ui-manager.js"
)

Write-Host "📦 Obfuskacja plików JavaScript..." -ForegroundColor Green

foreach ($file in $jsFiles) {
    $inputFile = Join-Path $PSScriptRoot $file
    $fileName = Split-Path $file -Leaf
    $outputFile = Join-Path $distJsPath $fileName
    
    Write-Host "   Processing: $fileName" -ForegroundColor Gray
    
    # Obfuskacja z agresywnymi ustawieniami
    javascript-obfuscator $inputFile `
        --output $outputFile `
        --compact true `
        --control-flow-flattening true `
        --control-flow-flattening-threshold 0.75 `
        --dead-code-injection true `
        --dead-code-injection-threshold 0.4 `
        --debug-protection true `
        --debug-protection-interval 2000 `
        --disable-console-output true `
        --identifier-names-generator hexadecimal `
        --log false `
        --rename-globals true `
        --rotate-string-array true `
        --self-defending true `
        --string-array true `
        --string-array-encoding 'rc4' `
        --string-array-threshold 0.75 `
        --transform-object-keys true `
        --unicode-escape-sequence true
}

Write-Host "✅ Build zakończony pomyślnie!" -ForegroundColor Green
Write-Host "📁 Pliki produkcyjne: $distPath" -ForegroundColor Cyan
Write-Host ""
Write-Host "⚠️  WAŻNE: Użyj plików z folderu 'dist' w produkcji!" -ForegroundColor Yellow
Write-Host "   Pliki w 'js/' są tylko do development." -ForegroundColor Yellow
