# Teknisk referens

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!

Om du utökar eller lägger till något i spelet, skicka gärna dina tillägg till utvecklaren Alex Fiestas så att de kan läggas till i framtida utgåvor.

## För grafiker

För att skapa en ny lekplats i Potatismannen måste du:

- Rita lekplatsen i en &SVG;-fil, är du måste:

  - Namnge platsen där objekt kan dras bakgrunden.

  - Namnge vart och ett av objekten som kan dras med ett unikt namn.

- Skapa en `.theme`-fil, som måste ha följande utseende:

      <playground gameboard="din_SVG-fil" name="skrivbordsfilen">
          <object name="objektnamn" sound="ljudnamn" scale="något_värde" />
          ...
          ...
          ...
          </playground>

  - `din_SVG-fil` är namnet på &SVG;-filen som innehåller grafiken.

  - `skrivbordsfilen` är namnet på skrivbordsfilen som har samma namn som temat.

  - För varje objekt behövs posten `<object>`. `Objektnamn` är det unika namn som användes i &SVG;-filen. `Ljudnamn` är ljudnamnet som spelas när det dras, se filen `sounds/soundthemes.HOWTO` från källkoden för mer information.

  - `skala` är valfri och `något_värde` är skalfaktorn som används när objektet ritas utanför lagret. Om den inte anges är den 1.

- Skapa en `.desktop-fil`, som måste ha följande utseende:

      [KTuberlingTheme]
      Name=temanamn

  - `temanamn` är namnet som identifierar temat, och som visas i menyn Lekplats.

- Om du lägger till temat i Potatismannens arkiv, lägg till `.svg`-, `.theme`- och `.desktop`-filer i avdelningen `FILES` av `CMakeLists.txt` i katalogen `pics/`.

- Om du vill installera det själv, placera `.svg`-, `.theme`- och `.desktop`-filer i `ktuberling/pics` i ``qtpaths` `--paths GenericDataLocation``

## För översättare

Förutom den vanliga `.po`-fil mekanismen för att översätta programrubriker och promptrar, kan ljuden också anpassas.

För att skapa ett nytt ljudtema för Potatismannen måste du:

- Spela in ljuden med OGG Vorbis rc3 filformat.

- Skapa filen ``ditt_språks_tvåbokstavskod`.soundtheme`, som måste ha följande utseende:

      <language code="ditt_språks_tvåbokstavskod">
      <sound name="ljudnamn" file="relativ_sökväg" />
      ...
      ...
      ...
      </language>

  - `ditt_språks_tvåbokstavskod` är koden med två bokstäver för ditt språk, till exempel sv för svenska.

  - För varje ljud behövs posten `<sound>`. `ljudnamn` som ska passa ihop med ljudnamn som anges för lekplatsen (se filen `pics/themes.HOWTO` i källkoden). `relativ_sökväg` är platsen där filen med ljudet ska installeras. Oftast är det ``någon_unik_sökväg`/`ljudnamn`.`format`` (`någon_unik_sökväg` kan till exempel vara språkets tvåbokstavskod).

- Om du lägger till ljudtemat för Potatismannens i din språkkatalog:

  - Lägg till ljudfilerna och `.soundtheme`-filerna i katalogen `data/kdegames/ktuberling` under översättningen av ditt språk.

  - I samma katalog behövs en `CMakeLists.txt` som beskriver hur filerna ska installeras. Typiskt innehåller den:

        FILE( GLOB oggfiles *.ogg )
        INSTALL( FILES ${oggfiles} DESTINATION ${KDE_INSTALL_DATADIR}/ktuberling/sounds/ditt_språks_tvåbokstavskod )
        INSTALL( FILES ditt_språks_tvåbokstavskod.soundtheme DESTINATION ${KDE_INSTALL_DATADIR}/ktuberling/sounds/ )

- Om du vill installera den själv:

  - Placera filen ``ditt_språks_tvåbokstavskod`.soundtheme` i `ktuberling/sounds` i ``qtpaths` `--paths GenericDataLocation``

  - Placera dina ljudfiler i katalogen `ktuberling/sounds/`någon_unik_sökväg`` i ``qtpaths` `--paths GenericDataLocation``

Information om hur man arbetar med översättningsmekanismen i &kde; finns tillgänglig på &kde; Translation HOWTO.

## För programmerare

Potatismannen är inte särskilt svår att utöka för programmerare.

### C++ klasser

`TopLevel`

- Toppnivåfönster och grundläggande programhantering.

`PlayGround`

- Beskrivning av en av spelets nivåer.

`ToDraw`

- Beskrivning av ett av de grafiska objekten som ska ritas.

`SoundFactory`

- Beskrivning av ett av språken och dess ljud.

`Action`

- En av användarens åtgärder i stacken med ångra och gör om.