# Force SecondVoice to use NVIDIA GPU
# Run as Administrator

Write-Host "========================================" -ForegroundColor Cyan
Write-Host "Force NVIDIA GPU for SecondVoice" -ForegroundColor Cyan
Write-Host "========================================" -ForegroundColor Cyan
Write-Host ""

# Check if running as admin
$isAdmin = ([Security.Principal.WindowsPrincipal] [Security.Principal.WindowsIdentity]::GetCurrent()).IsInRole([Security.Principal.WindowsBuiltInRole]::Administrator)

if (-not $isAdmin) {
    Write-Host "WARNING: Not running as Administrator" -ForegroundColor Yellow
    Write-Host "Some settings may not apply properly" -ForegroundColor Yellow
    Write-Host ""
}

# Get the executable path
$exePath = Join-Path $PSScriptRoot "build\mingw-Release\SecondVoice.exe"
$exeFullPath = (Resolve-Path $exePath -ErrorAction SilentlyContinue).Path

if (-not $exeFullPath) {
    Write-Host "ERROR: SecondVoice.exe not found at:" -ForegroundColor Red
    Write-Host "  $exePath" -ForegroundColor Red
    Write-Host ""
    Write-Host "Please build the project first:" -ForegroundColor Yellow
    Write-Host "  .\build_mingw.bat" -ForegroundColor Yellow
    exit 1
}

Write-Host "Found executable:" -ForegroundColor Green
Write-Host "  $exeFullPath" -ForegroundColor White
Write-Host ""

# Method 1: Registry settings for NVIDIA Optimus
Write-Host "Setting NVIDIA Optimus preference..." -ForegroundColor Cyan

$regPath = "HKCU:\Software\Microsoft\DirectX\UserGpuPreferences"

if (-not (Test-Path $regPath)) {
    New-Item -Path $regPath -Force | Out-Null
}

# Set to use high performance GPU (NVIDIA)
Set-ItemProperty -Path $regPath -Name $exeFullPath -Value "GpuPreference=2;" -Type String

Write-Host "✓ Registry setting applied" -ForegroundColor Green
Write-Host ""

# Instructions for manual configuration
Write-Host "========================================" -ForegroundColor Cyan
Write-Host "Manual Configuration (if needed)" -ForegroundColor Cyan
Write-Host "========================================" -ForegroundColor Cyan
Write-Host ""
Write-Host "If the automatic setting does not work, configure manually:" -ForegroundColor Yellow
Write-Host ""
Write-Host "Method 1 - Windows Graphics Settings:" -ForegroundColor White
Write-Host "  1. Open Windows Settings (Win + I)" -ForegroundColor Gray
Write-Host "  2. System > Display > Graphics" -ForegroundColor Gray
Write-Host "  3. Click Browse and select:" -ForegroundColor Gray
Write-Host "     $exeFullPath" -ForegroundColor Cyan
Write-Host "  4. Click Options > High performance" -ForegroundColor Gray
Write-Host "  5. Save" -ForegroundColor Gray
Write-Host ""
Write-Host "Method 2 - NVIDIA Control Panel:" -ForegroundColor White
Write-Host "  1. Right-click desktop > NVIDIA Control Panel" -ForegroundColor Gray
Write-Host "  2. Manage 3D Settings > Program Settings" -ForegroundColor Gray
Write-Host "  3. Add SecondVoice.exe" -ForegroundColor Gray
Write-Host "  4. Select High-performance NVIDIA processor" -ForegroundColor Gray
Write-Host ""
Write-Host "========================================" -ForegroundColor Cyan
Write-Host "✓ Configuration complete!" -ForegroundColor Green
Write-Host "========================================" -ForegroundColor Cyan
Write-Host ""
Write-Host "Please restart SecondVoice for changes to take effect" -ForegroundColor Yellow
