# Referencia técnica

&ktuberling; ofrece una interesante y satisfactoria introducción a la personalización y programación de &kde;. Es posible extender la aplicación. Por ejemplo, sin necesidad de programar, se pueden añadir más zonas de juego cambiando los archivos de gráficos. ¡Añadiendo los archivos de sonido adecuados, los traductores pueden poner el audio en su propio idioma!

Si extiende o añade algo al juego, piense en enviar sus mejoras al desarrollador Alex Fiestaspara incluirlas en futuras versiones.

## Para los artistas

Para crear una zona de juego nueva en &ktuberling; debe hacer lo siguiente:

- Draw the playground in a SVG file, there you have to:

  - Name the place where items can dragged "background".

  - Dar nombre a cada uno de los elementos que se pueden dibujar con un nombre único.

- Create a .theme file, it has to follow this schema:

      <playground gameboard="yourSVGFile" name="theDesktopFile">
          <object name="itemName" sound="soundName" scale="someValue" />
          ...
          ...
          ...
          </playground>

  - `yourSVGFile` is the name of the svg file that has the drawing.

  - `elArchivoEscritorio` es el nombre del archivo de escritorio que contiene el nombre del tema.

  - For each object you need a <object> entry. `itemName` is the unique name you used on the SVG file, `soundName` is the sound name that will be played when dragging it, see sound themes howto for more information.

  - scale is optional and `someValue` is the scale factor that will be used when drawing this object outside the warehouse, if not specified is 1.

- Create a .desktop file, it has to follow this schema

      [KTuberlingTheme]
          Name=themeName

  - `nombreTema` es el nombre que identifica el tema. Se mostrará en el menú Zona de juego.

- If you are adding the theme to &ktuberling; repository, add .svg, .theme, and .desktop files to FILES section of the CMakeLists.txt in the pics/ directory

- If you want to install it for yourself, place .svg, .theme, and .desktop files in `ktuberling/pics` in ``qtpaths` `--paths GenericDataLocation``

## Para los traductores

Además del mecanismo habitual de archivos `.po` para la traducción de los mensajes escritos del programa, también es posible traducir los sonidos.

Para crear un nuevo tema de sonido para &ktuberling; debe hacer lo siguiente:

- Grabar los sonidos en un archivo de formato OGG Vorbis rc3.

- Create a `yourLanguageTwoLetterCode`.soundtheme file, it has to follow this schema:

      <language code="suCódigoDeIdiomaDeDosLetras">
      <sound name="nombreSonido" file="rutaRelativa" />
      ...
      ...
      ...
      </language>

  - `suCódigoDeIdiomaDeDosLetras` es el código de dos letras de su idioma, por ejemplo, gl para Gallego.

  - For each sound a <sound> entry. `soundName` should match with the soundName specified in the playground theme (see themes HOWTO). `relativePath` should be the relative path you are going to install the file with this sound to, typically it will be someUniquePath/soundName.format (someUniquePath can be your language two letter code for example).

- Si está añadiendo el tema de sonido a &ktuberling;: en la carpeta de su idioma:

  - Add the sound files and the .soundtheme files to the data/kdegames/ktuberling directory of your language translations.

  - On that very same dir you need a CMakeLists.txt describing how to install the files, typically it will be.

        FILE( GLOB oggfiles *.ogg )
        INSTALL( FILES ${oggfiles} DESTINATION ${KDE_INSTALL_DATADIR}/ktuberling/sounds/códigoDeDosLetrasDeSuIdioma )
        INSTALL( FILES códigoDeDosLetrasDeSuIdioma.soundtheme DESTINATION ${KDE_INSTALL_DATADIR}/ktuberling/sounds/ )

- Si desea instalarlo por si mismo debe:

  - Place `yourLanguageTwoLetterCode`.soundtheme file in `ktuberling/sounds` in ``qtpaths` `--paths GenericDataLocation``

  - Place your sound files in `ktuberling/sounds/someUniquePath` in``qtpaths` `--paths GenericDataLocation``

Information on how to work with the translation mechanisms in &kde; is available in The &kde; Translation HOWTO.

## Para programadores

&ktuberling; resulta sencillo de extender por programadores.

### Clases C++

`TopLevel`

- Top-level window and basic program management

`PlayGround`

- Description of one of the game levels

`ToDraw`

- Description of one of the graphical objects to be drawn

`SoundFactory`

- Description of one of the languages and its sounds

`Action`

- One of the user's manipulation in the undo/redo stack