Si comincia svegliandosi sulla panchina dei vecchietti dopo una notte brava: gli occhi che si aprono a fatica, la piazza sfocata e doppia; e dal Barone il telefonino col sito di San Piero, che si apre a tutto schermo, e il Muro del Sanpierino vero coi messaggi del 2007, «Aggiorna» compreso (Andrea)
- Il risveglio (src/engine/risveglio.js): primo piano sopra la scena, con le battute mentre le palpebre si aprono e i vecchietti che danno la notizia del palio; «Salta» lo salta. - Il telefonino del Barone (src/engine/telefono.js): sale dal basso come il libro, la home di sanpiero50037.it dalla Wayback Machine nello schermo, il mattone del muro apre il muro. - Il muro (assets/muro, tools/muro.py): la pagina vera rifatta statica dal muro riesumato, coi 24 messaggi del dump (senza email né IP) e quelli del gioco, che arrivano con la storia; «Scrivi» spento. - Il gioco sgancia i service worker di altre app rimasti sul suo indirizzo (la Bussola su localhost:8080). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01GiECd9RWGMKV7n3K1mdy8T
This commit is contained in:
+13
-2
@@ -65,6 +65,10 @@ $('effects-volume').addEventListener('input', e => { ambience.configure({ volume
|
||||
showSound();
|
||||
window.music = music; // per i test nel browser
|
||||
|
||||
// Il gioco non usa service worker: se ne è rimasto uno di un'altra app passata su questo indirizzo (la Bussola su
|
||||
// localhost:8080, 31 ottobre), si sgancia, sennò intercetta le pagine aperte dal gioco (il muro nel telefonino).
|
||||
navigator.serviceWorker?.getRegistrations().then(list => list.forEach(r => r.unregister())).catch(() => {});
|
||||
|
||||
fetch(versioned('assets/voices/index.json')).then(r => r.ok ? r.json() : {}).then(index => { voices.index = index; }).catch(() => {});
|
||||
window.voices = voices;
|
||||
let voiced = null;
|
||||
@@ -75,7 +79,7 @@ function start(state, rione = null) {
|
||||
game = new Game(story, { state, onSave: data => storage && writeSave(storage, data), voiceTime: (who, text) => voices.seconds(who, text) });
|
||||
command = new Command(game);
|
||||
if (!state && rione) game.state.flags['rione:' + rione] = true;
|
||||
if (!state) game.go(story.start.scene, story.start.at);
|
||||
if (!state) game.go(story.start.scene, story.start.at, story.start.face);
|
||||
$('title').hidden = true;
|
||||
$('ending').hidden = true;
|
||||
running = true;
|
||||
@@ -1094,7 +1098,14 @@ function updateUi() {
|
||||
setProp($('spots-button'), 'hidden', !running || !!game.closeup);
|
||||
setProp($('notebook-button'), 'hidden', !running || !story.notebook || !!game.closeup);
|
||||
setProp($('closeup-close'), 'hidden', !running || !game.closeup);
|
||||
setText($('closeup-close'), torch ? c.step === 'done' ? 'Continua' : 'Torna fuori' : mg ? c.step === 'result' ? mg.back : 'Lascia stare' : 'Chiudi');
|
||||
// Il Muro del Sanpierino: a muro aperto sul telefonino del Barone, la pagina vera sopra la scena. Ogni volta che si
|
||||
// riapre si ricarica (i messaggi nuovi della storia).
|
||||
const muro = $('muro'), wall = running && c && story.closeups[c.id]?.type === 'telefono' && c.step === 'wall';
|
||||
if (wall && muro.hidden) muro.src = versioned('assets/muro/index.html');
|
||||
if (!wall && !muro.hidden) muro.src = 'about:blank';
|
||||
setProp(muro, 'hidden', !wall);
|
||||
if (wall) muro.style.setProperty('--muro-scale', String(canvas.clientWidth / 1067));
|
||||
setText($('closeup-close'), torch ? c.step === 'done' ? 'Continua' : 'Torna fuori' : mg ? c.step === 'result' ? mg.back : 'Lascia stare' : c && story.closeups[c.id]?.type === 'risveglio' ? 'Salta' : 'Chiudi');
|
||||
setProp($('panel'), 'inert', !!c);
|
||||
canvas.classList.toggle('torch', !!torch);
|
||||
canvas.classList.toggle('bocce', !!mg);
|
||||
|
||||
Reference in New Issue
Block a user