diff --git a/esempi/Cromwell/interprete.js b/esempi/Cromwell/interprete.js
index dbd8185..259c445 100644
--- a/esempi/Cromwell/interprete.js
+++ b/esempi/Cromwell/interprete.js
@@ -229,9 +229,10 @@ var Vista = {
// L'avvio della scena 1 deve resettare la storia
if (n == 1) {
S.nuovaPartita();
+ Vista.caricamento = 0;
G.nScena = 0; // La scena 0 indica che le istruzioni chiamate sono all'interno del blocco istruzioniGenerali
istruzioniGenerali(); // (funzione nel file 'scene.js')
- G.nScena = 1; // Reimposto la scena 1 che è quella appena chiamata
+ G.nScena = 1; G.nScenaP = 1; G.nScenaPP = 1; // Reimposto la scena 1 che è quella appena chiamata
};
// Segna i passaggi di scena
@@ -253,9 +254,10 @@ var Vista = {
svuotaScena: function() {
// Svuota i contenuti e nasconde gli elementi della scena
+ G.luoghiRagg.bloccati = 0;
Vista.intermezzo = [];
Vista.testo = '';
- Vista.uscite = ''; G.luoghiRagg.bloccati = 0;
+ Vista.uscite = '';
Vista.scelte = '';
document.getElementById('audio').innerHTML = '';
document.getElementById('scelte').style.visibility = 'hidden';
@@ -502,7 +504,7 @@ var I = {
I.inputGrezzo = e_inp.value.trim();
if (I.inputGrezzo.charAt(0) == '?') I.inputGrezzo = I.inputGrezzo.substr(1).trim();
// Rifiuta un input vuoto e reimposta la casella di input
- if (I.inputGrezzo === '') { e_inp.value = '? '; return; }
+ if (I.inputGrezzo === '') { e_inp.value = '? '; G.pronto(); return; }
// Normalizza l'input grezzo del giocatore
I.inputNorm = Lingua.normalizzaInput(I.inputGrezzo, 1);
@@ -614,10 +616,13 @@ var I = {
if (cambioScena === 0) {
for (var a = 0; a < azioni.length; a++) {
if (azioni[a].azione === 'vaiA' && azioni[a].mosse !== undefined) {
- I.eseguiIstruzione(azioni[a]);
- azioni.splice(a, 1); a--;
- cambioScena = 1;
- break;
+ // Deve ricontrollare le condizioni su oggetti e variabili, le azioni precedenti possono averle cambiate
+ if (I.controllaOggVar(azioni[a]) === true) {
+ I.eseguiIstruzione(azioni[a]);
+ azioni.splice(a, 1); a--;
+ cambioScena = 1;
+ break;
+ }
}
}
}
@@ -625,10 +630,13 @@ var I = {
if (cambioScena === 0) {
for (var a = 0; a < azioni.length; a++) {
if (azioni[a].azione === 'vaiA' && azioni[a].mosse === undefined) {
- I.eseguiIstruzione(azioni[a]);
- azioni.splice(a, 1); a--;
- cambioScena = 1;
- break;
+ // Deve ricontrollare le condizioni su oggetti e variabili, le azioni precedenti possono averle cambiate
+ if (I.controllaOggVar(azioni[a]) === true) {
+ I.eseguiIstruzione(azioni[a]);
+ azioni.splice(a, 1); a--;
+ cambioScena = 1;
+ break;
+ }
}
}
}
@@ -636,8 +644,11 @@ var I = {
// Assicurarsi che non sia un "vaiA" perché non vengono scartati tutti, solo il primo incontrato
for (var a = 0; a < azioni.length; a++) {
if (azioni[a].azione !== 'vaiA' && azioni[a].mosse !== undefined) {
- I.eseguiIstruzione(azioni[a]);
- azioneEseguita = 1;
+ // Deve ricontrollare le condizioni su oggetti e variabili, le azioni precedenti possono averle cambiate
+ if (I.controllaOggVar(azioni[a])) {
+ I.eseguiIstruzione(azioni[a]);
+ azioneEseguita = 1;
+ }
}
}
@@ -783,7 +794,7 @@ var I = {
eseguiAudio(istro.audio);
break;
case 'rispondi':
- if (!istro.mosse) {
+ if (istro.mosse === undefined) {
classi = ' class="inviato';
if (Vista.stile.coloreTestoInviato) {
coloreInline = ' style="color:'+Vista.stile.coloreTestoInviato+';"';
@@ -805,7 +816,7 @@ var I = {
}
break;
case 'rispondiVai':
- if (!istro.mosse) {
+ if (istro.mosse === undefined) {
document.getElementById('input').style.display = 'none';
classi = ' class="inviato';
if (Vista.stile.coloreTestoInviato) {
@@ -839,7 +850,6 @@ var G = {
nScena: 1, // Numero scena corrente
nScenaP: 1, // Numero scena precedente
nScenaPP: 1, // Numero scena precedente alla precedente
- mosse: 0, // Numero mosse del giocatore
passaggiScena: {}, // Dizionario che dato un nScena restituisce un array di nScena verso cui si è transitati
luoghiRagg: { // Luoghi raggiungibili
bloccati: 0,
@@ -847,6 +857,14 @@ var G = {
coppie: {} // Sono coppie chiave-valore per avere il nScena di un luogo o il nome di un luogo dato un nScena
},
+ nuovaPartita: function() {
+ G.passaggiScena = {};
+ G.luoghiRagg = {};
+ G.luoghiRagg.bloccati = 0;
+ G.luoghiRagg.nomi = [];
+ G.luoghiRagg.coppie = {};
+ },
+
pronto: function() {
var e_inp = document.getElementById('input');
e_inp.focus();
@@ -872,9 +890,7 @@ var S = {
// Chiamare vocabolario crea sia i predicati ordinati che le equivalenze ordinate
if (Lingua.equivalenzeOrd.length !== 0) vocabolario();
- G.mosse = 0; // Azzera il contatore delle mosse del giocatore
- G.luoghiRagg.nomi = []; // Cancella tutti i nomi dei luoghi raggiungibili
- G.luoghiRagg.coppie = {}; // Cancella tutte le associazioni tra nomi dei luoghi e nScena
+ G.nuovaPartita();
S.oggetti = {}; // Cancella tutti i contenitori con gli oggetti
S.variabili = {}; // Cancella tutte le variabili
},
@@ -1227,6 +1243,7 @@ function uscita(txt_in, nS, vis, nomeDest) {
// nomeDest viene usato se l'uscita è stata esplorata, altrimenti non deve comparire
if (['esplorato','esplorata'].indexOf(vis) !== -1 || G.uscitaEsplorata(nS)) {
if (nomeDest) {
+ txt_in += '|'+nomeDest+'|'+nomeUscita+' '+nomeDest;
nomeDest = ' ('+nomeDest+')';
} else if (G.luoghiRagg.coppie[nS] !== undefined) {
nomeDest = ' ('+G.luoghiRagg.coppie[nS]+')';
@@ -1349,7 +1366,7 @@ function nMosseRispondi(mosse, txt_out, rip) {
S.Istruzioni.valore('ripeti', rip);
var L; // Livello delle istruzioni (generali o di scena)
- if (G.nScena === 0) { L = 'generali'; } else { L = 'scena'; Scena.stile.inputBox = 1; }
+ if (G.nScena === 0) { L = 'generali'; } else { L = 'scena'; Vista.stile.inputBox = 1; }
var iUB = Condizioni.correntiABlocchi.length - 1; // iUB: indice ultimo blocco
if (Condizioni.righeCoinvolte[iUB] > 0) {
diff --git a/esempi/Cromwell/scene.js b/esempi/Cromwell/scene.js
index 183760b..bc5008a 100644
--- a/esempi/Cromwell/scene.js
+++ b/esempi/Cromwell/scene.js
@@ -66,7 +66,7 @@ function istruzioniScena(n) {
case 1:
testo("
CROMWELL © MMXVI
", "centrato");
immagine("drago.png");
- testo("Poteri arcani per soggiogare la morte
", "centrato");
+ testo("L'abate e il drago della palude
", "centrato");
scegliVai("Inizia", 2, "centrato");
scegliRispondi("Istruzioni", "", "centrato");
scegliRispondi("Licenza", "CROMWELL © MMXVI è una rivisitazione dell'avventura testuale EXCALIBUR © MCMLXXXVIII pubblicata sulla rivista Amiga Byte n.8 come opera di pubblico dominio, liberamente copiabile e distribuibile senza scopo di lucro. Confabula è l'interprete JavaScript per creare ed eseguire avventure testuali, rilasciato da Druido87 con licenza GNU L-GPL. La storia rivisitata è un esempio di utilizzo di Confabula.", "centrato");
diff --git a/esempi/Cromwell/stile.css b/esempi/Cromwell/stile.css
index c797dbd..a297a5b 100644
--- a/esempi/Cromwell/stile.css
+++ b/esempi/Cromwell/stile.css
@@ -1,14 +1,14 @@
/** Stile personalizzabile **/
-@font-face { font-family: "commodore"; src: url(commodore.ttf); }
+@font-face { font-family: "commodore"; src: url("commodore.ttf"); }
/* Commodore64 Pixelized Free Font - http://all-free-download.com/font/download/commodore_64_pixelized_13026.html */
.coloreSfondo { background-color: #000; }
.coloreTesto { color: #B5A594; }
.coloreTestoInviato { color: #82776A; }
.testoCarattere { font-family: "commodore"; }
-.testoGrandezza { font-size: 20px; letter-spacing: -1.5px; line-height: 1.2em; }
+.testoGrandezza { font-size: 19.5px; letter-spacing: -2px; line-height: 22px; word-spacing: -4px; }
.testoAllineamento { text-align: left; }
.coloreScelta { color: #9C8159; }
.coloreScelta:hover /*colore scelta selezionata*/ { color: #cc0; }
@@ -36,8 +36,9 @@ a {
img {
max-width: 100%;
margin: 8px auto 8px auto;
+ image-rendering: pixelated;
}
-#intermezzo, #testo, #input, #scelte {
+#testo, #input, #scelte {
margin: 0 auto 0 auto;
padding: 0 8px 0 8px;
}