Warning, /games/ktuberling/doc/technical-reference.docbook is written in an unsupported language. File is not indexed.
0001 <chapter id="technical-reference"> 0002 <chapterinfo> 0003 0004 <authorgroup> 0005 <author> 0006 <firstname>Éric</firstname> 0007 <surname>Bischoff</surname> 0008 </author> 0009 <!-- TRANS:ROLES_OF_TRANSLATORS --> 0010 </authorgroup> 0011 0012 <date>2021-10-04</date> 0013 <releaseinfo>KDE Gear 21.08</releaseinfo> 0014 0015 <keywordset> 0016 <keyword>KDE</keyword> 0017 <keyword>KTuberling</keyword> 0018 <keyword>technical reference</keyword> 0019 </keywordset> 0020 </chapterinfo> 0021 0022 <title>Technical References</title> 0023 0024 <para> 0025 &ktuberling; offers a gentle and rewarding introduction to &kde; customization 0026 and programming. The application can be extended. For example, without any 0027 coding, new playgrounds can be added by changing the graphics files. By 0028 adding appropriate sound files, translators can change the sounds to their 0029 native tongue! 0030 </para> 0031 0032 <para><!--FIXME email alex ok?--> 0033 If you extend or add to the game please consider sending your additions to the 0034 maintainer <ulink url="mailto:alex@eyeos.org">Alex Fiestas</ulink> for 0035 inclusion in future releases. 0036 </para> 0037 0038 <sect1 id="for-artists"> 0039 <title>For Artists</title> 0040 0041 <para> 0042 To create a new &ktuberling; playground you have to: 0043 </para> 0044 0045 <itemizedlist> 0046 <listitem> 0047 <para>Draw the playground in a &SVG; file, there you have to: 0048 <itemizedlist> 0049 <listitem><para>Name the place where items can dragged <quote>background</quote>.</para></listitem> 0050 <listitem><para>Name each of the draggable items with an unique name.</para></listitem> 0051 </itemizedlist> 0052 </para> 0053 </listitem> 0054 0055 <listitem> 0056 <para>Create a <literal role="extension">.theme</literal> file, it has to follow this schema:</para> 0057 <programlisting> 0058 <playground gameboard="<replaceable>yourSVGFile</replaceable>" name="<replaceable>theDesktopFile</replaceable>"> 0059 <object name="<replaceable>itemName</replaceable>" sound="<replaceable>soundName</replaceable>" scale="<replaceable>someValue</replaceable>" /> 0060 ... 0061 ... 0062 ... 0063 </playground> 0064 </programlisting> 0065 <itemizedlist> 0066 <listitem><para><replaceable>yourSVGFile</replaceable> is the name of the &SVG; file that has the drawing.</para></listitem> 0067 <listitem><para><replaceable>theDesktopFile</replaceable> is the name of the desktop file that has the 0068 name of the theme.</para></listitem> 0069 <listitem><para>For each object you need a <literal><object></literal> entry. 0070 <replaceable>itemName</replaceable> is the unique name you used on the &SVG; file, 0071 <replaceable>soundName</replaceable> is the sound name that will be played when dragging it, see the 0072 <filename>sounds/soundthemes.HOWTO</filename> file from source code for more information.</para></listitem> 0073 <listitem><para><literal>scale</literal> is optional and <replaceable>someValue</replaceable> is the scale 0074 factor that will be used when drawing this object outside the warehouse, if not specified is 1.</para></listitem> 0075 </itemizedlist> 0076 </listitem> 0077 0078 <listitem> 0079 <para>Create a <literal role="extension">.desktop</literal> file, it has to follow this schema:</para> 0080 <programlisting> 0081 [KTuberlingTheme] 0082 Name=<replaceable>themeName</replaceable> 0083 </programlisting> 0084 <itemizedlist> 0085 <listitem><para><replaceable>themeName</replaceable> is the name that identifies the theme, will be shown in the 0086 Playground menu.</para></listitem> 0087 </itemizedlist> 0088 </listitem> 0089 0090 <listitem> 0091 <para>If you are adding the theme to &ktuberling; repository, add <literal role="extension">.svg</literal>, 0092 <literal role="extension">.theme</literal>, and <literal role="extension">.desktop</literal> files to 0093 <literal>FILES</literal> section of the <filename>CMakeLists.txt</filename> into the 0094 <filename class="directory">pics/</filename> folder. 0095 </para> 0096 </listitem> 0097 0098 <listitem> 0099 <para>If you want to install it for yourself, place <literal role="extension">.svg</literal>, 0100 <literal role="extension">.theme</literal>, and <literal role="extension">.desktop</literal> files into 0101 the <filename class="directory">ktuberling/pics</filename> folder in 0102 <userinput><command>qtpaths</command> <option>--paths GenericDataLocation</option></userinput> 0103 </para> 0104 </listitem> 0105 </itemizedlist> 0106 0107 </sect1> 0108 0109 <sect1 id="for-translators"> 0110 <title>For Translators</title> 0111 0112 <para> 0113 Besides the usual <literal role="extension">.po</literal> files mechanism for 0114 translating program labels and prompts, the sounds can be localized too. 0115 </para> 0116 0117 <para> 0118 To create a new &ktuberling; sound theme you have to: 0119 </para> 0120 0121 <itemizedlist> 0122 <listitem><para>Record the sounds in OGG Vorbis rc3 file format.</para></listitem> 0123 <listitem><para>Create a <filename><replaceable>yourLanguageTwoLetterCode</replaceable>.soundtheme</filename> 0124 file, it has to follow this schema:</para> 0125 <programlisting> 0126 <language code="<replaceable>yourLanguageTwoLetterCode</replaceable>"> 0127 <sound name="<replaceable>soundName</replaceable>" file="<replaceable>relativePath</replaceable>" /> 0128 ... 0129 ... 0130 ... 0131 </language> 0132 </programlisting> 0133 <itemizedlist> 0134 <listitem><para><replaceable>yourLanguageTwoLetterCode</replaceable> is your language two 0135 letter code, for example gl for Galician.</para></listitem> 0136 <listitem><para>For each sound a <literal><sound></literal> entry. <replaceable>soundName</replaceable> 0137 should match with the soundName specified in the playground theme (see the <filename>pics/themes.HOWTO</filename> 0138 from source code). <replaceable>relativePath</replaceable> should be the relative path you are going 0139 to install the file with this sound to, typically it will be 0140 <filename><replaceable>someUniquePath</replaceable>/<replaceable>soundName</replaceable>.<replaceable>format</replaceable></filename> 0141 (<replaceable>someUniquePath</replaceable> can be your language two letter code for example).</para></listitem> 0142 </itemizedlist> 0143 </listitem> 0144 0145 <listitem><para>If you are adding the sound theme to &ktuberling; in your language folder:</para> 0146 <itemizedlist> 0147 <listitem><para>Add the sound files and the <literal role="extension">.soundtheme</literal> 0148 files into the <filename class="directory">data/kdegames/ktuberling</filename> folder of your 0149 language translations.</para></listitem> 0150 <listitem><para>On that very same dir you need a <filename>CMakeLists.txt</filename> file 0151 describing how to install the files, typically it will be.</para> 0152 <!--FIXME l10n-kf5/*/data/kdegames/ktuberling/CMakeLists.txt has DATA_INSTALL_DIR, has this to be changed?--> 0153 <programlisting> 0154 FILE( GLOB oggfiles *.ogg ) 0155 INSTALL( FILES ${oggfiles} DESTINATION ${KDE_INSTALL_DATADIR}/ktuberling/sounds/<replaceable>yourLanguageTwoLetterCode</replaceable> ) 0156 INSTALL( FILES <replaceable>yourLanguageTwoLetterCode</replaceable>.soundtheme DESTINATION ${KDE_INSTALL_DATADIR}/ktuberling/sounds/ ) 0157 </programlisting> 0158 </listitem> 0159 </itemizedlist> 0160 </listitem> 0161 0162 <listitem><para>If you want to install it for yourself:</para> 0163 <itemizedlist> 0164 <listitem><para>Place <filename><replaceable>yourLanguageTwoLetterCode</replaceable>.soundtheme</filename> 0165 file into the <filename class="directory">ktuberling/sounds</filename> folder in 0166 <userinput><command>qtpaths</command> <option>--paths GenericDataLocation</option></userinput></para></listitem> 0167 <listitem><para>Place your sound files into the 0168 <filename class="directory">ktuberling/sounds/<replaceable>someUniquePath</replaceable></filename> folder in 0169 <userinput><command>qtpaths</command> <option>--paths GenericDataLocation</option></userinput></para></listitem> 0170 </itemizedlist> 0171 </listitem> 0172 </itemizedlist> 0173 0174 <para> 0175 Information on how to work with the translation mechanisms in &kde; is available 0176 in <ulink url="https://l10n.kde.org/docs/translation-howto/index.html">The 0177 &kde; Translation HOWTO</ulink>. 0178 </para> 0179 0180 </sect1> 0181 0182 <sect1 id="for-programmers"> 0183 0184 <title>For Programmers</title> 0185 <para>&ktuberling; isn't really difficult to extend for programmers.</para> 0186 0187 <sect2 id="classes"> 0188 <title>C++ classes</title> 0189 0190 <variablelist> 0191 <varlistentry> 0192 <term><classname>TopLevel</classname></term> 0193 <listitem><para>Top-level window and basic program management.</para></listitem> 0194 </varlistentry> 0195 0196 <varlistentry> 0197 <term><classname>PlayGround</classname></term> 0198 <listitem><para>Description of one of the game levels.</para></listitem> 0199 </varlistentry> 0200 0201 <varlistentry> 0202 <term><classname>ToDraw</classname></term> 0203 <listitem><para>Description of one of the graphical <quote>objects</quote> to be 0204 drawn.</para></listitem> 0205 </varlistentry> 0206 0207 <varlistentry> 0208 <term><classname>SoundFactory</classname></term> 0209 <listitem><para>Description of one of the languages and its sounds.</para></listitem> 0210 </varlistentry> 0211 0212 <varlistentry> 0213 <term><classname>Action</classname></term> 0214 <listitem><para>One of the user's manipulation in the undo/redo stack.</para></listitem> 0215 </varlistentry> 0216 </variablelist> 0217 0218 </sect2> 0219 0220 </sect1> 0221 </chapter>