# Manuale di &i18n-ksirkskineditor;

## Introduzione

&ksirk; è la versione per computer di un gioco di strategia molto noto. I suoi temi sono completamente configurabili. Questo manuale spiega come creare nuovi temi partendo da zero, usando un browser di file, un editor per immagini &SVG;, e &i18n-ksirkskineditor;.

Ecco una schermata di &i18n-ksirkskineditor; Schermata

Per creare un nuovo tema ci sono tre passi principali: creare la gerarchia delle cartelle; creare la grafica, raccolta in un singolo file &SVG;; e infine inserire gli sprite e assegnare i nomi usando &i18n-ksirkskineditor;.

## Creare un tema di &ksirk;

&ksirk; è completamente configurabile. Per chi ha capacità grafiche, creare un nuovo tema è facile come copiarne uno esistente, modificarne la grafica e aggiornarne i dati in un file di configurazione `.desktop`, generato con &i18n-ksirkskineditor;. L'ultimo passo è modificare il file che descrive cosa installare.

Tutti gli esempi (testo e immagini) sono presi dal tema predefinito di &ksirk;.

### Struttura delle cartelle e dei file

- `Data/`: dati usati dal programma per gestire le immagini del tema.

  - `CMakeLists.txt`: descrive cosa installare.

  - `onu.desktop`: file principale della descrizione del tema. Vedi sotto la sua descrizione.

- `Images/`: le immagini del tema (mappa, sprite, &etc;)

  - `CMakeLists.txt`: descrive cosa installare.

  - `pool.svg`: la mappa e tutti gli sprite usati in questo tema.

  - `map-mask.png`: l'immagine che permette al programma di sapere su quale stato si trova il mouse durante il gioco (vedi sotto).

  - `*.png`: le rimanenti sono immagini dei pulsanti.

- `CMakeLists.txt`: descrive cosa installare.

- `Sounds/`: file sonori del tema.

#### La cartella Data

Questa cartella contiene un solo file, `world.desktop`. Questo file è una descrizione del contenuto del tema. Viene utilizzato per descrivere l'organizzazione del mondo e come visualizzarlo. Non devi scriverlo a mano perché sarà gestito da &i18n-ksirkskineditor;. Per completezza, però, ne descriveremo la struttura.

Un gruppo `onu` contiene un certo numero di voci di stati, di nazionalità e di continenti. Altri gruppi contengono le descrizioni dei vari sprite, stati, continenti, nazionalità e obiettivi.

Le sezioni seguenti descrivono il contenuto di ogni gruppo.

##### Il gruppo `onu`

##### Le voci del gruppo `onu`

Nome della voce | Significato
`width` | La larghezza della mappa del tema.
`height` | L'altezza della mappa del tema.
`skinpath` | Il percorso del tema relativo al percorso dei dati dell'applicazione (⪚ `skins/default`).
`nb-countries` | Il numero di stati (42 nel tema predefinito). Ci dovrebbe essere lo stesso numero di gruppi di stati sotto.
`nb-nationalities` | Il numero di nazionalità (6 nel tema predefinito). Ci dovrebbe essere lo stesso numero di gruppi di nazionalità sotto.
`nb-continents` | Il numero di continenti (6 nel tema predefinito). Ci dovrebbe essere lo stesso numero di gruppi di continenti sotto.
`pool` | Il percorso e il nome del file magazzino relativamente al percorso del tema (⪚ `Images/pool.svg`).
`map-mask` | Il percorso e il nome del file di maschera della mappa relativamente al percorso del tema (⪚ `Images/map-mask.png`).
`format-version` | La versione del formato di file del tema (2.0).
`name` | Il nome del tema da visualizzare.
`desc` | Una descrizione lunga del tema.
`fighters-flag-y-diff` | La differenza d'altezza tra sprite di bandiere e cannoni.
`width-between-flag-and-fighter` | Il numero di pixel tra il pixel all'estrema sinistra della bandiera e il pixel all'estrema destra del cannone semplice (mentre non fa fuoco né esplode).

##### I gruppi delle descrizioni degli sprite

Ogni tipo di sprite (bandiera, fanteria, cavalleria, cannone, cannone che fa fuoco e cannone che esplode) è definito da un gruppo. Solo alcuni sprite hanno una voce per la larghezza. Questa voce viene usata per il posizionamento relativo durante le animazioni: i cannoni, che facciano fuoco o che esplodano, non dovrebbero spostarsi attorno alla bandiera dello stato durante il combattimento.

##### Voci dei gruppi delle descrizioni degli sprite

Nome della voce | Significato
`width` | La larghezza di riferimento dei fotogrammi dello sprite della bandiera.
`height` | L'altezza di riferimento dei fotogrammi dello sprite della bandiera.
`frames` | Il numero di fotogrammi dello sprite.
`versions` | Il numero di versioni degli sprite delle bandiere.

##### I gruppi di descrizione degli stati

Per ogni stato elencato nel gruppo `onu`, la voce countries ha il suo gruppo, la cui etichetta è il nome dello stato. La tabella sotto elenca le voci di questi gruppi.

##### Voci degli stati

Nome della voce | Significato
`id` | Il numero identificativo, intero ed univoco, dello stato; parte da zero (0).
`name` | Il nome dello stato da visualizzare.
`<sprite>-point` | Ogni tipo di sprite (bandiera, fanteria, &etc;.) nello stato viene visualizzato in una certa posizione definita da questa voce, che è costituita da due numeri interi separati da una virgola.
`neighbours` | L'elenco degli identificativi dei vicini dello stato attuale.

##### I gruppi delle descrizioni delle nazionalità

Per ogni nazionalità elencata nel gruppo `onu`, la voce nationalities ha il suo gruppo, la cui etichetta è il nome della nazionalità. La tabella sotto elenca le voci di questi gruppi.

##### Voci delle nazionalità

Nome della voce | Significato
`name` | Il nome della nazionalità (⪚ `Giappone`).
`leader` | Il nome che sarà proposto al giocatore che sceglie questa nazionalità.
`flag` | Il nome dell'elemento dello sprite della bandiera dello stato nel file &SVG; `onu`.

##### I gruppi delle descrizioni dei continenti

Per ogni continente elencato nel gruppo `onu`, la voce continents ha il suo gruppo, la cui etichetta è il nome del continente. La tabella sotto elenca le voci di questi gruppi.

##### Voci dei continenti

Nome della voce | Significato
`name` | Il nome del continente (⪚ `Africa`).
`id` | Il numero identificativo, intero ed univoco, del continente.
`bonus` | Il numero di armate ottenute alla fine del turno dal giocatore che domina tutti gli stati del continente.
`continent-countries` | L'elenco degli identificativi degli stati all'interno nel continente attuale.

##### I gruppi delle descrizioni degli obiettivi

Per ogni obiettivo elencato nel gruppo `onu`, la voce goals ha il suo gruppo, la cui etichetta è il nome dell'obiettivo. La tabella sotto elenca le voci di questi gruppi.

##### Voci degli obiettivi

Nome della voce | Significato
`type` | Il tipo di obiettivo. Può essere continents (continenti), countries (stati) o player (giocatore).
`nbArmiesByCountry` | Imposta il numero minimo di armate che il giocatore deve mettere su ogni stato.
`nbCountries` | Imposta il numero di stati che il giocatore deve possedere.
`nbCountriesFallback` | Per un tipo di obiettivo player, se il giocatore preso di mira viene ucciso da un altro, questo imposta il numero di stati che il giocatore deve conquistare come obiettivo alternativo.
`desc` | Una descrizione testuale completa dell'obiettivo con segnaposti appropriati (qui serve maggiore documentazione).
`continents` | L'elenco degli identificativi dei continenti che il giocatore dovrà conquistare.

#### La cartella Images

Questa cartella contiene i pulsanti specifici di &ksirk; e il file magazzino &SVG; contenente la mappa e tutti gli sprite.

##### Il file `pool.svg`

Questo file &SVG; contiene la mappa e tutti gli sprite del gioco. Ogni elemento ha un nome, in modo che il programma possa selezionare e rendere separatamente ciascuno di essi.

Nel tema predefinito, gli sprite sono bandiere, fanteria, cavalleria e cannone. La fanteria rappresenta un'armata, la cavalleria cinque e il cannone dieci. I cannoni sono usati anche per visualizzare le armate in combattimento: è per questo che ci sono tre tipi di sprite per i cannoni: cannone normale fermo o in movimento, cannone che fa fuoco e cannone che esplode.

Ogni immagine degli sprite è la concatenazione di varie viste dell'oggetto, e per ogni vista i suoi fotogrammi. Le viste sono organizzate verticalmente e i fotogrammi orizzontalmente. Dividendo l'altezza dell'immagine per il numero di viste e la larghezza per il numero di fotogrammi si calcola dove tagliare l'immagine in fotogrammi individuali. Questi dati si trovano nel file `onu.desktop`.

Un esempio di immagine sprite: `cannon.png`

Per gli sprite delle armate, ci sono tre viste diverse, dall'alto in basso:

- verso destra,

- verso sinistra, e

- di fronte.

Per le bandiere, c'è solo una vista. Tutti gli sfondi degli sprite dovrebbero essere trasparenti.

Un esempio di un'immagine sprite di una bandiera: `italy.png`.

##### Gli elementi del magazzino

Nome dell'elemento | Immagine campione | Significato
`map` |  | Mappa del mondo del tema. Gli stati possono avere forme arbitrarie, ma dovrebbero essere raggruppati in continenti riconoscibili a occhio, per posizione o per colore.
`italy` |  | La bandiera della nazione italiana. C'è una voce simile per ogni nazione.
`infantry` |  | Icona che rappresenta un'armata.
`cavalry` |  | Icona che rappresenta cinque armate.
`cannon` |  | Icona che rappresenta dieci armate.
`firing` |  | Icona che rappresenta dieci armate durante un combattimento.
`exploding` |  | Icona che rappresenta le armate sconfitte.
`alaska` |  | La forma dello stato dell'Alaska; si usa per evidenziarlo. C'è una forma simile per ogni stato. Il suo colore non viene usato, quindi, si è liberi di sceglierne uno qualsiasi.
`reddices` |  | I dadi rossi usati per mostrare i risultati delle battaglie.
`bluedices` |  | I dadi blu usati per mostrare i risultati delle battaglie.
`mark1` |  | Questo marcatore viene aggiunto agli sprite in combattimento per indicare il numero di armate che rappresentano, in questo caso 1. Ci sono anche degli elementi `mark2` e `mark3`.

##### Il file `map-mask.png`

Anche questo è un file png che rappresenta il mondo del tema, ma con colori in codice che permettono di identificare ogni stato. Gli stati devono avere almeno le stesse forme degli stati corrispondenti in `map.png`, in modo che gli utenti possano fare clic ovunque in uno stato visibile e selezionare quello giusto. Stati come le isolette dell'Indonesia nella mappa predefinita possono essere più grandi dell'equivalente nel file `map.png` per facilitarne la selezione.

Una map-mask campione

Il componente blu (nel modello RGB) di uno stato lo identifica: l'indice 0 è lo stato 0 nel file `onu.xml`, l'indice 1 è lo stato 1, &etc;. Il bianco (0xFFFFFF in RGB) indica l'assenza di uno stato, come per i mari o le terre di nessuno.

##### Le immagini dei pulsanti

I nomi dei file sono fissati nel codice, quindi non vanno modificati. La tabella sotto indica tutti i pulsanti che si dovrebbero fornire.

##### I pulsanti dell'interfaccia

Immagine | Nome del file | Significato
| `newNetGame.png` | Cerca di entrare in una partita in rete.
| `recycling.png` | Dopo che tutti i giocatori hanno disposto le loro armate, è possibile modificarne la distribuzione (cosiddetto riciclo). Questo pulsante chiede di eseguire questa redistribuzione.
| `recyclingFinished.png` | Sceglie di non ridistribuire. Tutte le finestre dei client devono avere questo pulsante premuto per concludere la redistribuzione.
| `nextPlayer.png` | Conclude il turno del giocatore attuale e passa al prossimo giocatore, o al prossimo turno se il giocatore attuale era l'ultimo.
| `attackOne.png` | Sceglie di cominciare un attacco con un'armata.
| `attackTwo.png` | Sceglie di cominciare un attacco con due armate.
| `attackThree.png` | Sceglie di cominciare un attacco con tre armate.
| `defendOne.png` | Sceglie di difendere uno stato attaccato con un'armata.
| `defendTwo.png` | Sceglie di difendere uno stato attaccato con due armate.
| `moveArmies.png` | Sceglie di cominciare lo spostamento di armate tra stati (ultima azione del turno).

#### La cartella Sounds

Questa cartella contiene tre file sonori:

- `roll.wav`, riprodotto quando le armate sono in movimento

- `cannon.wav`, riprodotto quando si fa fuoco e

- `crash.wav`, riprodotto quando un cannone esplode

### Utilizzare l'&i18n-ksirkskineditor;

Dopo aver messo la grafica nella cartella e nel file &SVG; giusti, devi creare gli stati, i giocatori, &etc;, e associarli con l'elemento &SVG; giusto nel magazzino. Ciò può essere fatto con &i18n-ksirkskineditor;. Nota che ogni parte di questa applicazione è auto-descritta da suggerimenti e aiuti contestuali, normalmente disponibili con la scorciatoia &Ctrl;F1.

Ecco una schermata di &i18n-ksirkskineditor; Schermata

## Guida ai comandi

### La finestra principale di &i18n-ksirkskineditor;

#### I pulsanti

Carica Carica...

- Fa caricare al programma un tema esistente.

Salva Salva

- Salva il tema attualmente modificato.

## Guida dello sviluppatore a &i18n-ksirkskineditor;

Fai riferimento a ihttps://api.kde.org/ per la documentazione dell'API.

## Domande e risposte

&updating.documentation;

## Riconoscimenti e licenza

&ksirkskineditor;

Copyright del programma 2009 di Gaël de Chalendar kleag@free.fr

Copyright della documentazione 2009 di Gaël de Chalendar kleag@free.fr

Traduzione di Federico Zenithfederico.zenith@member.fsf.org

&underFDL; &underGPL;
&documentation.index;