API: Eventi

Esistono diversi tipi di eventi a cui è possibile rispondere. In generale, ogni tipo di oggetto dispone di un evento corrispondente per modifiche, aggiunte e rimozioni. Ogni evento verrà attivato una volta per ogni oggetto che subisce una modifica. Se più di una proprietà dell'oggetto cambia contemporaneamente, viene attivato un solo evento "globale" (ad esempio change:graphic).


Parametri di callback

Quando si ascolta un evento, si crea una funzione denominatacallbackche viene eseguita ogni volta che si verifica l'evento. La funzione di callback riceve diversi parametri che sono oggetti che forniscono le informazioni necessarie sull'evento, consentendo di decidere come procedere.

I parametri di callback per ciascun evento possono variare, ma includono:

obj

L'oggetto che è stato modificato. Qualsiasi modifica apportata a questo oggetto verrà salvata anche nel gioco. Pertanto, se si desidera spostare un oggetto grafico verso sinistra, è necessario modificare la proprietàsinistradiobjusingset.

  • obj.get("proprietà")restituisce il valore corrente della proprietà.
  • obj.set("proprietà", "nuovovalore")imposta un nuovo valore per la proprietà. Se si desidera modificare più proprietà contemporaneamente, è possibile passare un oggetto:obj.set({left: 10, top: 20});


precedente

Questo è un oggetto delle proprietàdell'objcosì come erano prima che venissero apportate modifiche a seguito di questo evento. Utile per determinare "quanto" è cambiata una proprietà.

NOTA:poiché si tratta di un oggetto di base, è possibile accedere alle proprietà utilizzando la notazione tra parentesi:prev["bar1_value"], NON utilizzando le funzioni set o get.


Ordine degli eventi

Gli eventi vengono attivati in modo sincrono (ovvero ogni funzione non viene avviata finché quella precedente non è stata completata) in ordine dal primo all'ultimo, nonché da una proprietà specifica a un oggetto generico. Considerando quanto segue:

on("change:graphic", function1);
on("change:graphic", function2);
on("change:graphic:left", function3);

Se la proprietà degli oggettimodificati fosse rimastainvariata, l'ordine sarebbe stato: funzione3, funzione1, funzione2.

Inoltre, se la campagna contiene più script, questi vengono caricati nello stesso ordine in cui appaiono nella pagina Script della campagna, da sinistra a destra.

Nota: gli eventi sono attivati esclusivamente dalle modifiche apportate dai giocatori o dal GM che gestisce il gioco. Gli eventi non saranno attivati dalle modifiche alle API. Pertanto, se un giocatore sposta un pezzo sul tavolo di gioco, riceverai un evento "change:graphic". Se si modificano le proprietà dello stesso elemento grafico in uno script Mod (API), non verrà attivato alcun evento "change:graphic".


Eventi della campagna

pronto

Questo evento si attiva dopo che tutti i dati attuali della campagna sono stati caricati. Pertanto, se si desidera individuare un elenco di tutti gli oggetti presenti in una campagna o un oggetto specifico già presente nella campagna, è opportuno assicurarsi di cercarlo solo dopo l'attivazione dell'evento ready. Inoltre, se si associal'aggiuntadi eventi (comeadd:graphic) prima che l'eventoreadyvenga attivato, si riceveranno eventi di aggiunta per oggetti già presenti nella campagna.

on("ready", function() {
  var tokenThatAlreadyExisted = getObj("graphic", "-ABc123");
});

modifica:campagna:idpagina giocatore

Attivato ogni volta che cambia la pagina su cui si trovano attualmente i giocatori.

modifica:campagna:ordine di turno

Attivato ogni volta che cambia l'ordine di turno della campagna.

modifica:campagna:pagina dell'iniziativa

Attivato ogni volta che l'ordine di turno viene nascosto o mostrato per una pagina. Questo potrebbe non corrispondere all'ID della pagina attualmente attiva. Se questa opzione è impostata sufalso (anche se uno script Mod (API) la imposta su falso), l'ordine di turno verrà chiuso per tutti i GM/giocatori. Impostando un ID pagina valido, la pagina sarà accessibile a tutti i GM/giocatori.


Eventi oggetto

modifica:grafica

Si attiva ogni volta che un oggetto grafico (che può essere quasi qualsiasi tipo di oggetto sul tavolo di gioco, inclusi segnalini, mappe e carte) subisce una modifica.

Nota: gli oggetti grafici creati dall'API attiveranno questo evento al momento della creazione.

Parametri di callback: obj, prev

on("change:graphic", function(obj, prev) {    
  //Eseguire un'operazione con "obj" in questo punto. "prev" è un elenco di valori precedenti.
  Si prega di notare che "obj" e "prev" sono tipi diversi di oggetti. 
  Per interagire con obj, è necessario utilizzare obj.get("name");
  Per interagire con prev, è possibile utilizzare prev["name"];
});

modifica:grafica:(proprietà)

È inoltre possibile associare un evento a ciascuna proprietà specifica dell'oggetto. Pertanto, se si dispone di uno script che si desidera eseguire solo quando cambia larotazione, si dovrebbe procedere come segue:

on("change:graphic:rotation", function(obj, prev) {    
  //Impostare sempre la rotazione su 0, in modo che nessuno possa ruotare gli oggetti.    
  obj.set("rotazione", 0);
});

aggiungere:grafico

Si attiva ogni volta che un oggetto grafico viene aggiunto al tavolo di gioco per la prima volta. Verrà richiamato anche per gli oggetti esistenti all'avvio del tavolo di gioco se si associa questo eventoal di fuoridell'eventoready.

Parametri di callback: obj

on("add:graphic", function(obj) {
  //Verrà richiamato per tutti i nuovi elementi grafici, compresi quelli già esistenti all'inizio della sessione di gioco.
});

var started = false;

on("ready", function() {
  on("add:graphic", function(obj) {
    //Verrà richiamato solo per i nuovi oggetti aggiunti, poiché gli oggetti esistenti sono già stati caricati prima dell'attivazione dell'evento ready.
  });
  //È anche possibile impostare una variabile e ignorare gli eventi aggiuntivi finché non è vera.
  avviato = vero;
});

distruggere:grafico

Si attiva ogni volta che un oggetto grafico viene rimosso dal tavolo di gioco.

Parametri di callback: obj

Altri tipi di oggetti

Esistono anche eventi per tutti gli altri tipi di oggetti e sottotipi, come ad esempio:

modifica:percorso, aggiungi:percorso, elimina:percorso, modifica:testo, aggiungi:testo, elimina:testo, modifica:token, aggiungi:token, elimina:token, modifica:scheda, aggiungi:scheda, elimina:scheda

Si prega di consultare il riferimento Oggetti per un elenco completo di tutti i tipi e sottotipi di oggetti.

Questo articolo ti è stato utile?
Utenti che ritengono sia utile: 12 su 16