# proto 코드 생성 스크립트 (PowerShell)
# 사용법: .\gen_proto.ps1

$PROTOC = "C:\Users\SSAFY\AppData\Local\Microsoft\WinGet\Packages\Google.Protobuf_Microsoft.Winget.Source_8wekyb3d8bbwe\bin\protoc.exe"
$GOPATH_BIN = (go env GOPATH) + "\bin"
$env:PATH = "$GOPATH_BIN;$env:PATH"

$ROOT = $PSScriptRoot

# Go 서버 코드 생성
Write-Host "[1/2] Generating Go server code..." -ForegroundColor Cyan
& $PROTOC `
    --go_out="$ROOT\proto\gen\pb" `
    --go_opt=paths=source_relative `
    --proto_path="$ROOT\proto" `
    "$ROOT\proto\messages.proto"

if ($LASTEXITCODE -ne 0) {
    Write-Host "Go proto generation failed." -ForegroundColor Red
    exit 1
}
Write-Host "  -> proto/gen/pb/messages.pb.go" -ForegroundColor Green

# Unity C# 코드 생성
Write-Host "[2/2] Generating C# Unity code..." -ForegroundColor Cyan
$unityOutDir = "$ROOT\unity\Assets\Scripts\Proto"
if (!(Test-Path $unityOutDir)) {
    New-Item -ItemType Directory -Path $unityOutDir | Out-Null
}

& $PROTOC `
    --csharp_out="$unityOutDir" `
    --proto_path="$ROOT\proto" `
    "$ROOT\proto\messages.proto"

if ($LASTEXITCODE -ne 0) {
    Write-Host "C# proto generation failed." -ForegroundColor Red
    exit 1
}
Write-Host "  -> unity/Assets/Scripts/Proto/Messages.cs" -ForegroundColor Green

Write-Host "`nDone!" -ForegroundColor Green
