# Startet OBS neu und wartet, bis die WebSocket-Schnittstelle bereit ist.
#
# OBS muss in der angemeldeten Sitzung laufen (Fensteraufnahme, Projektor).
# Frueher lief das ueber eine eigene geplante Aufgabe; jetzt uebernimmt das
# die ohnehin laufende Desktop-Bridge - ohne 2,2 Sekunden Anlaufkosten.
$ErrorActionPreference = 'Stop'

$repo = Join-Path $env:USERPROFILE 'TibiaPilotNG'
$obs = & (Join-Path $PSScriptRoot 'Find-OBS.ps1') -Required
$configPath = Join-Path $env:APPDATA 'obs-studio\plugin_config\obs-websocket\config.json'
$sentinelPath = Join-Path $env:APPDATA 'obs-studio\.sentinel'

& (Join-Path $PSScriptRoot 'Initialize-OBSWebSocket.ps1')
$config = Get-Content $configPath -Raw | ConvertFrom-Json

Stop-Process -Name obs64 -Force -ErrorAction SilentlyContinue
Start-Sleep -Seconds 2
Remove-Item $sentinelPath -Recurse -Force -ErrorAction SilentlyContinue

# OBS laeuft dauerhaft weiter - darum starten und sofort zurueckkehren,
# statt auf ein Programmende zu warten, das nicht kommt.
& (Join-Path $repo 'tools\Bridge-Run.ps1') `
    -Exe $obs `
    -Arguments '--collection TibiaPilotNG --profile TibiaPilotNG --scene TibiaPilotNG --minimize-to-tray --disable-shutdown-check' `
    -WorkingDirectory (Split-Path $obs) `
    -Detached -Quiet

for ($attempt = 0; $attempt -lt 30; $attempt++) {
    Start-Sleep -Seconds 1
    if ((Test-Path $configPath) -and (Get-NetTCPConnection -LocalPort $config.server_port -State Listen -ErrorAction SilentlyContinue)) {
        Write-Host 'OBS websocket ready.'
        exit 0
    }
}

throw 'OBS websocket did not start.'
