Così come per Inform, anche in Glulx è possibile personalizzare la status line. Diamo quindi un’occhiata al quinto e ultimo esempio (sgw_test_it_SLINE):
Constant Story "Test per sgw";
Constant Headline
"^Simple Glulxe Wrapper (sgw)
^di Alessandro Schillaci^^";
Constant NOGRAPHICS;
Constant NOSOUND;
! Colori di default all’apertura di WinGlulxe
Constant SCBACK $ffffff;
Constant SCTEXT $000000;
Constant SCEMPH $000000;
Constant SCHEAD $000000;
Constant SCINPU $000000;
Constant SCSOFT $000000;
Replace DrawStatusLine;
Include "Parser";
Include "sgw.h"; ! Inclusione della libreria SGW
Include "Infglk";
Include "VerbLib";
Include "Replace";
Include "sgw_test_it_SLINE.bli";
! ----------------------------------------------------------------------
Object room_1 "room 1"
with description "Una semplice stanza di esempio. Stanza 1.",
cant_go "Puoi muoverti solo a nord, verso la stanza 2.",
n_to room_2,
has light;
Object room_2 "room 2"
with description "Una semplice stanza di esempio. Stanza 2.",
cant_go "Puoi muoverti a nord verso la stanza 3 oppure a sud,
verso la stanza 1.",
n_to room_3,
s_to room_1,
has light;
Object room_3 "room 3"
with description "Una semplice stanza di esempio. Stanza 3.",
cant_go "Puoi muoverti solo a sud, verso la stanza 2.",
s_to room_2,
has light;
! ----------------------------------------------------------------------
[ Initialise;
initializeSGW(0);
location = room_1;
];
[ DrawStatusLine width height;
! Se non abbiamo una riga di stato, non dobbiamo cercare di ridisegnarla.
if (gg_statuswin == 0)
return;
! Non dobbiamo farlo neanche se non esiste una locazione per il giocatore
if (location == nothing || parent(player) == nothing)
return;
StatusLineHeight(1); ! numero di righe della status line
glk_set_window(gg_statuswin);
glk_window_clear(gg_statuswin);
glk_window_get_size(gg_statuswin, gg_arguments, gg_arguments+4);
width = gg_arguments-->0; if (width == 0) width = 100;
height = gg_arguments-->1; if (height == 0) height = 1;
glk_window_move_cursor(gg_statuswin, 1, 0);
if (location == thedark) {
print (name) location;
}
else {
FindVisibilityLevels();
if (visibility_ceiling == location)
print (name) location;
else
print (The) visibility_ceiling;
}
glk_window_move_cursor(gg_statuswin, 74, 0);
print "Punteggio: ", score;
glk_window_move_cursor(gg_statuswin, 93, 0);
print "Turni: ", turns;
glk_set_window(gg_mainwin);
];
! ----------------------------------------------------------------------
Include "ItalianG";
Così come per Inform, anche in Glulx occorre rifarsi all’istruzione Replace DrawStatusLine; seguita poi dalla definizione della funzione DrawStatusLine. L’istruzione glk_window_move_cursor(gg_statuswin, 1, 0); posiziona il testo che segue (in questo caso il nome della locazione) alla posizione 1 della prima riga:
Il resto, a questo punto del manuale, dovrebbe ormai esservi abbastanza chiaro; comunque, per chi non l’avesse ancora letto, il paragrafo 5.1 contiene ulteriori informazioni sull’argomento.