# 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:

- Dibujar una zona de juego y guardarla en un archivo &SVG;, para lo que tiene que:

  - Llamar a los lugares en los que los elementos se pueden dibujar «background».

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

- Crear un archivo `.theme`, de acuerdo al siguiente esquema:

      <playground gameboard="suArchivoSVG" name="elArchivoEscritorio">
          <object name="nombreElemento" sound="nombreSonido" scale="algúnValor" />
          ...
          ...
          ...
          </playground>

  - `suArchivoSVG` es el nombre del archivo &SVG; que contiene el dibujo.

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

  - Para cada objeto necesitará una entrada `<object>`. `nombreElemento` es el nombre único que se usa en el archivo &SVG;; `nombreSonido` es el nombre del sonido que se reproducirá cuando lo arrastre. Consulte el archivo `sounds/soundthemes.HOWTO` en el código fuente para obtener más información.

  - La `escala` es opcional, y `algúnValor` es el factor de escala que se utilizará cuando se dibuja este objeto fuera del almacén, si se especifica se utiliza 1.

- Crear un archivo `.desktop`, de acuerdo con el siguiente esquema

      [KTuberlingTheme]
      Name=nombreDelTema

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

- Si está añadiendo el tema al repositorio de &ktuberling;, añada los archivos `.svg`, `.theme` y `.desktop` a la sección `FILES` de `CMakeLists.txt` en la carpeta `pics/`.

- Si desea instalarlo por sí mismo, sitúe los archivos `.svg`, `.theme` y `.desktop` en la carpeta `ktuberling/pics` de ``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.

- Crear un archivo ``CódigoDeDosLetrasDeSuIdioma`.soundtheme`, según el siguiente esquema:

      <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.

  - Para cada sonido necesitará una entrada `<sonido>`. `nombreSonido` debería coincidir con el nombreSonido especificado en el tema del juego (consulte el archivo `pics/themes.HOWTO` en el código fuente). `rutaRelativa` debe ser la ruta relativa al lugar donde va a instalar el archivo con este sonido, que suele ser ``algunaRutaÚnica`/`nombreSonido`.`formato`` (`algunaRutaÚnica` puede ser, por ejemplo, el código de dos letras de su idioma).

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

  - Añada los archivos de sonido y los archivos `.soundtheme` a la carpeta `data/kdegames/ktuberling` de las traducciones de su idioma.

  - En este misma misma carpeta necesitará un archivo `CMakeLists.txt` que describa cómo instalar los archivos, suele ser:

        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:

  - Sitúe el archivo ``códigoDeDosLetrasDeSuIdioma`.soundtheme` en la carpeta `ktuberling/sounds` de ``qtpaths` `--paths GenericDataLocation``

  - Sitúe sus archivos de sonido en la carpeta `ktuberling/sounds/`unaRutaÚnica`` de ``qtpaths` `--paths GenericDataLocation``

Hay información disponible sobre el funcionamiento de los mecanismos de traducción de &kde; en el manual de traducción.

## Para programadores

&ktuberling; resulta sencillo de extender por programadores.

### Clases C++

`TopLevel`

- Ventana de nivel principal y administración básica del programa.

`PlayGround`

- Descripción de uno de los niveles del juego.

`ToDraw`

- Descripción de uno de los «objetos» gráficos a dibujar.

`SoundFactory`

- Descripción de uno de los idiomas y sus sonidos.

`Action`

- Una de las manipulaciones del usuario en la pila deshacer/rehacer.