# Technische Referenz

&ktuberling; bietet eine sanfte und lohnende Einführung in die Anpassung und Programmierung von &kde;. &ktuberling; kann beliebig erweitert werden. So können beispielsweise neue Spielfelder ohne Programmieren durch Ändern der Grafikdateien hinzugefügt werden. Durch Hinzufügen geeigneter Audiodateien können Übersetzer die Klänge in ihre Muttersprache ändern.

Sollten Erweiterungen oder Ergänzungen zum Spiel vorgenommen werden, wird um deren Übersendung an den derzeitigen Betreuer Alex Fiestas zur Berücksichtigung in künftigen Versionen gebeten.

## Grafiker

Zum Erstellen eines neuen Spielfeldes für &ktuberling; sind folgende Maßnahmen notwendig:

- Zeichnen eines Spielfeldes in einer `*.svg`-Datei unter Beachtung, dass

  - der Ort, an den die Objekte gezogen werden, den Namen „background“ erhält.

  - jedes ziehbare Objekt einen einzigartigen Namen erhält.

- Erstellen einer `*.theme`-Datei mit folgendem Schema:

      <playground gameboard="svg-Datei" name="desktop-Datei">
          <object name="Objektname" sound="Klangname"scale="beliebigerWert" />
          ...
          ...
          ...
          </playground>

  - `svg-Datei` ist der Name für die `svg`-Datei mit den Objekten.

  - `desktop-Datei` ist der Name der `desktop`-Datei, die den Namen des Designs beinhaltet.

  - Für jedes Objekt ist ein <object>-Eintrag erforderlich. `Objektname` ist der einzigartige Name innerhalb der `svg`-Datei und `Klangname` ist der Name des beim Ziehen des Objektes wiedergegebenen Klangs.

  - scale ist ein zusätzlicher Wert. `beliebigerWert` wird dabei als Wert für die Vergrößerung des Objektes verwendet, sobald es aus dem Depot „geholt“ wird. Bei unterbliebener Festlegung wird als Wert 1 verwendet.

- Erstellen einer `*.desktop`-Datei nach folgendem Schema:

      [KTuberlingTheme]
          Name=Designname

  - `Designname` ist der identifizierende Name des Designs und wird im Menü Spielfeld angezeigt.

- Beim Hochladen des Designs zum Git-Quelltextarchiv von &ktuberling; müssen die `*.svg`-, `*.theme`- und `*.desktop`-Datei im Abschnitt FILES der Datei `CMakeLists.txt` des Ordners `pics/` eingetragen werden.

- Zur Verwendung auf dem lokalen System müssen die `*.svg`-, `*.theme`- und `*.desktop`-Datei im Ordner `ktuberling/pics` in ``qtpaths` `--paths GenericDataLocation`` vorhanden sein.

## Übersetzer

Neben dem üblichen Übersetzen der `.po`-Dateien für die grafische Oberfläche können für &ktuberling; auch die Klänge lokalisiert werden.

Zum Erstellen eines neuen Klangdesigns für &ktuberling; sind folgende Maßnahmen notwendig:

- Die Klänge im Format OGG Vorbis rc3 speichern.

- Erstellen einer ``de`.soundtheme`-Datei mit folgendem Schema:

      <language code="de">
      <sound name="Klangname" file="relativerPfad" />
      ...
      ...
      ...
      </language>

  - `de` wird hier und im Folgenden nur beispielhaft für Deutsch verwendet. Für andere Sprachen muss stattdessen das jeweilige Sprachenkürzel eingesetzt werden.

  - Für jeden Klang ist ein <sound>-Eintrag erforderlich. `Klangname` sollte mit dem Klangnamen im Spielfeld-Design übereinstimmen. `relativerPfad` ist der relative Pfad zur Klangdatei und typischerweise ``einzigartigerPfad`/Klangname.format` wobei `einzigartigerPfad` beispielsweise `de` sein kann.

- Beim Hochladen des lokalisierten Klangdesigns in Ihren Sprachenordner müssen

  - die Klang- und `*.soundtheme`-Dateien im Ordner `l10n-kde4/`de`/data/kdegames/ktuberling` vorliegen.

  - im selben Ordner die Datei `CMakeLists.txt` mit der Beschreibung für die Installation nach folgendem Muster vorliegen:

        FILE( GLOB oggfiles *.ogg )
        INSTALL( FILES ${oggfiles} DESTINATION ${KDE_INSTALL_DATADIR}/ktuberling/sounds/de )
        INSTALL( FILES de.soundtheme DESTINATION ${KDE_INSTALL_DATADIR}/ktuberling/sounds/ )

- Zur Verwendung auf dem lokalen System müssen

  - die ``de`.soundtheme`-Datei im Ordner `ktuberling/sounds` in ``qtpaths` `--paths GenericDataLocation`` vorhanden sein

  - die lokalisierten Klangdateien im Ordner `ktuberling/sounds/someUniquePath` in``qtpaths` `--paths GenericDataLocation`` vorhanden sein.

Informationen zur Arbeit mit dem Übersetzungssystem von &kde; sind in der &kde;-Übersetzungsanleitung verfügbar.

## Entwickler

Die Erweiterung von &ktuberling; durch Entwickler ist nicht wirklich schwierig.

### C++-Klassen

`TopLevel`

- Sichtbares Fenster und grundlegende Programmverwaltung

`PlayGround`

- Beschreibung einer Spielfeldebene

`ToDraw`

- Beschreibung eines darzustellenden grafischen Objekts

`SoundFactory`

- Beschreibung einer Sprache und deren Klänge

`Action`

- Eine der Veränderungen des Benutzers im „Rückgängig/Wiederherstellen“-Stapel