#!/usr/bin/env pwsh <# .SYNOPSIS Quick Production Package Creator for Tetris SDL3 .DESCRIPTION This script creates a production package using the existing build-msvc directory. Useful when you already have a working build and just want to create a distribution package. #> param( [string]$OutputDir = "dist" ) $ProjectName = "tetris" $PackageDir = Join-Path $OutputDir "TetrisGame" $Version = Get-Date -Format "yyyy.MM.dd" function Write-ColorOutput($ForegroundColor) { $fc = $host.UI.RawUI.ForegroundColor $host.UI.RawUI.ForegroundColor = $ForegroundColor if ($args) { Write-Output $args } $host.UI.RawUI.ForegroundColor = $fc } function Write-Success { Write-ColorOutput Green $args } function Write-Info { Write-ColorOutput Cyan $args } function Write-Warning { Write-ColorOutput Yellow $args } function Write-Error { Write-ColorOutput Red $args } Write-Info "======================================" Write-Info " Tetris Quick Package Creator" Write-Info "======================================" # Check if build exists $ExecutablePath = "build-msvc\Debug\tetris.exe" if (!(Test-Path $ExecutablePath)) { $ExecutablePath = "build-msvc\Release\tetris.exe" if (!(Test-Path $ExecutablePath)) { Write-Error "No executable found in build-msvc directory. Please build the project first." exit 1 } } Write-Success "Found executable: $ExecutablePath" # Create package directory if (Test-Path $PackageDir) { Remove-Item $PackageDir -Recurse -Force } New-Item -ItemType Directory -Path $PackageDir -Force | Out-Null # Copy executable Copy-Item $ExecutablePath $PackageDir Write-Success "Copied tetris.exe" # Copy assets if (Test-Path "assets") { Copy-Item "assets" -Destination (Join-Path $PackageDir "assets") -Recurse -Force Write-Success "Copied assets folder" } if (Test-Path "FreeSans.ttf") { Copy-Item "FreeSans.ttf" $PackageDir Write-Success "Copied FreeSans.ttf" } # Copy DLLs from vcpkg (SDL_image no longer needed) $VcpkgBin = "vcpkg_installed\x64-windows\bin" if (Test-Path $VcpkgBin) { $DllFiles = @("SDL3.dll", "SDL3_ttf.dll") foreach ($dll in $DllFiles) { $dllPath = Join-Path $VcpkgBin $dll if (Test-Path $dllPath) { Copy-Item $dllPath $PackageDir Write-Success "Copied $dll" } } } # Create launcher $LaunchContent = @" @echo off cd /d "%~dp0" tetris.exe if %errorlevel% neq 0 ( echo. echo Game crashed or failed to start! echo Check that all DLL files are present. echo. pause ) "@ $LaunchContent | Out-File -FilePath (Join-Path $PackageDir "Launch-Tetris.bat") -Encoding ASCII Write-Success "Created Launch-Tetris.bat" # Create README $ReadmeContent = @" Tetris SDL3 Game ================ ## Quick Start 1. Run Launch-Tetris.bat or tetris.exe 2. Use arrow keys to move, Z/X to rotate, Space to drop 3. Press F11 for fullscreen, Esc for menu ## Files - tetris.exe: Main game - Launch-Tetris.bat: Safe launcher with error handling - assets/: Game resources (music, images, fonts) - *.dll: Required libraries ## Controls Arrow Keys: Move pieces Z/X: Rotate pieces C: Hold piece Space: Hard drop P: Pause F11: Fullscreen Esc: Menu Enjoy! "@ $ReadmeContent | Out-File -FilePath (Join-Path $PackageDir "README.txt") -Encoding UTF8 Write-Success "Created README.txt" # Calculate size $PackageSize = (Get-ChildItem $PackageDir -Recurse | Measure-Object -Property Length -Sum).Sum $PackageSizeMB = [math]::Round($PackageSize / 1MB, 2) # Create ZIP $ZipPath = Join-Path $OutputDir "TetrisGame-$Version.zip" try { Compress-Archive -Path $PackageDir -DestinationPath $ZipPath -Force Write-Success "Created ZIP: $ZipPath" } catch { Write-Warning "Failed to create ZIP: $($_.Exception.Message)" } Write-Info "" Write-Success "Package created successfully!" Write-Info "Location: $PackageDir" Write-Info "Size: $PackageSizeMB MB" Write-Info "ZIP: $ZipPath" Write-Info "" Write-Info "Ready for distribution! 🎮"