Script para modificar el color de ventanas
Crear un script que pueda:
-Modificar los JSON que necesitemos.
-Modificar el campo "RenderColor" solo para la ventana principal en los archivos JSON que sean sobre las ventanas.
-Que el cambio se aplique cada vez que compilas.
3 Pasos para implementar el script:
1-Crea un target en Intersect.Client.csproj al final del <project>.
<Target Name=»UpdateRenderColor» AfterTargets=»Build»>
<Exec Command=»powershell -ExecutionPolicy Bypass -File "$(ProjectDir)Update-RenderColor.ps1"» />
</Target>
2.-Crea el archivo Update-RenderColor.ps1 en la misma carpeta que Intersect.Client.csproj
3.-Agrega el Contenido del script en Update-RenderColor.ps1
# Modifica SOLO el RenderColor de la ventana principal (raíz del JSON)
$baseDir = $PSScriptRoot
# Carpeta base donde están todos los recursos
$resourcesDir = Join-Path $baseDir "bin\Debug\net8.0\resources"
# Lista de archivos relativos a $resourcesDir
$filesToModify = @(
"gui/layouts/menu/MainMenuWindow_online.json",
"gui/layouts/menu/MainMenuWindow_singleplayer.json",
"gui/layouts/menu/LoginWindow.json",
"gui/layouts/menu/RegistrationWindow.json",
"gui/layouts/menu/CreditsWindow.json",
"gui/layouts/menu/SelectCharacterWindow.json",
"gui/layouts/shared/SettingsWindow.json" # ← Nueva carpeta
)
$newColor = "200,0,0,0" # (A,R,G,B)
foreach ($relativePath in $filesToModify) {
$filePath = Join-Path $resourcesDir $relativePath
if (Test-Path $filePath) {
Write-Host "Modificando SOLO la ventana principal en $relativePath ..." -ForegroundColor Cyan
try {
# Leer y parsear JSON
$json = Get-Content $filePath -Raw | ConvertFrom-Json
# Modificar solo la propiedad raíz
if (Get-Member -InputObject $json -Name "RenderColor") {
$json.RenderColor = $newColor
Write-Host " → RenderColor raíz cambiado a $newColor" -ForegroundColor Green
} else {
Write-Host " → No se encontró RenderColor en la raíz" -ForegroundColor Yellow
}
# Convertir de nuevo a JSON y guardar
$json | ConvertTo-Json -Depth 20 | Set-Content $filePath -Encoding UTF8 -NoNewline
} catch {
Write-Host " → Error procesando JSON: $_" -ForegroundColor Red
}
} else {
Write-Host "Archivo no encontrado: $relativePath (genera el juego primero)" -ForegroundColor Yellow
}
}
Write-Host "`nProceso completado. Solo se modificó el RenderColor de la ventana principal." -ForegroundColor Green
Mejorando el Script
El script realizado previamente, puede realizar lo siguiente:
-Modificar los JSON que necesitemos.
-Modificar el campo "RenderColor" solo para la ventana principal en los archivos JSON que sean sobre las ventanas.
-Que las modificaciones se apliquen cada vez que compilas.
Ahora lo buscamos es:
-Modificar todos los archivos JSON que contengan la palabra Window dentro de las carpetas game, menu y shared.
-Que las modificaciones se apliquen cuando compilas en debug, release o publish.
param(
[Parameter(Mandatory=$true)]
[string]$ResourcesDir
)
# Subcarpetas donde buscar
$subFolders = @(‘game’, ‘menu’, ‘shared’)
# Patrón de archivo (contenga «Window»)
$pattern = ‘*Window*.json’
# Color nuevo
$newColor = «200,0,0,0»
# Para cada subcarpeta
foreach ($subFolder in $subFolders) {
$searchPath = Join-Path $ResourcesDir «gui/layouts/$subFolder»
if (Test-Path $searchPath) {
# Buscar archivos JSON que coincidan con el patrón
$files = Get-ChildItem -Path $searchPath -Filter $pattern -Recurse -File
foreach ($file in $files) {
# Ruta relativa para mensajes
$relativePath = $file.FullName.Substring($ResourcesDir.Length)
Write-Host «Modificando ventana en $relativePath …» -ForegroundColor Cyan
# Parsear y modificar solo la raíz
$json = Get-Content $file.FullName -Raw | ConvertFrom-Json
if (Get-Member -InputObject $json -Name «RenderColor») {
$json.RenderColor = $newColor
$json | ConvertTo-Json -Depth 20 | Set-Content $file.FullName -Encoding UTF8 -NoNewline
Write-Host » → RenderColor raíz cambiado a $newColor» -ForegroundColor Green
} else {
Write-Host » → No se encontró RenderColor en la raíz» -ForegroundColor Yellow
}
}
} else {
Write-Host «Carpeta no encontrada: $searchPath» -ForegroundColor Yellow
}
}





Deja una respuesta