# Technische referentie

&ktuberling; biedt een elegante en belonende inleiding in het programmeren voor en aanpassen van &kde;. Het programma kan worden uitgebreid. Bijvoorbeeld, zonder dat u hoeft te programmaren kunt u nieuwe speelvelden toevoegen door de grafische bestanden te wijzigen. Door de juiste geluidsbestanden kunnen vertalers de geluiden aanpassen aan hun eigen taal!

Als u het spel uitbreidt, overweeg dan om uw toevoegingen te sturen aan de onderhouder Alex Fiestas zodat ze in toekomstige versies kunnen worden bijgesloten.

## Voor artiesten

Om een nieuwe &ktuberling; speelveld aan te maken dient u:

- Het speelveld te tekenen in een een SVG-bestand, waarin u:

  - De plaats waar items naar toe gesleept worden "background" wordt genoemd.

  - Geef elk van de versleepbare items een unieke naam.

- Maak een thema-bestand aan, met het volgende schema:

      <playground gameboard="uwSVGbestand" name="hetBureaubladBestand">
          <object name="itemNaam" sound="geluidNaam" scale="eenWaarde" />
          ...
          ...
          ...
          </playground>

  - `uwSVGbestand` is de naam van het svg-bestand dat de tekening bevat.

  - `hetBureaubladBestand` is de naam van het bureaubladbestand dat de naam van het thema bevat.

  - Voor elk object hebt u een <object>-item nodig. `itemNaam` is de unieke naam die u gebruikt voor het SVG-bestand, `geluidNaam` is de naam van het geluid dat zal worden afgespeeld bij het slepen, zie "sound themes howto" voor meer informatie.

  - scale is optioneel en `eenWaarde` is de schaalfactor die zal worden gebruikt bij het tekenen van dit object buiten de opslagplaats, als deze niet is gespecificeerd dan is deze 1.

- Maak een .desktop-bestand aan, met dit schema

      [KTuberlingTheme]
          Name=themaNaam

  - `themaNaam` is de naam die het thema identificeert en zal worden getoond in het menu Speelveld.

- Als u het thema toevoegt aan de &ktuberling;-repository, voeg dan .svg-, .theme-, .desktop-bestanden toe aan de sectie FILES van CMakeLists.txt in de map pics/

- Als u het wilt installeren voor uzelf, plaats .svg-, .theme- en .desktop-bestanden in `kde4-config --prefix`/share/apps/ktuberling/pics

## Voor vertalers

Naast de gebruikelijke mechanisme met `.po`-bestanden voor het vertalen van programmateksten en documentatie kunnen ook de geluiden worden overgezet naar andere talen.

Om een nieuw &ktuberling; geluid aan te maken dient u:

- Neem de geluiden op in OGG Vorbis rc3 bestandsformaat.

- Maak een bestand `uwTaalTweeLetterCode`.soundtheme, het moet dit schema volgen:

      <language code="uwTaalTweeLetterCode">
      <sound name="geluidsNaam" file="relatiefPad" />
      ...
      ...
      ...
      </language>

  - `uwTaalTweeLetterCode` is de twee lettercode van uw taal, bijvoorbeeld nl voor Nederlands.

  - Voor elke klank moet een <sound>-item. `geluidsNaam` overeenkomen met de geluidsNaam gespecificeerd in het playground-thema (zie thema's HOWTO). `relatievePad` zou het relatieve pad moeten zijn waar u het bestand met deze klank in gaat installeren, Dit is typisch eenUniekPad/geluidsNaam.format (eenUniekPad kan bijvoorbeeld uw twee-letterige taalcode zijn).

- Als u het geluidsthema toevoegt aan de &ktuberling; in uw taalmap:

  - Voeg de klankbestanden en het .soundtheme-bestand toe aan de map data/kdegames/ktuberling van de vertalingen in uw taal.

  - In diezelfde map hebt u een CMakeLists.txt nodig die beschrijft hoe de bestanden te instelleren, dit is typisch:

        FILE(GLOB datafiles *.ogg)
        install( FILES ${datafiles} DESTINATION ${DATA_INSTALL_DIR}/ktuberling/sounds/uwTaalTweeLetterCode )
        install( FILES uwTaalTweeLetterCode.soundtheme DESTINATION ${DATA_INSTALL_DIR}/ktuberling/sounds/ )

- Als u het wilt installeren voor uzelf:

  - Plaats `uwTaalTweeLetterCode`.soundtheme bestand in `kde4-config --prefix`/share/apps/ktuberling/sounds

  - Plaats uwKlankBestanden in `kde4-config --prefix`/share/apps/ktuberling/sounds/eenUniekPad

Informatie over hoe u gebruik kunt maken met de vertaalmechanismen van &kde; is beschikbaar in The &kde; HOWTO voor vertalen. Kijk ook op de vertalerswebsite van het Nederlandse KDE-team.

## Voor programmeurs

&ktuberling; is voor programmeurs niet moeilijk om uit te breiden.

### C++-klassen

`TopLevel`

- TopLevel window en basic program management

`PlayGround`

- Beschrijving van een van de spelniveaus

`ToDraw`

- Beschrijving van een van de grafische objecten om te tekenen

`SoundFactory`

- Beschrijving van een van de talen en diens geluiden

`Action`

- Een van de gebruikers' manipulatie in de undo/redo stack