From 4f52dd72b97888f4423e4b8c8f9743586747cb7c Mon Sep 17 00:00:00 2001 From: Silvan87 Date: Sun, 23 Apr 2017 18:55:08 +0200 Subject: [PATCH] Add files via upload --- esempi/Cromwell/interprete.js | 57 +++++++++++++++++++++++------------ esempi/Cromwell/scene.js | 2 +- esempi/Cromwell/stile.css | 7 +++-- 3 files changed, 42 insertions(+), 24 deletions(-) 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; }