# AraldiaML
## Guida introduttiva alla programmazione in AraldiaML
### Mattia Mascarello
[TOC]
## Preambolo
AraldiaML è un linguaggio di markup basato su xml.
> XML è l'acronimo di eXtensible Markup Language.
>
> XML è stato progettato per archiviare e trasportare dati.
>
> XML è stato progettato per essere leggibile sia dall'uomo che dalla macchina.
AraldiaML contiene sia dati di gioco come le domande, gli scenari, gli eventi, i tipi di virus che si trovano in Araldia, sia elementi interattivi, quali effetti, porzioni di testo e decisioni che si attivano con modalità condizionali
## Excursus su XML
Un documento XML è composto da tag come questo
```xml
```
I tag possono contenere altri tag in una struttura gerarchica
per concludere il contenuto del tag occorre aggiungere un tag di chiusura
```xml
```
> Esempio
> ```xml
>
>
>
> ```
Oppure contenere del testo
```xml
Testo
```
Alcuni tag non contengono alcun altro tag e quindi non necessitano di un tag di chisura, ma contengono uno slash al loro termine
```xml
```
I tag possono avere attributi
```xml
Testo
```
```xml
```
### Commenti
I commenti iniziano con `` ``
```xml
```
## Documentazione
### Struttura
Qui è specificata la struttura del documento (attraverso alla gerarchia dei tag)
* Araldia
Tag iniziale del documento
* values
Elenco dei valori di gioco
* value
Valore di gioco
* name
nome
* title
titolo
* description
descrizione
* min
minimo
* max
massimo
* default
default
* colorZones
Colore condizionale dell'indicatore
* colorZone
Colore specificato per un range di colori
* min
minimo del range
* max
massimo del range
* color
colore in [esadecimale](https://www.w3schools.com/cssref/css_colors.asp) (ex #FFFFF)
* description
descrizione dell'indicatore, visibile se lo si seleziona
* triggers
controlli da effettuare, contiene tag di controllo
* sections
Tutte le pagine del gioco
* events
* event, frames= int, chance = int
Evento casuale
frames: ogni quante azioni eseguire un sorteggio per l'evento
chance: percentuale di probabilità che l'evento si verifichi
* name
* title
* description
* choices
* choice
* title
* description (optional)
* effects
* scenes
Scene (A differenza di domande ed eventi, possono essere solo invocate e non appaiono spontaneamente)
* scene
* name
* title
* description
* choices
* choice
* title
* description (optional)
* effects
* questions
* name
* title
* description
* choices
* title
* description (optional)
* effects
* viruses
* virus
* name
* title
* description
* stats
* transmissionSpeed (0-10)
* lethality (0-10)
* hospitalizationRate (0-10)
* infoboxes
* infobox
* title
* description
* parties
* party
* name
* title
* description
* motto
### Tag di controllo
#### \
Operazioni condizionali
Comparatori:
* is
* lessThan
* moreThan
* lessOrEqual
* moreOrEqual
##### in \
Inserito in \, determina i check, comparando il valore corrente dell'indicatore con il criterio e il valore specificato nell' \
Sintassi
```xml
azioni
azioni
azioni
azioni
```
###### All'inizio del blocco \
All'inizio del blocco: condizioni per mostrare o evitare il blocco
```xml
```
who -> target
what -> variabile
##### In altri luoghi
```xml
```
#### \
```xml
```
#### \
```xml
```
#### \
```xml
```
atLeastOne -> almeno una sezione del \
chance -> probabilità percentuale che il \ venga eseguito
#### \
chance -> probabilità percentuale che la sezione sia quella attivata nel \
#### \
Stampa una variabile
```xml
```
Elenco di variabili predefinite:
* who="user" what="name"
* who="virus" what="name"
* who="virus" what="transmissionSpeed"
* who="virus" what="lethality"
* who="virus" what="hospitalizationRate"
* I nomi dei \, sotto il parametro \
## Esempio
```xml
health
Salute
Il livello di salute della popolazione. Un indicatore importante
0
100
100
0
30
red
Beh, che dire...
31
50
orange
Dai...
51
60
yellow
Non male
61
100
green
Ok
new_variant
Nuova variante
Il corriere della Pera annuncia l'arrivo di una nuova variante di . La nuova variante è
Ho capito
fondi_europei_scuola
Detto fatto
I tuoi alleati di governo ti guardano con disappunto.
I docenti di tutte le scuole ti sorridono.
Ok
fondi_europei_scuola
Fondi Europei per la scuola
L'unione Europea offre dei fondi per la scuola a patto di integrare i programmi scolastici con quelli degli altri stati
I tuoi alleati di governo ti guardano con disappunto.
Certo
Per niente!
eys
eys-1
Descrizione
1
1
1
Infobox1
Testo
partito_giallo
Partito Giallo
Whatever
For the many, not the few.
```