<chapter id="technical-reference">
<chapterinfo>

<authorgroup>
<author
><firstname
>Éric</firstname
> <surname
>Bischoff</surname
> </author>
<othercredit role="translator"
><firstname
>Юрій</firstname
><surname
>Чорноіван</surname
><affiliation
><address
><email
>yurchor@ukr.net</email
></address
></affiliation
><contrib
>Переклад українською</contrib
></othercredit
> 
</authorgroup>

<date
>11 травня 2016 року</date>
<releaseinfo
>1.0.0 (Програми 16.04)</releaseinfo>

<keywordset>
<keyword
>KDE</keyword>
<keyword
>KTuberling</keyword>
<keyword
>технічні подробиці</keyword>
</keywordset>
</chapterinfo>

<title
>Технічні подробиці</title>

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

<para
>Якщо ви розширюєте або додаєте якісь елементи до гри, будь ласка, не полінуйтеся і надішліть ваші доповнення супровіднику програми, <ulink url="mailto:alex@eyeos.org"
>Alex Fiestas</ulink
>, для включення до наступних випусків програми. </para>

<sect1 id="for-artists">
<title
>Для художників</title>

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

<itemizedlist>

<listitem>
    <para
>Намалювати поле гри у вигляді файла SVG, в якому ви маєте: <itemizedlist>
            <listitem
><para
>Назвати місце, куди будуть перетягуватися елементи «background».</para
></listitem>
            <listitem
><para
>Назвати кожен з елементів, придатних для перетягування, унікальною назвою.</para
></listitem>
        </itemizedlist>
    </para>
</listitem>

<listitem>
    <para
>Створити файл .theme за такою схемою:</para>
    <programlisting
>&lt;playground gameboard="<replaceable
>ваш_файл_SVG</replaceable
>" name="<replaceable
>стільничний_файл</replaceable
>"&gt;
    &lt;object name="<replaceable
>назва_елемента</replaceable
>" sound="<replaceable
>назва_звуку</replaceable
>" scale="<replaceable
>певне_значення</replaceable
>" /&gt;
    ...
    ...
    ...
    &lt;/playground&gt;
    </programlisting>
    <itemizedlist>
        <listitem
><para
><replaceable
>ваш_файл_SVG</replaceable
> — це назва файла svg, у якому знаходиться малюнок.</para
></listitem>
        <listitem
><para
><replaceable
>стільничний_файл</replaceable
> — назва стільничного (desktop) файла з назвою теми.</para
></listitem>
        <listitem
><para
>Кожному об’єкту має відповідати запис &lt;object&gt;. <replaceable
>назва_елемента</replaceable
> є унікальною назвою в межах файла SVG, <replaceable
>назва_звуку</replaceable
> — назва звукового файла, який буде відтворено під час перетягування елемента, щоб дізнатися більше, перегляньте інструкцію зі створення звукових тем.</para
></listitem>
        <listitem
><para
>Запис scale (масштаб) є необов’язковим. <replaceable
>певне_значення</replaceable
> — це масштабний коефіцієнт, який буде використано для малювання цього об’єкта поза межами сховища елементів, якщо не вказано значення 1.</para
></listitem>
    </itemizedlist>
</listitem>

<listitem>
    <para
>Створіть файл .desktop за такою схемою:</para>
    <programlisting
>[KTuberlingTheme]
    Name=<replaceable
>назва_теми</replaceable
>
    </programlisting>
    <itemizedlist>
        <listitem
><para
><replaceable
>назва_теми</replaceable
> — це назва-ідентифікатор теми, яку буде показано у меню «Ігровий майданчик».</para
></listitem>
    </itemizedlist>
</listitem>

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

<listitem>
    <para
>Якщо ви бажаєте власноруч встановити тему, скопіюйте файли .svg .theme .desktop до каталогу, що визначається так: `kde4-config --prefix`/share/apps/ktuberling/pics </para>
</listitem>

</itemizedlist>

</sect1>

<sect1 id="for-translators">
<title
>Для перекладачів</title>

<para
>Окрім звичайного механізму перекладу міток і запитів програм за допомогою файлів <literal role="extension"
>.po</literal
>, у цій програмі можна локалізувати і звуки. </para>

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

<itemizedlist>

<listitem
><para
>Записати звуки до файлів у форматі OGG Vorbis rc3.</para
></listitem>

<listitem>
<para
>Створити файл <replaceable
>дволітерний_код_вашої_мови</replaceable
>.soundtheme за такою схемою:</para>
<programlisting
>&lt;language code="<replaceable
>дволітерний_код_вашої_мови</replaceable
>"&gt;
&lt;sound name="<replaceable
>назва_звуку</replaceable
>" file="<replaceable
>відносний_шлях</replaceable
>" /&gt;
...
...
...
&lt;/language&gt;
</programlisting>
<itemizedlist>
<listitem
><para
><replaceable
>дволітерний_код_вашої_мови</replaceable
> — це дволітерний код вашої мови, наприклад uk для української.</para
></listitem>
<listitem
><para
>Кожному звуку має відповідати запис &lt;sound&gt;. <replaceable
>назва_звуку</replaceable
> має відповідати параметру назва_звуку, вказаному у темі ігрового майданчика (див. інструкцію з тем). <replaceable
>відносний_шлях</replaceable
> вказує на відносний шлях, за яким ви маєте намір встановити файл з відповідним звуком, зазвичай, цим шляхом буде певний_унікальний_шлях/назва_звуку.формат (певний_унікальний_шлях може визначатися, наприклад дволітерним кодом вашої мови).</para
></listitem>
</itemizedlist>
</listitem>

<listitem
><para
>Якщо ви додаєте звукову тему &ktuberling; до теки вашої мови:</para>
<itemizedlist>
<listitem
><para
>Додайте файли зі звуками і файли .soundtheme до каталогу data/kdegames/ktuberling сховища перекладів вашою мовою.</para
></listitem>
<listitem
><para
>У тому самому каталозі вам слід розмістити і файл CMakeLists.txt, у якому вказати спосіб встановлення ваших файлів, зазвичай, це щось на зразок:</para>
<!--FIXME l10n-kf5/*/data/kdegames/ktuberling/CMakeLists.txt has DATA_INSTALL_DIR, has this to be changed?-->
<programlisting
>FILE( GLOB oggfiles *.ogg )
INSTALL( FILES ${oggfiles} DESTINATION ${KDE_INSTALL_DATADIR}/ktuberling/sounds/<replaceable
>дволітерний_код_вашої_мови</replaceable
> )
INSTALL( FILES <replaceable
>дволітерний_код_вашої_мови</replaceable
>.soundtheme DESTINATION ${KDE_INSTALL_DATADIR}/ktuberling/sounds/ )
</programlisting>
</listitem>
</itemizedlist>
</listitem>

<listitem>
<para
>Якщо ви бажаєте встановити тему власноруч, зробіть так:</para>
<itemizedlist>
<listitem
><para
>Скопіюйте файли <replaceable
>дволітерний_код_вашої_мови</replaceable
>.soundtheme до каталогу `kf5-config --prefix`/share/apps/ktuberling/sounds</para
></listitem>
<listitem
><para
>Скопіюйте ваші_звукові_файли до каталогу `kf5-config --prefix`/share/apps/ktuberling/sounds/певний_унікальний_шлях</para
></listitem>
</itemizedlist>
</listitem>

</itemizedlist>

<para
>Відомості про те, як працювати з механізмами перекладу у &kde;, можна отримати з <ulink url="http://l10n.kde.org/docs/translation-howto/index.html"
>Порад щодо перекладу &kde;</ulink
>. </para>

</sect1>

<sect1 id="for-programmers">

<title
>Для програмістів</title>
<para
>Програмістові буде зовсім нескладно доповнити можливості &ktuberling;.</para>

<sect2 id="classes">
<title
>Класи C++</title>

<variablelist>
<varlistentry>
<term
><classname
>TopLevel</classname
></term>
<listitem>
<para
>Керування вікном верхнього рівня і базове керування програмою</para>
</listitem>
</varlistentry>

<varlistentry>
<term
><classname
>PlayGround</classname
></term>
<listitem>
<para
>Опис одного з рівнів гри</para
> </listitem>
</varlistentry>

<varlistentry>
<term
><classname
>ToDraw</classname
></term>
<listitem>
<para
>Опис одного з графічних <quote
>об’єктів</quote
>, які слід намалювати</para
> </listitem>
</varlistentry>

<varlistentry>
<term
><classname
>SoundFactory</classname
></term>
<listitem>
<para
>Опис однієї з мов і її звуків</para
> </listitem>
</varlistentry>

<varlistentry>
<term
><classname
>Action</classname
></term>
<listitem>
<para
>Одна з дій користувача у послідовності скасування/повторення дій</para
> </listitem>
</varlistentry>
</variablelist>

</sect2>

</sect1>
</chapter>
