# 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 te tekenen speelveld 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 het bestand `sounds/soundthemes.HOWTO` uit de broncode 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;-opslagruimte, voeg dan `.svg`-, `.theme`- en `.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 de map `ktuberling/pics` in ``qtpaths` `--paths GenericDataLocation``

## 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 de `pics/themes.HOWTO` uit de broncode). `relatievePad` zou het relatieve pad moeten zijn waar u het bestand met deze klank in gaat installeren, dit is typisch ``eenUniekPad`/`geluidNaam`.`format`` (`eenUniekPad` kan bijvoorbeeld uw tweeletterige taalcode zijn).

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

  - Voeg de klankbestanden en de `.soundtheme`-bestanden toe in 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 installeren, dit is typisch:

        FILE( GLOB ogg-bestanden *.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 het bestand ``uwTweeletterigeTaalcode`.soundtheme` in de map `ktuberling/sounds` in ``qtpaths` `--paths GenericDataLocation``

  - Plaats uw geluidsbestanden in de map `ktuberling/sounds/`eenUniekPad`` in ``qtpaths` `--paths GenericDataLocation``

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`

- Topniveau venster en basis programmabeheer.

`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.

`Actie`

- Een van de gebruikers' manipulatie in de ongedaan maken/opnieuw maken stapel.