1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
|
<chapter id="technical-reference">
<chapterinfo>
<authorgroup>
<author
><firstname
>Éric</firstname
> <surname
>Bischoff</surname
> </author>
<othercredit role="translator"
> <firstname
>Stefan</firstname
> <surname
>Asserhäll</surname
> <affiliation
><address
><email
>[email protected]</email
></address
></affiliation
> <contrib
>Översättare</contrib
></othercredit
>
</authorgroup>
<date
>2006-05-05</date
> <releaseinfo
>0.05.01</releaseinfo
> <keywordset>
<keyword
>KDE</keyword>
<keyword
>Potatismannen</keyword>
<keyword
>teknisk referens</keyword>
</keywordset>
</chapterinfo>
<title
>Teknisk referens</title>
<para
>Potatismannen erbjuder en mjuk och lönande inledning till anpassning och programmering av &kde;. Programmet kan utökas. Utan att koda kan till exempel nya lekplatser läggas till genom att ändra grafikfiler. Genom att lägga till lämpliga ljudfiler, kan översättare ändra ljuden till sitt modersmål! </para>
<para
>Om du utökar eller lägger till något i spelet, fundera på att skicka dina tillägg till utvecklaren <ulink url="mailto:[email protected]"
>Éric Bischoff</ulink
> så att de kan läggas till i framtida utgåvor. </para>
<sect1 id="for-artists">
<title
>För grafiker</title>
<para
>Storleken och formen på lekplatsen och antalet objekt kan ändras. Nya lekplatser kan läggas till. Bara två bildfiler behöver skapas för varje lekplats: ett spelbräde och en mask. Maximalt åtta lekplatser tillåts, med endast tre i användning för närvarande. </para>
<para
>Sex bilder används i Potatismannen: <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
> och <filename
>aquarium-mask.png</filename
>. Den normala platsen för de här filerna är katalogen <filename class="directory"
>$KDEDIR/share/apps/ktuberling/pics/</filename
>. </para>
<para
>Den första typen bilder, <filename
>*-game.png</filename
> innehåller lekplatsen och objekten som användaren väljer. Det här är grafiken som användaren ser när spelet används. </para>
<para
>Den andra typen bilder, <filename
>*-mask.png</filename
> innehåller bara masker för objekt. Maskerna används för att avgränsa kanterna på objekten, och i vissa fall ge objekten en viss genomskinlighet (till exempel glasögonen). Det rekommenderas, men krävs inte, att placera objekten på samma plats i spelbrädesfilen som i maskfilen. </para>
<para
>I samma katalog, talar filen som heter <filename
>layout.xml</filename
> (<filename
>$KDEDIR/share/apps/ktuberling/pics/layout.xml</filename
>) om vilka bilder som ska användas och länkar ihop dem med menyalternativ. Den innehåller också platsparametrar för spelbrädet, objekten på spelbrädet och maskerna. Den tilldelar den ljuden till objekt och placerar objekten i grupper. Slutligen deklarerar den språk som en uppsättning med översatta ljud. Den följer vanlig &XML;-syntax (se <link linkend="layout-details"
>nedan</link
> för detaljer). </para>
<para
>Fortfarande i samma katalog, upprepar en fil som heter <filename
>layout.i18n</filename
> (<filename
>$KDEDIR/share/apps/ktuberling/pics/layout.xml</filename
>) strängarna i <filename
>layout.xml</filename
> som kan översättas: <itemizedlist>
<listitem
><para
>Menyalternativen som låter dig välja lekplats och språket</para
></listitem>
<listitem
><para
>Namnen på objektkategorier</para
></listitem>
</itemizedlist>
</para>
<para
>En katalog ovanför finns en fil som heter <filename
>ktuberlingui.rc</filename
> <filename
>$KDEDIR/share/apps/ktuberling/ktuberlingui.rc</filename
>), som är en andra &XML;-fil där Potatismannens menyer beskrivs. Den ska innehålla en <markup
><action></markup
>-tagg för varje lekplats och språk. Det symboliska namnet på åtgärden i den här filen ska vara identiskt med det symboliska namnet på åtgärden i <filename
>layout.xml</filename
>. </para>
</sect1>
<sect1 id="for-translators">
<title
>Översättning</title>
<para
>Förutom den vanliga <literal role="extension"
>.po</literal
>-fil mekanismen för att översätta programrubriker och promptrar, kan ljuden också anpassas. </para>
<para
>Om de olika översättarna kan spela in sina röster i <literal role="extension"
>.wav</literal
> filer, kan de lagra filerna i en språkspecifik underkatalog i katalogen sounds. Namnen på ljuden tilldelas sedan till en fil i filen <filename
>layout.xml</filename
>. Om språket som översätts till är till exempel italienska, kan översättaren spela in sin röst i <literal role="extension"
>.wav</literal
>-filer som placeras i <filename
>$KDEDIR/share/apps/ktuberling/sounds/it</filename
>. Därefter kan de tilldela ljudet som heter <quote
>hat</quote
> till filnamnet <filename
>it/capello.wav</filename
>. </para>
<para
>I en framtida utgåva, kommer &ktuberling; att använda OGG Vorbis rc3 filformatet för ljud. För närvarade är det möjligt att konvertera WAV-filer till OGG Vorbis rc3, med följande kommandorad: <screen
><prompt
>$</prompt
> <userinput
>oggenc -q 10 -o <replaceable
>ljud.ogg</replaceable
> <replaceable
>ljud.wav</replaceable
></userinput
>
</screen>
</para>
<para
>Information om hur man arbetar med översättningsmekanismen i &kde; finns tillgänglig på <ulink url="http://i18n.kde.org/translation-howto/index.html"
>&kde; Translation HOWTO</ulink
>. </para>
</sect1>
<sect1 id="for-programmers">
<title
>För programmerare</title>
<para
>Potatismannen är inte särskilt svår att utöka för programmerare.</para>
<sect2 id="classes">
<title
>C++ klasser</title>
<variablelist>
<varlistentry>
<term
><classname
>TopLevel</classname
></term>
<listitem>
<para
>Toppnivåfönster och grundläggande programhantering</para>
</listitem>
</varlistentry>
<varlistentry>
<term
><classname
>PlayGround</classname
></term>
<listitem>
<para
>Beskrivning av en av spelets nivåer</para
> </listitem>
</varlistentry>
<varlistentry>
<term
><classname
>ToDraw</classname
></term>
<listitem>
<para
>Beskrivning av ett av de grafiska <quote
>objekten</quote
> som ska ritas</para
> </listitem>
</varlistentry>
<varlistentry>
<term
><classname
>SoundFactory</classname
></term>
<listitem>
<para
>Beskrivning av ett av språken och dess ljud</para
> </listitem>
</varlistentry>
<varlistentry>
<term
><classname
>Action</classname
></term>
<listitem>
<para
>En av användarens åtgärder i stacken med ångra och gör om.</para
> </listitem>
</varlistentry>
</variablelist>
</sect2>
<sect2 id="files-structure">
<title
>Struktur för filen <literal role="extension"
>.tuberling</literal
></title>
<para
>En <literal role="extension"
>.tuberling</literal
>-fil innehåller all nödvändig data för att rita om en potatisman. Den kan redigeras med en vanlig texteditor.</para>
<para
>Den första raden innehåller antalet lekplatser.</para>
<para
>På alla andra rader finns det ett grafiskt objekt per rad, i den ordning som används för att rita upp dem. Varje rad innehåller fem tal: objektets identifierare och rektangeln där det ska ritas (vänster, över, höger, under). Talen skiljs med mellanslag.</para>
</sect2>
</sect1>
<sect1 id="layout-details">
<title
>Struktur för layoutfilen (<filename
>layout.xml</filename
>)</title>
<para
>Toppnivåtaggen är unik och heter <markup
><ktuberling></markup
>. Den innehåller flera <markup
><playground></markup
>-taggar, en för varje lekplats, och flera <markup
><language></markup
>-taggar, en per språk. </para>
<para
>Taggen <markup
><playground></markup
> har två attribut: <markup
>gameboard</markup
> och <markup
>masks</markup
>. Dessa attribut ger namnen på filerna som innehåller bilderna. Taggen <markup
><playground></markup
> innehåller också en tagg som heter <markup
><menuitem></markup
>, en tagg som heter <markup
><editablearea></markup
>, flera taggar som heter <markup
><category></markup
> och flera taggar som heter <markup
><object></markup
>. </para>
<para
>Taggen <markup
><menuitem></markup
> beskriver identifieraren för menyalternativet som tillåter att platsen för området där man kan släppa objekt väljs, och namnet på det här menyalternativet. Den här identifieraren ska vara identisk med den i <filename
>ktuberlingui.rc</filename
>. </para>
<para
>Taggen <markup
><editablearea></markup
> beskriver platsen för området där man kan släppa objekt, och namnet på ljudet som hör ihop med detta. </para>
<para
>Taggen <markup
><category></markup
> beskriver platsen och namnet på en text som anger en grupp av objekt. Den kan till exempel beskriva platsen och namnet på gruppen med <quote
>godsaker</quote
>. </para>
<para
>Taggen <markup
><object></markup
> beskriver platsen för ett objekt (på spelbrädet och i maskerna), samt namnet på ljudet som hör ihop med det. </para>
<para
>Taggen <markup
><language></markup
> har ett attribut: <markup
>code</markup
>. Dessa attribut ger koden på landet för det språket. Taggen <markup
><language></markup
> innehåller också en tagg som heter <markup
><menuitem></markup
> och flera taggar som heter <markup
><sound></markup
>. </para>
<para
>Taggarna på lägre nivå förklaras inte här, eftersom deras betydelse är ganska rättfram. Om du ändrar <filename
>layout.xml</filename
>, glöm då inte att också ändra <filename
>layout.i18n</filename
> och <filename
>ktuberlingui.rc</filename
>. </para>
</sect1>
</chapter>
|