# Підручник з &kappname;

## Вступ

&ksirk; — комп’ютеризована версія відомої стратегічної гри. У програмі передбачено можливість повної зміни елементів інтерфейсу та зображень, що використовуються у грі (шкірок). У цьому підручнику ви знайдете пояснення щодо створення нових шкірок з нуля за допомогою переглядача файлів, редактора зображень SVG і &kappname;.

Ось знімок вікна &kappname; Знімок вікна

Для створення нової шкірки слід виконати три основних кроки: створити ієрархію тек, створити графічні зображення, зібрані у єдиному файлі SVG, і належно розташувати спрайти та елементи назв за допомогою &kappname;.

## Створення шкірки &ksirk;

Зовнішній вигляд &ksirk; можна повністю змінити. Для користувачів, які мають таланти у малюванні, створення нової шкірки буде дуже простим: скопіюйте існуючу шкірку і змініть графіку у ній, оновіть дані у файлі налаштувань .desktop (цю операцію виконає &kappname;. Останнім кроком буде зміна файла опису даних, які слід встановлювати для шкірки.

Всі приклади (текст і зображення) взято з типової шкірки &ksirk;.

### Структура тек і файлів

- Data/ : дані, що використовуються програмою для обробки зображень шкірки.

  - CMakeLists.txt : описує файли, які слід встановити.

  - onu.desktop : головний файл опису шкірки. Його опис наведено нижче.

- Images/ : зображення шкірки (карта, спрайти тощо)

  - CMakeLists.txt : описує файли, які слід встановити.

  - pool.svg : карта і всі спрайти, які використовуються у цій шкірці.

  - map-mask.png : зображення, за яким програма визначає, над якою з країн на карті зараз знаходиться вказівник миші (див. нижче).

  - *.png : всі інші зображення є зображеннями кнопок.

- CMakeLists.txt/ : Описує файли, які слід встановити.

- Sounds/ : звукові файли шкірки.

#### Тека Data

У цій теці зберігається лише один файл, world.desktop. У цьому файлі міститься опис вмісту шкірки. Цей файл використовується для опису компонування світу і способу його показу. Вам не потрібно заповнювати його вручну: це зробить за вас &kappname;. Але, з міркувань повноти викладу, ми опишемо його структуру.

Група onu містить декілька записів країн, декілька записів націй і, нарешті, декілька записів континентів. Далі, різноманітні групи містять опис різних спрайтів, опис різних країн, континентів, націй і типів мети.

У наступних розділах наведено інформацію про вміст кожної з груп.

##### Група onu

##### Записи групи onu

Назва запису | Призначення
width | Ширина карти шкірки
height | Висота карти шкірки
skinpath | Шлях до шкірки, відносно шляху до даних програми (наприклад, skins/default)
nb-countries | Кількість країн (42 у типовій шкірці). Нижче має бути наведено таку саму кількість записів груп країн
nb-nationalities | Кількість націй (6 у типовій шкірці). Нижче має бути наведено таку саму кількість записів груп націй
nb-continents | Кількість континентів (6 у типовій шкірці). Нижче має бути наведено таку саму кількість записів груп континентів
pool | Шлях і назва файла набору (pool), відносно шляху до шкірки (наприклад, Images/pool.svg)
map-mask | Шлях і назва файла маски карти, відносно шляху до шкірки (наприклад, Images/map-mask.png)
format-version | Версія формату файла шкірки (2.0)
name | Показана назва шкірки
desc | Розгорнутий опис шкірки
fighters-flag-y-diff | Різниця висот між спрайтами прапорів і гармат
width-between-flag-and-fighter | Кількість пікселів між найлівішим пікселем прапора і найправішим пікселем простої гармати (без пострілу і вибуху)

##### Групи описів спрайтів

Кожен з типів спрайтів (прапор, піхота, кіннота, гармата, гармата, що стріляє, і гармата, що вибухає) визначається групою. Лише деякі з спрайтів мають запис ширини. Цей запис використовується для відносного позиціонування під час анімації: гармати, постріл і вибух не повинні «рухати» об’єкт навколо прапору країни під час битви.

##### Записи групи опису спрайта

Елемент | Призначення
width | Еталонна ширина кадрів спрайта прапора
height | Еталонна висота кадрів спрайта прапора
frames | Кількість кадрів у спрайті
versions | Кількість версій спрайтів прапора

##### Групи опису країн

Кожна з країн має свою групу onu, запис країни має власну групу з міткою у вигляді назви країни. У наведеній нижче таблиці показано записи цих груп.

##### Записи країн

Назва запису | Призначення
id | Цілий унікальний ідентифікатор країни, який має починатися з нуля (0)
name | Назва країни, яку буде показано гравцеві
<sprite>-point | Кожен з типів спрайтів (прапор, піхота тощо) на зображенні країни буде показано у певній позиції, яка визначається цим записом у вигляді двох цілих чисел, відокремлених комою
neighbours | Список ідентифікаторів країн, сусідніх з поточною країною

##### Групи опису націй

Кожна з націй має свою групу onu, запис нації має власну групу з міткою у вигляді назви нації. У наведеній нижче таблиці показано записи цих груп.

##### Записи націй

Назва запису | Призначення
name | Назва нації (наприклад, Японія)
leader | Ім’я, яке буде запропоновано гравцеві, який обрав цю націю
flag | Назва елемента спрайта прапора країни у файлі SVG onu

##### Групи опису континентів

Кожен з континентів має свою групу onu, запис континенту має власну групу з міткою у вигляді назви континенту. У наведеній нижче таблиці показано записи цих груп.

##### Записи континентів

Назва запису | Призначення
name | Назва континенту (наприклад, Африка)
id | Унікальне ціле число для ідентифікації континенту.
bonus | Кількість армій, які отримуватиме наприкінці ходу гравець, який володіє всіма країнами на континенті
continent-countries | Список ідентифікаторів країн на поточному континенті

##### Групи опису мети

Кожну мету має бути включено до списку групи onu, запис мети має власну групу, чиєю міткою є назва метри. У наведеній нижче таблиці показано список записів цих груп.

##### Записи мети

Назва запису | Призначення
type | Тип мети. Може мати значення континенту, країн або гравця
nbArmiesByCountry | встановлює мінімальну кількість армій, які гравець може залишати у кожній з країн
nbCountries | встановлює кількість країн, якими має володіти гравець
nbCountriesFallback | Призначено для типу мети гравця, якщо відповідного гравця буде вбито іншим гравцем, цим параметром встановлюється кількість країн, які має навзамін завоювати гравець
desc | Повний текстовий опис мети з відповідними заповнювачами (потрібна додаткова документація)
continents | Список ідентифікаторів континентів, які гравець має підкорити

#### Тека Images

У цій теці містяться кнопки, специфічні для &ksirk; і файл SVG з назвою pool (набір), у якому міститься карта і всі спрайти.

##### Файл pool.svg

У цьому файлі SVG містяться всі спрайти гри. Кожен з його елементів має таку назву, щоб програма могла визначити і показати його окремо від інших.

У типовій шкірці спрайтами є прапори, піхота, кіннота і гармата. Піхота відповідає одній армії, кіннота — п’яти, а гармата — десяти. Гармати також використовуються для показу битв. Ось чому у типовій шкірці три види спрайтів гармат: звичайна нерухома гармата або гармата, що рухається, гармата, що стріляє, гармата, що вибухає.

Кожне з зображень спрайта складається з об’єднання різних виглядів об’єкта, а кожен з виглядів, — з кадрів. Вигляди має бути впорядковано вертикально, а кадри — горизонтально. Місце, де зображення буде розрізано визначається за висотою зображення і кількістю виглядів, а ширина за кількістю кадрів. Всі ці дані знаходяться у файлі onu.desktop.

Приклад зображення спрайта: cannon.png

Спрайти армій мають три різних вигляди, згори вниз:

- дивиться праворуч

- дивиться ліворуч і

- в обличчя

Прапори мають лише один вигляд. Всі елементи тла спрайтів слід зробити прозорими.

Приклад спрайта зображення прапора: italy.png

##### Елементи набору

Назва елемента | Зразок зображення | Призначення
map |  | Карта шкірки світу. Країни можуть мати довільну форму, але їх має бути зібрано у придатні для розпізнавання оком континенти, лише за розташуванням або лише за кольором.
italy |  | Прапор нації Італії. Кожна з націй повинна мати такий запис.
infantry |  | Піктограма для однієї армії
cavalry |  | Піктограма для п’яти армій
cannon |  | Піктограма для десяти армій
firing |  | Піктограма для показу армій під час битви
exploding |  | Піктограма для показу армій, які програли битву
Аляска |  | Форма країни Аляска. Її буде використано для підсвічування цієї країни. У кожної з країн лише одна така форма. Її колір не використовується, отже його можна обрати будь-яким.
reddices |  | Для показу результатів битви буде використано червоні кістки
bluedices |  | Для показу результатів битви буде використано сині кістки
mark1 |  | Цю позначку буде додано до спрайтів учасників битви, вона позначатиме кількість армій, які беруть участь у битві, у нашому прикладі 1. Існують також елементи mark2 і mark3.

##### Файл map-mask.png

Цей файл png також відповідає карті шкірки світу, але з закодованими кольорами, за допомогою яких можна точно визначити кожну з країн. Країни повинні мати принаймні такі самі форми, які мають відповідні країни у файлі map.png так, щоб користувач, який навів вказівник на будь-яку частину певної країни і клацнув лівою кнопкою миші, міг обрати потрібну йому країну. Країни, які складаються з невеличких островів, на зразок Індонезії, можна збільшити порівняно з відповідниками з файла map.png, щоб полегшити вибір відповідної країни. Зразок маски карти

Компонент синього кольору (у моделі RGB) у кольорі країни призначено для ідентифікації країни: індексом 0 позначається країна 0 у файлі onu.xml, індексом 1 — країна 1 тощо. Білим кольором (0xFFFFFF у RGB) позначається відсутність країни (моря або, чому б ні, незаселені території).

##### Зображення кнопок

Назви файлів включено до коду програми, отже їх не можна змінювати. У наведеній нижче таблиці показано всі кнопки, які слід намалювати для теми.

##### Кнопки графічного інтерфейсу користувача

Зображення | Назва файла | Призначення
| newNetGame.png | Спроба приєднання до гри мережею
| recycling.png | Після того, які всі гравці розташують свої армії, можна розпочинати зміну дислокацій (а саме, перестановку армій). Ця кнопка запрошує до такої передислокації.
| recyclingFinished.png | Вибір відмови від перерозподілу. У всіх клієнтських вікнах має бути ця кнопка, яку слід буде натиснути для того, щоб повністю завершити розподіл.
| nextPlayer.png | Завершення ходу поточного гравця і перехід ходу до наступного гравця, або перехід до наступного ходу, якщо гравець ходив останнім.
| attackOne.png | Вибір початку атаки силами однієї армії.
| attackTwo.png | Вибір початку атаки силами двох армій.
| attackThree.png | Вибір початку атаки силами трьох армій.
| defendOne.png | Вибір захисту атакованої країни силами однієї армії.
| defendTwo.png | Вибір захисту атакованої країни силами двох армій.
| moveArmies.png | Вибір початку пересування армій між двома країнами (остання дія протягом ходу)

#### Тека Sounds

У цій теці містяться три звукових файла:

- roll.wav відтворюється під час пересування армій

- cannon.wav відтворюється під час ведення вогню і

- crash.wav відтворюється під час вибуху гармати

### Користування &kappname;

Після створення графічних елементів у належній теці та файлі SVG, вам достатньо буде створити записи країн, гравців тощо, і пов’язати їх з належними елементами набору SVG. Це можна зробити за допомогою &kappname;. Зауважте, що ви можете дізнатися про призначення частин інтерфейсу програми за допомогою підказок та контекстної довідки, доступ до якої, зазвичай, можна отримати натисканням комбінації клавіш Ctrl+F1.

Ось знімок вікна &kappname; Знімок вікна

## Довідка щодо команд

### Головне вікно &kappname;

#### Кнопки

Завантажити Завантажити

- Наказує програмі завантажити існуючу шкірку.

Зберегти Зберегти

- Зберігає поточну шкірку, яку ви редагуєте.

## Довідник розробника для &kappname;

Будь ласка, відвідайте сторінку http://api.kde.org/. Там ви знайдете відомості щодо програмного інтерфейсу (API).

## Запитання і відповіді

&updating.documentation;

## Подяки і ліцензія

&kappname;

Авторські права на програму належать Gael de Chalendar kleag@free.fr, ©2009

Авторські права на документацію до програми належать Gael de Chalendar kleag@free.fr, ©2009

Переклад українською: Юрій Чорноіван yurchor@ukr.net

&underFDL; &underGPL;
&documentation.index;