# Dokumentacja techniczna

&ktuberling; oferuje oględne i odpłacające wprowadzenie do dostrajania i programowania &kde;. Program może być rozszerzany. Na przykład, bez żadnego kodowania, nowe plansze mogą być dodawane za pomocą zmiany plików graficznych. Poprzez dodanie odpowiednich plików dźwiękowych, tłumacze mogą stworzyć dźwięki w ich ojczystym języku!

Jeżeli rozszerzasz lub dodajesz coś do gry, pomyśl o przesłaniu Twoich dodatków do programisty Albert Astals Cid, w celu włączenia w kolejnych wersjach.

## Dla artystów

Aby stworzyć planszę KTuberlinga, należy:

- Narysować planszę w pliku SVG, gdzie znowu trzeba:

  - Nazwać miejsce, gdzie obiekty mogą być przeciągane, "background".

  - Przydzielić unikalną nazwę dla każdego z obiektów, który można przesuwać.

- Stworzyć plik .theme, który ma mieć następujący schemat:

      <playground gameboard="TwójPlikSVG" name="plikDesktop">
          <object name="nazwaObiektu" sound="nazwaDźwięku" scale="jakaśWartość" />
          ...
          ...
          ...
          </playground>

  - `TwójPlikSVG` to nazwa pliku SVG zawierającego rysunek.

  - `plikDesktop` to nazwa pliku pulpitu, który ma nazwę motywu.

  - Dla każdego obiektu potrzeba wpisu <object>. `nazwaObiektu` to unikalna nazwa, której użyto w pliku SVG, `nazwaDźwięku` to nazwa dźwięku, który będzie odtworzony podczas przeciągania, rzuć okiem na poradnik motywów dźwiękowych w celu uzyskania dalszych informacji.

  - scale jest opcjonalny, a `jakaśWartość` to współczynnik skali, użyty przy rysowaniu obiektu poza składem. Jeśli nie jest określony, równa się 1.

- Stworzyć plik .desktop, zgodnie z następującym schematem

      [KTuberlingTheme]
          Name=nazwaMotywu

  - `nazwaMotywu` to nazwa określająca motyw, będzie pokazana w menu Plansza.

- Jeżeli dodajesz motyw do SVN-a KTuberlinga, dodaj pliki .svg, .theme, .desktop do sekcji FILES CMakeLists.txt w katalogu pics/

- Jeśli chcesz samemu to zainstalować, umieść pliki .svg, .theme, .desktop w `kde4-config --prefix`/share/apps/ktuberling/pics

## Dla tłumaczy

Oprócz zwyczajowego mechanizmu plików `.po` do tłumaczenia etykiet i tekstów zachęty, dźwięki również mogą zostać zlokalizowane.

Aby stworzyć nowy motyw dźwiękowy KTuberlings, należy:

- Zapisać pliki dźwiękowe w formacie OGG Vorbis rc3.

- Stworzyć plik `DwuliterowyKodTwojegoJęzyka`.soundtheme, zgodnie z następującym schematem:

      <language code="dwuliterowyKodJęzyka">
      <sound name="nazwaDźwięku" file="względnaŚcieżka" />
      ...
      ...
      ...
      </language>

  - `dwuliterowyKodJęzyka` to dwuliterowy kod Twojego języka, na przykład pl dla polskiego.

  - Dla każdego dźwięku, należy dodać pozycję w pliku. `NazwaDźwięku` powinna być taka sama jak nazwa, określona w motywie tła (więcej informacji na ten temat w dokumentacji motywów). `względnaŚcieżka` powinna określać względną ścieżkę do katalogu, w którym zainstalujesz plik dźwiękowy. Zwykle będzie to coś w rodzaju: jakaśUnikalnaŚcieżka/nazwaDźwięku.format (jakaśUnikalnaŚcieżka może być na przykład dwuliterowym kodem twojego języka).

- Jeśli dodajesz motyw dźwiękowy do SVN-a KTuberlinga:

  - Dodaj pliki dźwiękowe i pliki .soundtheme do katalogu tłumaczeń twojego języka w data/kdegames/ktuberling.

  - W tym samym katalogu, należy utworzyć plik CMakeLists.txt opisujący sposób instalacji plików, zwykle będzie miał taką zawartość:

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

- Jeśli chcesz zainstalować to dla siebie:

  - Umieść plik `dwuliterowyKodTwojegoJęzyka`.soundtheme w katalogu: `kde4-config --prefix`/share/apps/ktuberling/sounds

  - Umieść swoje pliki dźwiękowe w `kde4-config --prefix`/share/apps/ktuberling/sounds/jakaśUnikalnaŚcieżka

Informacje, jak pracować z mechanizmami tłumaczeń w &kde; są dostępne w Poradniku tłumaczenia &kde;.

## Dla programistów

&ktuberling; tak naprawdę nie jest trudny do rozszerzenia przez programistów.

### klasy C++

`TopLevel`

- Okno górnego poziomu i podstawowe zarządzanie programem

`PlayGround`

- Opis jednego z poziomów gry

`ToDraw`

- Opis jednego z obiektów graficznych do narysowania

`SoundFactory`

- Opis jednego z języków i jego dźwięków

`Action`

- Jedna z akcji użytkownika na stosie cofnij/ponów