# Технічні подробиці

За допомогою &ktuberling; ви можете отримати перший цінний досвід у налаштуванні і програмуванні у &kde;. Можливості програми легко розширити. Наприклад, без написання жодних програмних кодів за допомогою лише зміни графічних файлів можна додавати нові ігрові майданчики. Якщо додати до цих файлів відповідні звукові файли, перекладачі зможуть перекласти звуки гри новими мовами!

Якщо ви розширюєте або додаєте якісь елементи до гри, будь ласка, не полінуйтеся і надішліть ваші доповнення супровіднику програми, Alex Fiestas, для включення до наступних випусків програми.

## Для художників

Щоб створити нову гру для &ktuberling;, вам слід:

- Намалювати поле гри у вигляді файла &SVG;, в якому ви маєте:

  - Назвати місце, куди будуть перетягуватися елементи «background».

  - Назвати кожен з елементів, придатних для перетягування, унікальною назвою.

- Створити файл `.theme` за такою схемою:

      <playground gameboard="ваш_файл_SVG" name="стільничний_файл">
      <object name="назва_елемента" sound="назва_звуку" scale="певне_значення" />
      ...
      ...
      ...
      </playground>

  - `ваш_файл_SVG` — це назва файла &SVG;, у якому знаходиться малюнок.

  - `стільничний_файл` — назва стільничного (desktop) файла з назвою теми.

  - Кожному об’єкту має відповідати запис `<object>`. `назва_елемента` є унікальною назвою в межах файла SVG, `назва_звуку` — назва звукового файла, який буде відтворено під час перетягування елемента, щоб дізнатися більше, перегляньте інструкцію зі створення звукових тем у файлі `sounds/soundthemes.HOWTO` ієрархії початкового коду програми.

  - Запис `scale` (масштаб) є необов’язковим. `певне_значення` — це масштабний коефіцієнт, який буде використано для малювання цього об’єкта поза межами сховища елементів, якщо не вказано значення 1.

- Створіть файл `.desktop` за такою схемою:

      [KTuberlingTheme]
      Name=назва_теми

  - `назва_теми` — це назва-ідентифікатор теми, яку буде показано у меню «Ігровий майданчик».

- Якщо ви додаєте тему до сховища &ktuberling;, впишіть файли `.svg`, `.theme` та `.desktop` до розділу `FILES` файла `CMakeLists.txt` у каталозі `pics/`.

- Якщо хочете встановити усе самостійно, розташуйте файли `.svg`, `.theme`, `.desktop` у підкаталозі `ktuberling/pics` каталогу, що визначається командою ``qtpaths` `--paths GenericDataLocation``

## Для перекладачів

Окрім звичайного механізму перекладу міток і запитів програм за допомогою файлів `.po`, у цій програмі можна локалізувати і звуки.

Щоб створити нову звукову тему для &ktuberling;, вам слід:

- Записати звуки до файлів у форматі OGG Vorbis rc3.

- Створити файл ``дволітерний_код_вашої_мови`.soundtheme` за такою схемою:

      <language code="дволітерний_код_вашої_мови">
      <sound name="назва_звуку" file="відносний_шлях" />
      ...
      ...
      ...
      </language>

  - `дволітерний_код_вашої_мови` — це дволітерний код вашої мови, наприклад uk для української.

  - Кожному звуку має відповідати запис `<sound>`. `назва_звуку` має відповідати параметру назва_звуку, вказаному у темі ігрового майданчика (див. інструкцію з тем у файлі `pics/themes.HOWTO` ієрархії початкового коду програми). `відносний_шлях` вказує на відносний шлях, за яким ви маєте намір встановити файл з відповідним звуком, зазвичай, цим шляхом буде ``певний_унікальний_шлях`/`назва_звуку`.`формат`` (`певний_унікальний_шлях` може визначатися, наприклад, дволітерним кодом вашої мови).

- Якщо ви додаєте звукову тему &ktuberling; до теки вашої мови:

  - Додайте файли зі звуками і файли `.soundtheme` до каталогу `data/kdegames/ktuberling` сховища перекладів вашою мовою.

  - У тому самому каталозі вам слід розмістити і файл `CMakeLists.txt`, у якому вказати спосіб встановлення ваших файлів, зазвичай, це щось на зразок:

        FILE( GLOB oggfiles *.ogg )
        INSTALL( FILES ${oggfiles} DESTINATION ${KDE_INSTALL_DATADIR}/ktuberling/sounds/дволітерний_код_вашої_мови )
        INSTALL( FILES дволітерний_код_вашої_мови.soundtheme DESTINATION ${KDE_INSTALL_DATADIR}/ktuberling/sounds/ )

- Якщо ви бажаєте встановити тему власноруч, зробіть так:

  - Скопіюйте файл ``дволітерний_код_вашої_мови`.soundtheme` до підкаталогу `ktuberling/sounds` каталогу, що визначається командою ``qtpaths` `--paths GenericDataLocation``

  - Скопіюйте ваші_звукові_файли до підкаталогу `ktuberling/sounds/someUniquePath` у каталозі, що визначається командою ``qtpaths` `--paths GenericDataLocation``

Відомості про те, як працювати з механізмами перекладу у &kde;, можна отримати з Порад щодо перекладу &kde;.

## Для програмістів

Програмістові буде зовсім нескладно доповнити можливості &ktuberling;.

### Класи C++

`TopLevel`

- Керування вікном верхнього рівня і базове керування програмою.

`PlayGround`

- Опис одного з рівнів гри.

`ToDraw`

- Опис одного з графічних об’єктів, які слід намалювати.

`SoundFactory`

- Опис однієї з мов і її звуків.

`Action`

- Одна з дій користувача у послідовності скасування/повторення дій.