Variablen verwenden
Den Namen eines Spiels anzeigen, ein Bild je nach System wählen.
Eine Variable wird ${…} geschrieben und Recalbox ersetzt sie beim Anzeigen.
<text name="titre">
<text>Bienvenue sur ${system}</text>
</text>
→ „Bienvenue sur Super Nintendo“.
In einem Bildpfad: am nützlichsten
<image name="console" extra="true">
<path>${root}/data/arts/consoles/${system.name}.png</path>
</image>
Eine einzige Zeile, und jedes System zeigt sein eigenes Bild. Die Dateien müssen nur den internen Namen des Systems tragen: snes.png, megadrive.png…
Wo jede Variable funktioniert
Das ist die Regel, die am meisten überrascht, und sie kommt aus der Engine:
| Familie | Ansichten, in denen sie aufgelöst wird |
|---|---|
${system…} | Systeme und Spieleliste — eine Liste gehört immer zu einem System |
${game…} | Spieleliste und Bildschirmschoner — dort, wo es ein markiertes Spiel gibt |
${recalbox…} ${settings…} ${hardware…} ${display…} | überall |
Eine Variable, die dort verwendet wird, wo sie nicht existiert, wird nicht ersetzt: der rohe Text erscheint unverändert, ${game.name} eingeschlossen. Das Studio bietet nur die an, die auf der aktuellen Ansicht funktionieren.
Wenn die markierte Zeile kein Spiel ist
In der Spieleliste durchläuft der Cursor nicht nur Spiele: Er landet auch auf Ordnern und auf Sortier-Überschriften, jenen Zwischentiteln, die Recalbox einfügt, sobald die Liste anders als alphabetisch sortiert ist. Die ${game…} antworten weiterhin, beschreiben dann aber eine Zeile ohne Spiel:
| Markierte Zeile | ${game.name} | ${game.releasedate} | ${game.file.name} |
|---|---|---|---|
| ein Spiel | sein Name | sein Erscheinungsdatum | die Rom-Datei |
| ein Ordner | der Ordnername | UNBEKANNT | der Ordnername |
| eine Sortier-Überschrift | nichts | UNBEKANNT | nichts |
Ein Bauteil, das Spieldaten anzeigt, hat auf diesen Zeilen also nichts mehr zu sagen — und bleibt trotzdem auf dem Bildschirm, über dem Ordnernamen, den Recalbox im selben Moment schreibt. Beschränken Sie es auf Spielzeilen:
<text name="sortie" extra="true" showIf="game">
<text>Erschienen: ${game.releasedate}</text>
</text>
Das Studio übernimmt das: Sobald ein Bauteil Spieldaten verwendet, wechselt seine Sichtbarkeit auf „ein Spiel“. Über den Reiter Sichtbarkeit des Bauteils lässt sie sich jederzeit wieder für Ordner und Überschriften öffnen.
${root} — nie vergessen
${root} bezeichnet die Wurzel des ausgewählten Themes. Ohne ihn sind die Pfade relativ zur Datei, die sie schreibt, und dein Theme geht kaputt, sobald es anders abgelegt wird.
<path>${root}/data/arts/fond.jpg</path> <!-- ✅ -->
<path>../data/arts/fond.jpg</path> <!-- zerbrechlich -->
Die alten $…-Variablen
In alten Themes wirst du Variablen ohne Klammern begegnen:
| Alt | Was sie ergibt | Aktuelles Äquivalent |
|---|---|---|
$system | der kurze Name — „snes“ | ${system.name} |
$theme | der Ordner des Themes | ${root} |
⚠️ $system und ${system} ergeben nicht dasselbe: die erste liefert „snes“, die zweite „Super Nintendo“. Sie werden noch akzeptiert, sind aber veraltet: schreibe nur noch die Form mit Klammern.
Die Zufallsauswahl
<path>${random.between(fond1.jpg,fond2.jpg,fond3.jpg)}</path>
<fontSize>${random.range(1,10)}</fontSize>
random.between wählt zufällig einen Wert aus der Liste, random.range eine Zahl zwischen zwei Grenzen. Die Auswahl findet beim Laden des Themes statt, nicht bei jeder Anzeige.