| Train Director 3 - Scripts |
English -
Italiano
|
La versione 3.3 di Train Director permette ai creatori di scenari di specificare sia l'apparenza che il significato dei segnali. L'introduzione di questa funzionalità permette di visualizzare gli aspetti dei segnali corrispondenti a segnali di avviso, di protezione con avviso accoppiato, di limitazione della velocità in base all'itinerario prescelto, e cosi' via. Diventa inoltre possibile visualizzare gli aspetti dei segnali usati da varie amministrazioni ferroviarie. Tutto cio' viene realizzato con l'utilizzo di file testo separati dallo scenario, che descrivono le varie icone da usare, il comportamento che il treno dovrà mantenere nell'avvicinarsi al segnale, e come decidere quale aspetto il segnale deve presentare in base alle condizioni della linea. Questi file testo separati sono chiamati "Train Director Scripts", o piu' semplicemente file .tds. Ad ogni segnale puo' venire associato un file .tds che ne descrive le caratteristiche tramite il dialogo delle proprietà del segnale. ![]()
Il seguente è un esempio di un file .tds:
# Segnale di protezione a 1 luce (rosso,giallo,verde) Vediamo di descrivere le varie parti del file: CommentiLa prima riga del file è una riga di commento, ed indica quale tipo di segnale stiamo trattando: # Segnale di protezione a 1 luce (rosso,giallo,verde) Tutti i caratteri dal # compreso fino alla fine della riga vengono ignorati dal programma. I commenti sono del tutto opzionali, per cui non è strettamente necessario usarli, anche se il loro uso aiuta molto chi vuole capire meglio la logica del file stesso e a quale tipo di segnale applicarla. AspettiLa sezione successiva descrive i vari aspetti che il segnale puo' assumere:
Aspect: red Il nome dell'aspetto è indicato dalle linee "Aspect:". In questo caso abbiamo 3 aspetti: "red" (cioè rosso), "yellow" (cioè giallo), e "green" (cioè verde). Per ogni aspetto è necessario indicare l'icona da visualizzare quando il segnale è nello stato corrispondente "per ciascuna delle 4 direzioni", est, ovest, sud, nord. Se lo scenario non ha segnali disposti in direzione nord o sud, è possibile non specificare tali direzioni. Negli esempi in questa pagina verrà sempre indicata l'icona da usare per la direzione est, intendendosi comunque l'autore dovrà specificare sempre anche le altre direzioni. E' anche possibile indicare piu' di una icona per ogni direzione. Le varie icone verranno visualizzate in sequenza, ritornando alla prima icona dopo che l'ultima icona è stata visualizzata. Questo consente di "animare" il segnale, per esempio per visualizzare i segnali lampeggianti. Oltre all'icona, ogni aspetto ha associata un'azione, specificata dalle righe "Action:". Questa azione verrà eseguita da ogni treno che viaggia nel blocco precedente il segnale. Le azioni possibili sono:
Con queste semplici istruzioni è possibile creare una molteplicità di casi, tali da descrivere le piu' comuni combinazioni. Le sezioni successive dicono a Train Director quando cambiare l'aspetto del segnale. Eventi e CondizioniChiaramente un segnale deve cambiare il suo aspetto quando si verificano certe condizioni nel tracciato. Tali condizioni possono essere generate sia dal giocatore che dal movimento dei treni. Vediamo di seguito per ogni condizione le azioni che è possibile prendere. OnInit : al caricamento dello scenarioLe azioni associate a "OnInit:" vengono eseguite quando lo scenario viene aperto. Tipicamente l'azione associata è la definizione dell'aspetto iniziale del segnale (di solito al rosso): OnInit: Vediamo piu' in dettaglio la sintassi da usare in questa parte del file .tds. La sezione inizia con l'evento che vogliamo descrivere, cioè "OnInit:". Dopo il nome dell'evento vengono specificate una serie di azioni in forma di espressioni. Nel caso in esame, ".aspect = red" significa "cambia l'aspetto del segnale in base alle istruzioni indicate nel blocco "Aspect: red". " L'azione di assegnare un nome all'aspetto dice a Train Director di cambiare l'icona e l'azione associata a quel segnale, usando i dati specificati nella sezione "Aspect:" corrispondente al nome. L'uso del "punto" in ".aspect", indica che ci riferiamo al segnale associato a questo file .tds. Vedremo in seguito come sia possibile riferirsi ad altri segnali. La sezione viene sempre terminata da una riga con la parola "end". OnCleared : l'utente apre il segnaleQuando l'utente clicca sull'icona di un segnale, se il blocco successivo è libero, Train Director guarda alle istruzioni associate all'evento "OnCleared:" per decidere come cambiare l'aspetto del segnale. In questo caso, le azioni da prendere sono piu' complesse: OnCleared: Come si vede, è possibile chiedersi se certe condizioni sono valide usando la parola "if". Nella prima riga ci chiediamo se l'aspetto corrente del segnale è rosso ("if .aspect = red"). Se non lo è, il programma ignora tutte le azioni comprese tra la riga con l"if" e il corrispondente "end". Se invece la condizione è verificata, il progamma prosegue con l'esecuzione della riga successiva. Nell'esempio, ci chiediamo qual'è l'aspetto del segnale successivo a quello attuale è rosso ("if next.aspect = xxxx"). Come si vede, l'uso della parola "next" prima della parola ".aspect" indica al programma di "guardare avanti" nel blocco protetto dal segnale stesso. E' anche possibile guardare 2 o piu' blocchi a valle del segnale, semplicemente concatenando varie parole "next", per esempio "next.next.aspect". Se quindi il segnale successivo è rosso ("if next.aspect = red"), allora il segnale corrente deve mostrare l'avviso di arresto, per cui cambiamo l'aspetto a giallo (".aspect = yellow"). Se invece il segnale successivo non è rosso, Train Director eseguirà l'azione associata alla parola "else", in questo caso mettendo il segnale al verde (".aspect = green"). Si noti come ad ogni "if" corrisponde sempre un "end" (2 if, 2 end piu' quello di fine sezione). La convenzione di spostare le istruzioni relative a ciascun "if" aiuta a capire a quale condizione tali istruzioni si riferiscono. OnUpdate : un'altro segnale ha cambiato aspettoQuando un'altro segnale nel tracciato cambia aspetto, Train Director esegue le istruzioni associate alla sezione "OnUpdate:". Questo consente per esempio di cambiare l'aspetto di un segnale quando il segnale succcessivo cambia aspetto. Nel nostro esempio:
OnUpdate: La logica è la seguente: se il segnale corrente è rosso, non viene eseguita alcuna azione; la riga con "return" indica che Train Director puo' ignorare le istruzioni seguenti per questo segnale. Se invece il segnale corrente non è rosso, allora dobbiamo guardare al segnale successivo, per vedere quale aspetto ha assunto ("if next.aspect = xxxx"). Se il segnale successivo è diventato rosso, allora dobbiamo cambiare l'spetto del segnale corrente a giallo (".aspect = yellow"). Se il segnale successivo non è rosso, allora dobbiamo cambiare l'aspetto del segnale corrente a verde (".aspect = green").
L'approccio descritto finora consente di rappresentare molte delle combinazioni presentate nel "Regolamento Segnali" di Trenitalia, e si spera di altre amministrazioni sia nazionali che estere. Nella pagina successiva vengono presentati casi piu' complessi.
|
|