Usar las variables
Mostrar el nombre de un juego, elegir una imagen según el sistema.
Una variable se escribe ${…} y Recalbox la reemplaza en el momento de mostrar.
<text name="titre">
<text>Bienvenue sur ${system}</text>
</text>
→ « Bienvenue sur Super Nintendo ».
En una ruta de imagen: lo más útil
<image name="console" extra="true">
<path>${root}/data/arts/consoles/${system.name}.png</path>
</image>
Una sola línea, y cada sistema muestra su propia imagen. Basta con que los archivos lleven el nombre interno del sistema: snes.png, megadrive.png…
Dónde funciona cada variable
Es la regla que más sorprende, y viene del motor:
| Familia | Vistas donde se resuelve |
|---|---|
${system…} | Sistemas y Lista de juegos — una lista siempre pertenece a un sistema |
${game…} | Lista de juegos y Salvapantallas — allí donde hay un juego señalado |
${recalbox…} ${settings…} ${hardware…} ${display…} | en todas partes |
Una variable empleada donde no existe no se reemplaza: el texto en bruto se muestra tal cual, ${game.name} incluido. El studio solo propone las que funcionan en la vista actual.
Cuando la línea resaltada no es un juego
En la lista de juegos, el cursor no recorre solo juegos: también pasa por las carpetas y por los encabezados de ordenación, esos intertítulos que Recalbox añade en cuanto la lista se ordena de otra forma que no sea alfabética. Las ${game…} siguen respondiendo, pero describen entonces una línea que no tiene juego:
| Línea resaltada | ${game.name} | ${game.releasedate} | ${game.file.name} |
|---|---|---|---|
| un juego | su nombre | su fecha de salida | el archivo de la rom |
| una carpeta | el nombre de la carpeta | DESCONOCIDO | el nombre de la carpeta |
| un encabezado de ordenación | nada | DESCONOCIDO | nada |
Un componente que muestra un dato del juego ya no tiene nada que decir en esas líneas — y aun así sigue en pantalla, encima del nombre de la carpeta que Recalbox escribe en ese mismo momento. Limítelo a las líneas de juego:
<text name="sortie" extra="true" showIf="game">
<text>Salida: ${game.releasedate}</text>
</text>
El estudio se encarga de ello: en cuanto un componente emplea un dato del juego, su visibilidad pasa a «un juego». La pestaña Visibilidad del componente permite volver a abrirla a las carpetas y a los encabezados cuando así se desee.
${root} — para no olvidar nunca
${root} designa la raíz del tema seleccionado. Sin él, las rutas son relativas al archivo que las escribe, y tu tema se rompe en cuanto se guarda de otra manera.
<path>${root}/data/arts/fond.jpg</path> <!-- ✅ -->
<path>../data/arts/fond.jpg</path> <!-- frágil -->
Las antiguas variables $…
En temas viejos te cruzarás con variables sin llaves:
| Antigua | Lo que da | Equivalente actual |
|---|---|---|
$system | el nombre corto — « snes » | ${system.name} |
$theme | la carpeta del tema | ${root} |
⚠️ $system y ${system} no dan lo mismo: la primera devuelve « snes », la segunda « Super Nintendo ». Todavía se aceptan, pero están obsoletas: escribe ya solo la forma con llaves.
El sorteo
<path>${random.between(fond1.jpg,fond2.jpg,fond3.jpg)}</path>
<fontSize>${random.range(1,10)}</fontSize>
random.between elige un valor al azar de la lista, random.range un número entre dos límites. El sorteo tiene lugar al cargar el tema, no en cada visualización.