# Tehniline külg

&ktuberling; pakub omalt poolt hea võimaluse kaasa aidata &kde; kohandamisele ja arendamisele. Ka seda mängu saab laiendada. Nii võib ka ilma programmeerimata lisada uusi mängulaudu lihtsalt graafikafaile redigeerides. Sobivate helifailide lisamisega võivad tõlkijad panna sõnad ka oma emakeeles kõlama!

Kui laiendad mängu või lisad sellele midagi, võiksid saata oma panuse ka hooldajale Alex Fiestasele , kes saab siis sinu panuse järgmisse versiooni kaasata.

## Kunstiinimesed

&ktuberling;i uue mänguvälja loomiseks on vajalik:

- Joonistada mänguväli SVG-faili, kus peab olema:

  - koha nimi, kuhu elemente saab lohistada "taustale".

  - iga lohistatava elemendi unikaalne nimi.

- Luua .theme-fail, mis peab järgima järgmist skeemi:

      <playground gameboard="sinuSVGFail" name="TöölauaFail">
          <object name="elemendiNimi" sound="heliNimi" scale="mingiVäärtus" />
          ...
          ...
          ...
          </playground>

  - `sinuSVGFail` on joonistust sisaldava SVG-faili nimi.

  - `TöölauaFail` on .desktop-faili nimi, mis sisaldab teema nime.

  - Igale objektile on vajalik kirje <object>. `elemendiNimi` on SVG-failis kasutatav unikaalne nimi. `heliNimi` on heli nimi, mida esitatakse objekti lohistamisel. Vaata selle kohta täpsemalt heliteemade HOWTO-d.

  - scale ei ole kohustuslik ning `mingiVäärtus` on skaleerimistegur, mida kasutatakse objekti lohistamisel väljaspool ladu. Kui see pole määratud, kasutatakse vaikimisi väärtust 1.

- Luua .desktop-fail, mis peab järgima järgmist skeemi

      [KTuberlingTheme]
          Name=teemaNimi

  - `teemaNimi` on teemat tuvastav nimi, mida näeb mänguvälja menüüs.

- Kui lisad teema &ktuberling;i hoidlasse, lisa ka .svg-, .desktop- ja .theme-fail kataloogis pics/ faili CMakeLists.txt sektsiooni FILES.

- Kui soovid selle ainult enda jaoks paigaldada, lisa .svg-, .theme- ja .desktop-fail asukohta `kde4-config --prefix`/share/apps/ktuberling/pics.

## Tõlkijad

Lisaks tavalisemale rakenduse käskude, teadete ja muu nähtava `.po`-failide tõlkimisele saab lokaliseerida ka helisid.

&ktuberling;i uue heliteema loomiseks on vajalik:

- Salvestada helid OGG Vorbis rc3 failivormingus.

- Luua `sinuKeeleKahetähelineKood`.soundtheme fail, mis peab järgima järgmist skeemi:

      <language code="sinuKeeleKahetähelineKood">
      <sound name="heliNimi" file="suhtelineAsukoht" />
      ...
      ...
      ...
      </language>

  - `sinuKeeleKahetähelineKood` on, nagu nimigi ütleb, sinu keele kahetäheline kood, näiteks et eesti keele puhul.

  - Iga heli puhul peab olema kirje <sound>. `heliNimi` peab vastama heli nimele, mis on määratud kindlaks mänguvälja teemas (vaata teema HOWTO-d). `suhtelineAsukoht` peab olema see suhtelisena antud asukoht, kuhu kavatsed helid paigutada. Üldiselt peaks see olema mingiUnikaalneAsukoht/heliNimi.vorming (kus mingiUnikaalneAsukoht võib olla näiteks sinu keele kahetäheline kood).

- Kui lisad heliteema &ktuberling;i oma keele kataloogi:

  - Lisa heli- ja .soundtheme-failid oma keele tõlgete kataloogi data/kdegames/ktuberling.

  - Samas kataloogis peab asuma fail CMakeLists.txt, mis kirjeldab, kuidas failid paigaldada. Üldiselt peaks see välja nägema nii:

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

- Kui soovid selle ainult enda jaoks paigaldada:

  - Paiguta fail `sinuKeeleKahetähelineKood`.soundtheme asukohta `kde4-config --prefix`/share/apps/ktuberling/sounds.

  - Paiguta oma helifailid asukohta `kde4-config --prefix`/share/apps/ktuberling/sounds/mingiUnikaalneAsukoht.

Teavet selle kohta, kuidas käib tõlkimine &kde;s, annab &kde; tõlkimise HOWTO.

## Programmeerijad

Õigupoolest on &ktuberling; programmeerijatele üsna hõlpsasti laiendatav.

### C++ klassid

`TopLevel`

- Tipptaseme aken ja rakenduse baashaldus

`PlayGround`

- Mingi konkreetse mängutaseme kirjeldus

`ToDraw`

- Mingi konkreetse graafilise objekti kujutamise kirjeldus

`SoundFactory`

- Mingi konkreetse keele ja selle helide kirjeldus

`Action`

- Konkreetne kasutaja tegevus võta tagasi/tee uuesti võimalustega