<chapter id="technical-reference"> <chapterinfo> <authorgroup> <author ><firstname >Eric</firstname > <surname >Bischoff</surname > </author> <othercredit role="translator" ><firstname >Robert</firstname ><surname >Gomułka</surname ><affiliation ><address ><email >carramba@epf.pl</email ></address ></affiliation ><contrib >Polskie tłumaczenie</contrib ></othercredit > </authorgroup> <date >2002-04-10</date > <releaseinfo >0.03.02</releaseinfo > <keywordset> <keyword >KDE</keyword> <keyword >KTuberling</keyword> <keyword >dokumentacja techniczna</keyword> </keywordset> </chapterinfo> <title >Dokumentacja techniczna</title> <para >&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! </para> <para >Jeżeli rozszerzasz, lub dodajesz coś do gry, pomyśl o przesłaniu Twoich dodatków do programisty <ulink url="mailto:e.bischoff@noos.fr" >Eric Bischoff</ulink >, w celu włączenia w kolejnych wersjach. </para> <sect1 id="for-artists"> <title >Dla artystów</title> <para >Rozmiar i kształt pola gry, a także liczba obiektów mogą podlegać zmianom. Można dodawać nowe plansze. Tylko dwa pliki graficzne muszą być stworzone dla każdej planszy: plansza gry i maska. Maksymalnie dozwolonych jest 8 plansz, z których obecnie używa się 3. </para> <para >W programie &ktuberling; używa się sześciu typów obrazków: <filename >potato-game.png</filename >, <filename >potato-mask.png</filename >, <filename >penguin-game.png</filename >, <filename >penguin-mask.png</filename >, <filename >aquarium-game.png</filename > i <filename >aquarium-mask.png</filename >. Standardowym położeniem tych plików jest katalog <filename class="directory" >$KDEDIR/share/apps/ktuberling/pics/</filename >. </para> <para >Pierwszy typ obrazków, <filename >*-game.png</filename >, przechowuje planszę i obiekty, które wybiera użytkownik. Jest to grafika, którą widzi użytkownik podczas gry. </para> <para >Drugi typ obrazków, <filename >*-mask.png</filename >, zawiera wyłącznie maski obiektów. Maski używane są do określania granic obiektów, a także, w niektórych przypadkach, dodania obiektowi pewnej przezroczystości (na przykład okulary). Obowiązkowe jest umieszczenie obiektów w tym samym położeniu zarówno w pliku planszy, jak i pliku masek. </para> <para >W tym samym katalogu plik o nazwie <filename >layout.xml</filename >. (<filename >$KDEDIR/share/apps/ktuberling/pics/layout.xml</filename >) mówi, których obrazków użyć i łączy je z pozycjami menu. Zawiera również parametry pozycji planszy, a także obiektów w polu gry i maskach. Ostatecznie deklaruje języki jako zbiory przetłumaczonych dźwięków. Stosuje się do standardowej składni XML (zobacz szczegóły na <link linkend="layout-details" >below</link >). </para> <para >Ciągle w tym samym katalogu, plik o nazwie <filename >layout.i18n</filename > (<filename >$KDEDIR/share/apps/ktuberling/pics/layout.xml</filename >) podsumowuje teksty w <filename >layout.xml</filename >, które mogą być przetłumaczone: <itemizedlist> <listitem ><para >Pozycje menu, które pozwalają wybrać planszę i język</para ></listitem> <listitem ><para >Nazwy kategorii obiektów</para ></listitem> </itemizedlist> </para> <para >Jeden poziom wyżej, plik o nazwie <filename >ktuberlingui.rc</filename > (<filename >$KDEDIR/share/apps/ktuberling/ktuberlingui.rc</filename >) jest kolejnym plikiem XML opisującym menu programu &ktuberling;. Powinien zawierać jeden znacznik <markup ><action></markup > dla planszy i języka. Nazwa symboliczna akcji w tym pliku powinna być identyczna z nazwą symboliczną w <filename >layout.xml</filename >. </para> </sect1> <sect1 id="for-translators"> <title >Tłumaczenie</title> <para >Oprócz zwyczajowego mechanizmu plików <literal role="extension" >.po</literal > do tłumaczenia etykiet i tekstów zachęty, dźwięki również mogą zostać zlokalizowane. </para> <para >Jeśli różni tłumacze mogą nagrać swój głos do pliku <literal role="extension" >.wav</literal >, mogą go zachować do określonego przez język podkatalogu w katalogu z dźwiękami. Nazwa dźwięku jest później przypisywana do pliku <filename >layout.xml</filename >. Na przykład gdy docelowym językiem jest włoski, tłumacze mogą nagrać swój głos w plikach <literal role="extension" >.wav</literal > umieszczonych w <filename >$KDEDIR/share/apps/ktuberling/sounds/it</filename >. Następnie mogą przydzielić dźwięk o nazwie <quote >hat</quote > do nazwy pliku <filename >it/cappello.wav</filename >. </para> <para >W kolejnych wersjach &ktuberling; będzie używał dla dźwięków formatu OGG Vorbis rc3. Wtedy również będzie można skonwertować pliki WAV do OGG Vorbis rc3 za pomocą poniższej linii: <screen ><prompt >$</prompt > <userinput >oggenc_rc3 -o <replaceable >sound.ogg</replaceable > <replaceable >sound.wav</replaceable ></userinput > </screen> </para> <para >Informacja jak pracować z mechanizmami tłumaczeń w &kde; jest dostępna w <ulink url="http://i18n.kde.org/translation-howto/index.html" >The KDE Translation HOWTO</ulink >. </para> </sect1> <sect1 id="for-programmers"> <title >Dla programistów</title> <para >&ktuberling; tak naprawdę nie jest trudny do rozszerzenia przez programistów.</para> <sect2 id="classes"> <title >klasy C++</title> <variablelist> <varlistentry> <term ><classname >TopLevel</classname ></term> <listitem> <para >Okno górnego poziomu i podstawowe zarządzanie programem</para> </listitem> </varlistentry> <varlistentry> <term ><classname >PlayGround</classname ></term> <listitem> <para >Opis jednego z poziomów gry</para > </listitem> </varlistentry> <varlistentry> <term ><classname >ToDraw</classname ></term> <listitem> <para >Opis jednego z <quote >obiektów</quote > graficznych do narysowania</para > </listitem> </varlistentry> <varlistentry> <term ><classname >SoundFactory</classname ></term> <listitem> <para >Opis jednego z języków i jego dźwięków</para > </listitem> </varlistentry> <varlistentry> <term ><classname >Action</classname ></term> <listitem> <para >Jedna z akcji użytkownika na stosie cofnij/ponów</para > </listitem> </varlistentry> </variablelist> </sect2> <sect2 id="files-structure"> <title >Struktura plików <literal role="extension" >.tuberling</literal ></title> <para >Plik <literal role="extension" >.tuberling</literal > przechowuje dane niezbędne do odrysowania bulwy. Może być edytowany zwykłym edytorem tekstu.</para> <para >Pierwsza linia przechowuje numer planszy.</para> <para >We wszystkich pozostałych liniach znajduje się po jednym obiekcie graficznym, w kolejności używanej do ich narysowania. Każda linia zawiera pięć liczb: identyfikator obiektu i prostokąt, gdzie powinien być narysowany (lewo, góra, prawo, dół). Liczby oddzielone są spacjami.</para> </sect2> </sect1> <sect1 id="layout-details"> <title >Struktura pliku rozmieszczenia (<filename >layout.xml</filename >)</title> <para >Znacznik górnego poziomu jest unikalny, a jego nazwa to <markup ><ktuberling></markup >. Zawiera liczne znaczniki <markup ><playground></markup >, po jednym dla planszy oraz liczne <markup ><language></markup >, po jednym dla języka. </para> <para >Znacznik <markup ><playground></markup > posiada dwa atrybuty. <markup >gameboard</markup > i <markup >masks</markup >. Atrybuty te dają nazwę plików przechowujących obrazki. <markup ><playground></markup > zawiera również jeden znacznik <markup ><menuitem></markup >, jeden znacznik <markup ><editablearea></markup >, wiele znaczników <markup ><category></markup > i <markup ><object></markup >. </para> <para >Znacznik <markup ><menuitem></markup > opisuje identyfikator akcji pozycji menu pozwalając na wybór położenia obszaru, na którym można upuszczać obiekty, a także etykietę tej pozycji menu. Ten identyfikator akcji powinien być identyczny z tym w <filename >ktuberlingui.rc</filename >. </para> <para >Znacznik <markup ><editablearea></markup > opisuje położenie obszaru, na którym można upuszczać obiekty, a także nazwę dźwięku z nim powiązanego. </para> <para >Znacznik <markup ><category></markup > opisuje położenie i etykietę tekstu opisującego grupę obiektów. Na przykład, może opisywać położenie i tekst grupy <quote >kosztowności</quote >. </para> <para >Znacznik <markup ><object></markup > opisuje położenie (na planszy i w maskach) obiektu, jak również nazwę dźwięku z nim powiązanego. </para> <para >Znacznik <markup ><language></markup > posiada jeden atrybut: <markup >code</markup >. Zawiera on kod ustawień regionalnych danego języka. Znacznik <markup ><language></markup > zawiera również jeden znacznik <markup ><menuitem></markup > i wiele znaczników <markup ><sound></markup >. </para> <para >Znaczniki niższego poziomu nie są tu wyjaśnione, ponieważ ich znaczenie jest raczej oczywiste. Po zmianie <filename >layout.xml</filename > nie zapomnij odpowiednio zmodyfikować <filename >layout.i18n</filename > i <filename >ktuberlingui.rc</filename >. </para> </sect1> </chapter>