Framework in codice
Tabelle del regolamento
Tieni in una tabella i dati fissi delle regole e leggili dalle tue regole, oppure usali come scelte di un input.
Che cos'è una tabella
Una tabella del regolamento è un insieme di dati fissi che le tue regole leggono, come un bonus per ogni calling. Non è stato di gioco, e i giocatori non la cambiano mai. Cambiare una riga crea una nuova versione del tuo gioco, come ogni altra modifica al sorgente.
Dichiara una tabella
Una tabella è un file JSON in tables/. Elencala nel manifest.
"tables": ["tables/callings.json"]- Riga 10 I percorsi dei file delle tabelle.
{
"id": "callings",
"name": "Callings",
"columns": [
{ "key": "calling", "label": "Calling", "type": "string" },
{ "key": "bonus", "label": "Watch bonus", "type": "number" }
],
"rows": [
{ "calling": "Guard", "bonus": 30 },
{ "calling": "Scout", "bonus": 10 }
]
}- Righe 4-7 Le colonne. Ognuna ha una chiave, un'etichetta e un tipo: string, number o boolean.
- Righe 8-11 Le righe. Ogni riga dà un valore per ogni colonna, e nient'altro.
Un Framework elenca gli id delle tabelle che legge.
"tables": ["callings"]- Riga 22 Il Framework può leggere la tabella callings.
| Limite | Valore |
|---|---|
| Colonne per tabella | 64 |
| Righe per tabella | 1000 |
| Tabelle per Framework | 64 |
| Tabelle per Gioco | 128 |
Leggi una tabella in una regola
table.find riceve l'id della tabella, le colonne da confrontare con i valori da cercare, e le colonne da restituire con un valore predefinito per ciascuna. Restituisce le colonne che indichi, dalla prima riga in cui tutte le colonne di confronto sono uguali ai tuoi valori. Se nessuna riga corrisponde, restituisce i tuoi valori predefiniti.
export function construct(
name: string,
max_hp: number,
calling: string,
): { name: string; max_hp: number; hp: number; calling: string; watch: number } {
const row = table.find("callings", { calling: calling }, { bonus: 0 });
const bonus: number = row.bonus;
return {
name: name,
max_hp: max_hp,
hp: max_hp,
calling: calling,
watch: 20 + bonus,
};
}- Riga 6 Cerca il bonus per il calling. Il valore predefinito è 0.
- Riga 7 Leggi una colonna del risultato. Il tipo viene dalla tabella, quindi non serve il cast.
- Riga 13 Usa il bonus in un valore iniziale.
L'id della tabella è una stringa scritta nel codice, e il Framework deve elencare la tabella. Ogni colonna che indichi deve esistere, e tornano solo le colonne che indichi. Un costruttore legge una tabella in questo modo. I valori da confrontare devono essere una variabile, un campo o un letterale, non un valore calcolato.
Questi errori vengono rilevati quando verifichi il progetto:
const row = table.find("callings", { calling: calling }, { boost: 0 });has no column 'boost'which manifest.tables does not declare const row = table.find("callings", { calling: calling + "!" }, { bonus: 0 });table.find match values must be a variable, a field or a literalUsa una tabella per le scelte
Un input di testo può prendere le sue scelte da una colonna di una tabella. Le scelte sono i valori distinti della colonna, nell'ordine delle righe.
"calling": {
"label": "Calling",
"optionsFrom": { "table": "callings", "column": "calling" },
"defaultValue": "Guard"
}- Riga 11 La procedura guidata offre i valori della colonna calling.
- Riga 12 Il valore predefinito deve essere una delle scelte.
is not one of this Framework's tablesUn input di azione di tipo testo può fare lo stesso con una voce optionsFrom nella dichiarazione dell'azione. Una fonte deve offrire almeno 2 scelte.

