Ein Recalbox-Theme erstellen

45 Seiten · 8 Abschnitte
FRENESDE Alles anzeigen Mein Theme erstellen

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:

FamilieAnsichten, 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 Spielsein Namesein Erscheinungsdatumdie Rom-Datei
ein Ordnerder OrdnernameUNBEKANNTder Ordnername
eine Sortier-ÜberschriftnichtsUNBEKANNTnichts

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:

AltWas sie ergibtAktuelles Äquivalent
$systemder kurze Name — „snes“${system.name}
$themeder 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.