diff --git a/assets/scenes/mini/piazzetta-comune.png b/assets/scenes/mini/piazzetta-comune.png new file mode 100644 index 0000000..699b6e6 Binary files /dev/null and b/assets/scenes/mini/piazzetta-comune.png differ diff --git a/assets/scenes/mini/scalinata-piazzetta.png b/assets/scenes/mini/scalinata-piazzetta.png new file mode 100644 index 0000000..4ef2f8b Binary files /dev/null and b/assets/scenes/mini/scalinata-piazzetta.png differ diff --git a/assets/scenes/mini/via-antica-posta-alta.png b/assets/scenes/mini/via-antica-posta-alta.png new file mode 100644 index 0000000..c852bc4 Binary files /dev/null and b/assets/scenes/mini/via-antica-posta-alta.png differ diff --git a/assets/scenes/mini/via-antica-posta.png b/assets/scenes/mini/via-antica-posta.png new file mode 100644 index 0000000..c626733 Binary files /dev/null and b/assets/scenes/mini/via-antica-posta.png differ diff --git a/assets/scenes/piazzetta-comune.png b/assets/scenes/piazzetta-comune.png new file mode 100644 index 0000000..20f91d4 Binary files /dev/null and b/assets/scenes/piazzetta-comune.png differ diff --git a/assets/scenes/scalinata-piazzetta.png b/assets/scenes/scalinata-piazzetta.png new file mode 100644 index 0000000..c83e024 Binary files /dev/null and b/assets/scenes/scalinata-piazzetta.png differ diff --git a/assets/scenes/via-antica-posta-alta.png b/assets/scenes/via-antica-posta-alta.png new file mode 100644 index 0000000..49bfef5 Binary files /dev/null and b/assets/scenes/via-antica-posta-alta.png differ diff --git a/assets/scenes/via-antica-posta.png b/assets/scenes/via-antica-posta.png new file mode 100644 index 0000000..d6a81d1 Binary files /dev/null and b/assets/scenes/via-antica-posta.png differ diff --git a/assets/voices/andrea-04381e498b.mp3 b/assets/voices/andrea-04381e498b.mp3 new file mode 100644 index 0000000..49fc080 Binary files /dev/null and b/assets/voices/andrea-04381e498b.mp3 differ diff --git a/assets/voices/andrea-17ccb76f0c.mp3 b/assets/voices/andrea-17ccb76f0c.mp3 new file mode 100644 index 0000000..a895f00 Binary files /dev/null and b/assets/voices/andrea-17ccb76f0c.mp3 differ diff --git a/assets/voices/andrea-1c6bb20507.mp3 b/assets/voices/andrea-1c6bb20507.mp3 new file mode 100644 index 0000000..fd92772 Binary files /dev/null and b/assets/voices/andrea-1c6bb20507.mp3 differ diff --git a/assets/voices/andrea-1c8aae44f9.mp3 b/assets/voices/andrea-1c8aae44f9.mp3 new file mode 100644 index 0000000..6e70cfd Binary files /dev/null and b/assets/voices/andrea-1c8aae44f9.mp3 differ diff --git a/assets/voices/andrea-1ec3557612.mp3 b/assets/voices/andrea-1ec3557612.mp3 new file mode 100644 index 0000000..742e8f9 Binary files /dev/null and b/assets/voices/andrea-1ec3557612.mp3 differ diff --git a/assets/voices/andrea-1fa2d33c2f.mp3 b/assets/voices/andrea-1fa2d33c2f.mp3 new file mode 100644 index 0000000..2a5a408 Binary files /dev/null and b/assets/voices/andrea-1fa2d33c2f.mp3 differ diff --git a/assets/voices/andrea-3b7d5860dc.mp3 b/assets/voices/andrea-3b7d5860dc.mp3 new file mode 100644 index 0000000..75a2e5d Binary files /dev/null and b/assets/voices/andrea-3b7d5860dc.mp3 differ diff --git a/assets/voices/andrea-4deca437c8.mp3 b/assets/voices/andrea-4deca437c8.mp3 new file mode 100644 index 0000000..24dd29a Binary files /dev/null and b/assets/voices/andrea-4deca437c8.mp3 differ diff --git a/assets/voices/andrea-51f23d7ac6.mp3 b/assets/voices/andrea-51f23d7ac6.mp3 new file mode 100644 index 0000000..29aa7b3 Binary files /dev/null and b/assets/voices/andrea-51f23d7ac6.mp3 differ diff --git a/assets/voices/andrea-5b0b04fef8.mp3 b/assets/voices/andrea-5b0b04fef8.mp3 new file mode 100644 index 0000000..7c6d613 Binary files /dev/null and b/assets/voices/andrea-5b0b04fef8.mp3 differ diff --git a/assets/voices/andrea-66cab2e717.mp3 b/assets/voices/andrea-66cab2e717.mp3 new file mode 100644 index 0000000..02ac052 Binary files /dev/null and b/assets/voices/andrea-66cab2e717.mp3 differ diff --git a/assets/voices/andrea-735b8b0920.mp3 b/assets/voices/andrea-735b8b0920.mp3 new file mode 100644 index 0000000..dcf2c38 Binary files /dev/null and b/assets/voices/andrea-735b8b0920.mp3 differ diff --git a/assets/voices/andrea-7967c3d476.mp3 b/assets/voices/andrea-7967c3d476.mp3 new file mode 100644 index 0000000..3aa6545 Binary files /dev/null and b/assets/voices/andrea-7967c3d476.mp3 differ diff --git a/assets/voices/andrea-7ea38df174.mp3 b/assets/voices/andrea-7ea38df174.mp3 new file mode 100644 index 0000000..ac5ce6c Binary files /dev/null and b/assets/voices/andrea-7ea38df174.mp3 differ diff --git a/assets/voices/andrea-8136bec81c.mp3 b/assets/voices/andrea-8136bec81c.mp3 new file mode 100644 index 0000000..cae356a Binary files /dev/null and b/assets/voices/andrea-8136bec81c.mp3 differ diff --git a/assets/voices/andrea-835648f0b6.mp3 b/assets/voices/andrea-835648f0b6.mp3 new file mode 100644 index 0000000..84142a3 Binary files /dev/null and b/assets/voices/andrea-835648f0b6.mp3 differ diff --git a/assets/voices/andrea-a196260e7c.mp3 b/assets/voices/andrea-a196260e7c.mp3 new file mode 100644 index 0000000..02f18d3 Binary files /dev/null and b/assets/voices/andrea-a196260e7c.mp3 differ diff --git a/assets/voices/andrea-b72a76810b.mp3 b/assets/voices/andrea-b72a76810b.mp3 new file mode 100644 index 0000000..c92bb0a Binary files /dev/null and b/assets/voices/andrea-b72a76810b.mp3 differ diff --git a/assets/voices/andrea-b8038d49dc.mp3 b/assets/voices/andrea-b8038d49dc.mp3 new file mode 100644 index 0000000..8d188ba Binary files /dev/null and b/assets/voices/andrea-b8038d49dc.mp3 differ diff --git a/assets/voices/andrea-c0f51c8219.mp3 b/assets/voices/andrea-c0f51c8219.mp3 new file mode 100644 index 0000000..05cd57a Binary files /dev/null and b/assets/voices/andrea-c0f51c8219.mp3 differ diff --git a/assets/voices/andrea-d7c8824e13.mp3 b/assets/voices/andrea-d7c8824e13.mp3 new file mode 100644 index 0000000..c3145c4 Binary files /dev/null and b/assets/voices/andrea-d7c8824e13.mp3 differ diff --git a/assets/voices/andrea-d8a1173809.mp3 b/assets/voices/andrea-d8a1173809.mp3 new file mode 100644 index 0000000..f194f95 Binary files /dev/null and b/assets/voices/andrea-d8a1173809.mp3 differ diff --git a/assets/voices/andrea-db2e00019a.mp3 b/assets/voices/andrea-db2e00019a.mp3 new file mode 100644 index 0000000..1be34d4 Binary files /dev/null and b/assets/voices/andrea-db2e00019a.mp3 differ diff --git a/assets/voices/index.json b/assets/voices/index.json index b13f064..fe31129 100644 --- a/assets/voices/index.json +++ b/assets/voices/index.json @@ -775,6 +775,98 @@ "file": "andrea-7fd73fbb77.mp3", "sec": 2.66 }, + "andrea|Le colonnine con le catene: le macchine di qua non passano.": { + "file": "andrea-7967c3d476.mp3", + "sec": 4.05 + }, + "andrea|Io sì. Scavalcare le catene è uno sport che pratico da quando avevo sei anni.": { + "file": "andrea-db2e00019a.mp3", + "sec": 6.2 + }, + "andrea|Una tenda a righe bianche e rosse. Fa tanto spiaggia: peccato che il mare sia di là dall'Appennino.": { + "file": "andrea-b8038d49dc.mp3", + "sec": 6.68 + }, + "andrea|Il muro di sasso con l'edera e la ringhiera in cima. Lassù c'è il verde della villa.": { + "file": "andrea-1ec3557612.mp3", + "sec": 5.8 + }, + "andrea|Via dell'Antica Posta. Chissà se la posta antica arrivava prima di quella moderna.": { + "file": "andrea-c0f51c8219.mp3", + "sec": 6.36 + }, + "andrea|La torre dell'orologio, vista dal retro. Anche da qui segna un'ora tutta sua.": { + "file": "andrea-a196260e7c.mp3", + "sec": 5.34 + }, + "andrea|La porta del Comune. Dal retro, ma sempre Comune.": { + "file": "andrea-66cab2e717.mp3", + "sec": 4.23 + }, + "andrea|Chiusa. Anche dalla porta di dietro, senza un modulo non si entra.": { + "file": "andrea-835648f0b6.mp3", + "sec": 4.54 + }, + "andrea|Una scultura moderna, lunga e appuntita. Secondo me è un'antenna per parlare coi marziani.": { + "file": "andrea-d7c8824e13.mp3", + "sec": 7.13 + }, + "andrea|Questa sembra un sasso. Ma sta su un piedistallo, quindi è arte.": { + "file": "andrea-d8a1173809.mp3", + "sec": 4.91 + }, + "andrea|Pesa più di me. E poi l'arte non si porta via in tasca.": { + "file": "andrea-51f23d7ac6.mp3", + "sec": 4.15 + }, + "andrea|Un vasone di fiori. Qualcuno se ne prende cura, al Comune.": { + "file": "andrea-1fa2d33c2f.mp3", + "sec": 4.49 + }, + "andrea|Due gatti che dormono sull'erba. Il Palio, per loro, può anche aspettare.": { + "file": "andrea-1c8aae44f9.mp3", + "sec": 6.01 + }, + "andrea|Micio, micio... Niente. Per meno di una scatoletta non aprono neanche un occhio.": { + "file": "andrea-7ea38df174.mp3", + "sec": 6.41 + }, + "andrea|Svegliare un gatto che dorme al sole? Non sono così coraggioso.": { + "file": "andrea-17ccb76f0c.mp3", + "sec": 4.55 + }, + "andrea|Due panchine all'ombra del muro. Un posto per chi non ha un palio da ritrovare.": { + "file": "andrea-8136bec81c.mp3", + "sec": 4.95 + }, + "andrea|Mi siederei volentieri, ma il Palio non si ritrova da solo.": { + "file": "andrea-735b8b0920.mp3", + "sec": 3.38 + }, + "andrea|Un ponticello sopra la strada, da una casa all'altra. Per andare dal vicino senza fare le scale.": { + "file": "andrea-04381e498b.mp3", + "sec": 7.67 + }, + "andrea|Il muro di Villa Schifanoia, alto alto, con l'edera che ormai lo tiene su lei.": { + "file": "andrea-4deca437c8.mp3", + "sec": 5.28 + }, + "andrea|Una saracinesca color ruggine. Dietro, scommetto, una macchina e trent'anni di roba da buttare.": { + "file": "andrea-b72a76810b.mp3", + "sec": 7.04 + }, + "andrea|Chiusa. E se la apro io, mi tocca anche fare ordine.": { + "file": "andrea-3b7d5860dc.mp3", + "sec": 4.36 + }, + "andrea|Panni stesi al sole. Se piove, qui lo sanno tutti prima del telegiornale.": { + "file": "andrea-1c6bb20507.mp3", + "sec": 5.41 + }, + "andrea|Rubare i panni stesi? Mi conoscono tutti, mi ritroverebbero prima del Palio.": { + "file": "andrea-5b0b04fef8.mp3", + "sec": 6.3 + }, "andrea|L'area feste. D'estate ci montano la pista da ballo, le tavolate e lo stand della pasta.": { "file": "andrea-a942b2723e.mp3", "sec": 6.77 diff --git a/docs/STATO.md b/docs/STATO.md index 3061ce6..7ad921c 100644 --- a/docs/STATO.md +++ b/docs/STATO.md @@ -204,6 +204,13 @@ I prompt fissi (stile, scene, foglio sprite) sono in `prompts/STILE.md`, escluso Via del Pignone (sfondo di Codex da `assets/raw/foto/via-del-pignone.png`): sul muro di destra il murale di Cistola (Davide Poggi), «il talento di via del Pignone», alla maniera dei murali di Maradona a Napoli (volto da `assets/raw/riferimenti/cistola.png`). Consenso di Davide confermato da Andrea il 2026-10-27. +- Via dell'Antica Posta (foto di Andrea, 28 ottobre, sfondi di Codex): dalla Piazza, a sinistra, sale verso Piazzetta + Cambray Digny, che non è più collegata direttamente alla Piazza. A sinistra la Piazzetta del Comune (il retro del + municipio con la torre e le sculture); in cima il muro di Villa Schifanoia, il ponticello, le panchine e due gatti. + Dalla Piazzetta, a destra accanto al palazzo, si scende per la scalinata in un cortile coi garage che porta ai + giardini del Comune (lato sinistro della scena del Comune); la scalinata si prende anche dalla curva a sinistra in + cima a Via dell'Antica Posta. In Piazzetta tutto il lato sinistro porta in Via de' Medici. Da confermare con Andrea: + il nome vero della scalinata. Battute provvisorie. - Via Pietro Cipriani (fra Piazza e campeggio): Cinema Taiuti aperto con la locandina del Rattattù 2007 (stile da `assets/raw/riferimenti/rattattu-locandina.png`, scaletta illeggibile). Al campo da basket del Circolo, «Fai due tiri» (`src/engine/basket.js`, vista di lato, sfondo e sprite di Andrea col pallone da Codex): da solo, dieci palloni, a ogni diff --git a/src/story/ambience.js b/src/story/ambience.js index eb643f9..8370472 100644 --- a/src/story/ambience.js +++ b/src/story/ambience.js @@ -80,6 +80,22 @@ export const ambience = { butterfly([150, 170, 150, 60], 5000), { type: 'lamps', phase: 'sera', points: [[616, 118]], glow: 12 }, ], + // Via dell'Antica Posta e dintorni (28 ottobre). + via_antica_posta: [ + { type: 'clouds', area: [180, 0, 300, 90], count: 2 }, + shade([0, 300, 640, 60], 10), + { type: 'lamps', phase: 'sera', points: [[62, 120], [366, 142]], glow: 10 }, + ], + piazzetta_comune: [ + { type: 'clouds', area: [60, 0, 520, 110], count: 3, big: true }, + butterfly([510, 250, 110, 50], 4000), + { type: 'lamps', phase: 'sera', points: [[436, 170]], glow: 10 }, + ], + antica_posta_alta: [ + shade([0, 290, 360, 70], 12), + butterfly([480, 170, 120, 60], 6000), + { type: 'lamps', phase: 'sera', points: [[184, 74]], glow: 10 }, + ], provinciale_pignone: [ shade([80, 270, 220, 70], 14), shade([470, 290, 170, 60], 10), { type: 'cloudshadow', phase: day, area: [120, 230, 420, 130], offset: 8000, diff --git a/src/story/story.js b/src/story/story.js index 6d3d23b..8e7770f 100644 --- a/src/story/story.js +++ b/src/story/story.js @@ -515,11 +515,12 @@ export const story = { take: [{ give: 'squama' }, { set: 'squama_presa' }, { say: 'Una squama! E bella grossa.' }], }, }, + // Si compare in basso: la foto di Via Cipriani è presa dall'altro verso (Andrea, 28 ottobre, va bene così). { id: 'verso_campeggio', name: 'Via Cipriani, verso il cinema e il campeggio', box: [330, 190, 34, 48], at: [345, 234], exit: { scene: 'via_cipriani', at: [300, 345], face: 'up' }, }, { - id: 'verso_piazzetta', name: 'Piazzetta Cambray Digny, verso Via de\' Medici', box: [0, 196, 146, 54], at: [92, 250], exit: { scene: 'piazzetta', at: [510, 274], face: 'down' }, + id: 'verso_piazzetta', name: 'Via dell\'Antica Posta, verso Piazzetta Cambray Digny', box: [0, 196, 146, 54], at: [92, 250], exit: { scene: 'via_antica_posta', at: [320, 345], face: 'up' }, }, { id: 'verso_calimara', name: 'Via Calimara, verso la farmacia', box: [180, 334, 380, 26], at: [360, 354], exit: { scene: 'via_calimara', at: [365, 212], face: 'down' }, @@ -1202,6 +1203,9 @@ export const story = { open: [{ say: 'All\'asilo? Ho già dato, grazie.' }], }, }, + { + id: 'alla_scalinata', name: 'a sinistra, la scalinata della Piazzetta', box: [0, 120, 150, 212], at: [40, 300], face: 'left', exit: { scene: 'scalinata', at: [300, 350], face: 'up' }, + }, { id: 'al_giardino', name: 'verso il giardino di Via Calimara', box: [596, 290, 44, 70], at: [600, 340], exit: { scene: 'via_calimara', at: [160, 290], face: 'right' }, }, @@ -1299,13 +1303,13 @@ export const story = { id: 'al_ponte', name: 'a sinistra, verso il campo sportivo', box: [0, 216, 60, 100], at: [12, 318], exit: { scene: 'ponte_sieve', at: [300, 350], face: 'up' }, }, { - id: 'alla_pieve', name: 'dietro la farmacia, verso la Pieve', box: [470, 180, 120, 60], at: [560, 240], exit: { scene: 'provinciale_pignone', at: [300, 345], face: 'up' }, + id: 'alla_pieve', name: 'dietro la farmacia, verso la Pieve', box: [420, 170, 118, 70], at: [480, 242], exit: { scene: 'provinciale_pignone', at: [300, 345], face: 'up' }, }, { id: 'area_feste', name: 'qui sotto, verso l\'area feste', box: [0, 318, 300, 42], at: [120, 352], exit: { scene: 'area_feste', at: [44, 350], face: 'up' }, }, { - id: 'al_comune', name: 'verso il Comune', box: [592, 140, 48, 96], at: [622, 244], exit: { scene: 'comune', at: [320, 350], face: 'up' }, + id: 'al_comune', name: 'verso il Comune', box: [540, 40, 100, 198], at: [622, 244], exit: { scene: 'comune', at: [320, 350], face: 'up' }, }, { id: 'alla_calimara', name: 'Via Calimara, verso la Piazza', box: [520, 260, 120, 100], at: [600, 330], exit: { scene: 'via_calimara', at: [300, 350], face: 'up' }, @@ -1388,7 +1392,8 @@ export const story = { }, ], }, - // Piazzetta Cambray Digny, in cima a Via del Pignone, sotto Villa Schifanoia: a sinistra Via de' Medici, a diritto la Piazza. + // Piazzetta Cambray Digny, in cima a Via del Pignone, sotto Villa Schifanoia: a sinistra Via de' Medici, a diritto + // Via dell'Antica Posta che scende in Piazza, a destra del palazzo la scalinata che scende al Comune (Andrea, 28 ottobre). piazzetta: { name: 'Piazzetta Cambray Digny', map: [40, 38], @@ -1411,16 +1416,188 @@ export const story = { }, }, { - id: 'alla_piazza', name: 'a diritto, verso la Piazza', box: [470, 226, 70, 48], at: [510, 274], exit: { scene: 'piazza', at: [92, 250], face: 'right' }, + id: 'alla_piazza', name: 'a diritto, Via dell\'Antica Posta verso la Piazza', box: [470, 226, 70, 48], at: [510, 274], exit: { scene: 'antica_posta_alta', at: [235, 230], face: 'down' }, }, { - id: 'via_de_medici', name: 'a sinistra, Via de\' Medici', box: [0, 280, 40, 80], at: [20, 320], face: 'left', exit: { scene: 'via_de_medici', at: [300, 348], face: 'up' }, + id: 'via_de_medici', name: 'a sinistra, Via de\' Medici', box: [0, 100, 60, 260], at: [20, 320], face: 'left', exit: { scene: 'via_de_medici', at: [300, 348], face: 'up' }, + }, + { + id: 'giu_scalinata', name: 'a destra, giù per la scalinata verso il Comune', box: [541, 226, 40, 60], at: [560, 285], exit: { scene: 'scalinata', at: [560, 325], face: 'down' }, }, { id: 'giu_pignone', name: 'giù per Via del Pignone', box: [570, 300, 70, 60], at: [610, 345], exit: { scene: 'via_pignone', at: [343, 212], face: 'down' }, }, ], }, + // Via dell'Antica Posta (foto di Andrea, 28 ottobre): dalla Piazza, a sinistra, sale verso Piazzetta Cambray Digny. + // La Piazza è alle spalle; a sinistra, coi tre scalini, la Piazzetta del Comune; in fondo si sale. + via_antica_posta: { + name: 'Via dell\'Antica Posta', + map: [35, 41], + background: 'assets/scenes/via-antica-posta.png', + walk: [[0, 360], [0, 300], [120, 290], [220, 252], [300, 240], [372, 226], [396, 226], [470, 252], [630, 300], [640, 360]], + depth: [[226, 0.35], [360, 1.15]], + entry: [320, 345], + hotspots: [ + { + id: 'colonnine', name: 'colonnine con le catene', box: [225, 225, 95, 68], at: [290, 300], face: 'left', + actions: { + look: [{ say: 'Le colonnine con le catene: le macchine di qua non passano.' }, { say: 'Io sì. Scavalcare le catene è uno sport che pratico da quando avevo sei anni.' }], + }, + }, + { + id: 'tenda', name: 'tenda a righe', box: [508, 182, 30, 28], at: [500, 268], face: 'right', + actions: { + look: [{ say: 'Una tenda a righe bianche e rosse. Fa tanto spiaggia: peccato che il mare sia di là dall\'Appennino.' }], + }, + }, + { + id: 'muro_edera', name: 'muro con l\'edera', box: [546, 140, 94, 150], at: [570, 296], face: 'right', + actions: { + look: [{ say: 'Il muro di sasso con l\'edera e la ringhiera in cima. Lassù c\'è il verde della villa.' }], + }, + }, + { + id: 'alla_piazzetta_comune', name: 'a sinistra, il Comune', box: [0, 90, 200, 204], at: [130, 292], face: 'left', exit: { scene: 'piazzetta_comune', at: [260, 350], face: 'up' }, + }, + { + id: 'su_antica_posta', name: 'su, in fondo a Via dell\'Antica Posta', box: [350, 200, 70, 30], at: [384, 230], exit: { scene: 'antica_posta_alta', at: [240, 350], face: 'up' }, + }, + { + id: 'alla_piazza', name: 'indietro, la Piazza', box: [0, 334, 640, 26], at: [320, 354], exit: { scene: 'piazza', at: [92, 250], face: 'right' }, + }, + ], + enter: [{ if: '!antica_posta_vista', then: [{ set: 'antica_posta_vista' }, { say: 'Via dell\'Antica Posta. Chissà se la posta antica arrivava prima di quella moderna.' }] }], + }, + // La Piazzetta del Comune, dietro il municipio: la torre dell'orologio, le sculture sui pilastrini di mattoni. + piazzetta_comune: { + name: 'Piazzetta del Comune', + map: [32, 39], + background: 'assets/scenes/piazzetta-comune.png', + walk: [[0, 360], [0, 318], [130, 292], [470, 288], [540, 300], [520, 360]], + depth: [[288, 0.55], [360, 1.15]], + entry: [260, 350], + hotspots: [ + { + id: 'torre', name: 'torre dell\'orologio', box: [264, 16, 58, 104], at: [290, 294], face: 'up', + actions: { + look: [{ say: 'La torre dell\'orologio, vista dal retro. Anche da qui segna un\'ora tutta sua.' }], + }, + }, + { + id: 'porta_comune', name: 'porta del Comune', box: [286, 238, 26, 50], at: [298, 292], face: 'up', + actions: { + look: [{ say: 'La porta del Comune. Dal retro, ma sempre Comune.' }], + open: [{ say: 'Chiusa. Anche dalla porta di dietro, senza un modulo non si entra.' }], + }, + }, + { + id: 'scultura', name: 'scultura alta', box: [264, 248, 22, 68], at: [250, 320], face: 'right', + actions: { + look: [{ say: 'Una scultura moderna, lunga e appuntita. Secondo me è un\'antenna per parlare coi marziani.' }], + }, + }, + { + id: 'sasso', name: 'scultura a sasso', box: [92, 276, 42, 54], at: [150, 330], face: 'left', + actions: { + look: [{ say: 'Questa sembra un sasso. Ma sta su un piedistallo, quindi è arte.' }], + take: [{ say: 'Pesa più di me. E poi l\'arte non si porta via in tasca.' }], + }, + }, + { + id: 'vaso_fiori', name: 'vaso di fiori', box: [520, 264, 106, 82], at: [505, 330], face: 'right', + actions: { + look: [{ say: 'Un vasone di fiori. Qualcuno se ne prende cura, al Comune.' }], + }, + }, + { + id: 'alla_via', name: 'indietro, Via dell\'Antica Posta', box: [0, 336, 520, 24], at: [260, 354], exit: { scene: 'via_antica_posta', at: [140, 294], face: 'right' }, + }, + ], + }, + // In cima a Via dell'Antica Posta, prima della Piazzetta: il muro della villa con l'edera, il ponticello sopra la + // strada, il giardinetto con le panchine e due gatti al sole. A sinistra, sotto il ponticello, la scalinata (Andrea). + antica_posta_alta: { + name: 'In cima a Via dell\'Antica Posta', + map: [38, 39], + background: 'assets/scenes/via-antica-posta-alta.png', + walk: [[0, 360], [0, 322], [190, 226], [283, 222], [470, 360]], + depth: [[222, 0.35], [360, 1.15]], + entry: [240, 350], + hotspots: [ + { + id: 'gatti', name: 'gatti', box: [490, 236, 100, 28], at: [420, 330], face: 'right', + actions: { + look: [{ say: 'Due gatti che dormono sull\'erba. Il Palio, per loro, può anche aspettare.' }], + talk: [{ say: 'Micio, micio... Niente. Per meno di una scatoletta non aprono neanche un occhio.' }], + take: [{ say: 'Svegliare un gatto che dorme al sole? Non sono così coraggioso.' }], + }, + }, + { + id: 'panchine', name: 'panchine', box: [358, 212, 130, 44], at: [375, 300], face: 'right', + actions: { + look: [{ say: 'Due panchine all\'ombra del muro. Un posto per chi non ha un palio da ritrovare.' }], + use: [{ say: 'Mi siederei volentieri, ma il Palio non si ritrova da solo.' }], + }, + }, + { + id: 'ponticello', name: 'ponticello', box: [187, 34, 92, 38], at: [235, 240], face: 'up', + actions: { + look: [{ say: 'Un ponticello sopra la strada, da una casa all\'altra. Per andare dal vicino senza fare le scale.' }], + }, + }, + { + id: 'muro_villa', name: 'muro della villa', box: [383, 0, 257, 205], at: [330, 280], face: 'right', + actions: { + look: [{ say: 'Il muro di Villa Schifanoia, alto alto, con l\'edera che ormai lo tiene su lei.' }], + }, + }, + { + id: 'su_piazzetta', name: 'su, Piazzetta Cambray Digny', box: [250, 196, 80, 30], at: [280, 226], exit: { scene: 'piazzetta', at: [510, 276], face: 'down' }, + }, + { + id: 'alla_scalinata', name: 'a sinistra, giù per la scalinata verso il Comune', box: [150, 190, 60, 36], at: [195, 228], exit: { scene: 'scalinata', at: [470, 312], face: 'down' }, + }, + { + id: 'giu_antica_posta', name: 'giù, Via dell\'Antica Posta', box: [0, 334, 470, 26], at: [240, 354], exit: { scene: 'via_antica_posta', at: [384, 234], face: 'down' }, + }, + ], + }, + // La scalinata (foto di Andrea, 28 ottobre): un cortile coi garage; su per le scale la Piazzetta Cambray Digny, + // alle spalle i giardini e il retro del Comune. + scalinata: { + name: 'La scalinata della Piazzetta', + map: [30, 42], + background: 'assets/scenes/scalinata-piazzetta.png', + walk: [[0, 360], [0, 290], [100, 282], [380, 278], [400, 300], [620, 330], [640, 360]], + depth: [[278, 0.55], [360, 1.15]], + entry: [300, 350], + hotspots: [ + { + id: 'saracinesca', name: 'saracinesca', box: [268, 196, 62, 79], at: [300, 290], face: 'up', + actions: { + look: [{ say: 'Una saracinesca color ruggine. Dietro, scommetto, una macchina e trent\'anni di roba da buttare.' }], + open: [{ say: 'Chiusa. E se la apro io, mi tocca anche fare ordine.' }], + }, + }, + { + id: 'panni', name: 'panni stesi', box: [110, 108, 34, 30], at: [130, 290], face: 'up', + actions: { + look: [{ say: 'Panni stesi al sole. Se piove, qui lo sanno tutti prima del telegiornale.' }], + take: [{ say: 'Rubare i panni stesi? Mi conoscono tutti, mi ritroverebbero prima del Palio.' }], + }, + }, + { + id: 'su_antica_posta', name: 'su per le scale, a sinistra Via dell\'Antica Posta', box: [440, 196, 90, 70], at: [470, 312], face: 'up', exit: { scene: 'antica_posta_alta', at: [195, 228], face: 'right' }, + }, + { + id: 'su_piazzetta', name: 'su per le scale, a destra Piazzetta Cambray Digny', box: [530, 196, 80, 70], at: [560, 325], face: 'up', exit: { scene: 'piazzetta', at: [560, 285], face: 'left' }, + }, + { + id: 'al_comune', name: 'indietro, i giardini del Comune', box: [0, 334, 640, 26], at: [300, 354], exit: { scene: 'comune', at: [40, 300], face: 'right' }, + }, + ], + }, // L'area feste (il parco Antonio Berti): dalla rotonda del River, a sinistra. area_feste: { name: 'Area feste', @@ -2320,6 +2497,9 @@ export const story = { { id: 'all_area_camper', name: 'a sinistra, verso l\'area camper', box: [320, 160, 110, 42], at: [442, 202], exit: { scene: 'area_camper', at: [600, 330], face: 'left' }, }, + { + id: 'al_giannini', name: 'in fondo a sinistra, verso il campo del Giannini', box: [380, 165, 58, 30], at: [440, 200], exit: { scene: 'campo_giannini', at: [480, 218], face: 'left' }, + }, { id: 'alla_stazione', name: 'a destra, verso la stazione', box: [486, 160, 90, 40], at: [474, 202], exit: { scene: 'stazione', at: [20, 300], face: 'right' }, }, @@ -2348,9 +2528,6 @@ export const story = { look: [{ say: 'Le villette rosa coi balconi bianchi. Da qui a casa mia è un attimo.' }], }, }, - { - id: 'al_giannini', name: 'il campo del Giannini', box: [140, 160, 260, 70], at: [250, 238], exit: { scene: 'campo_giannini', at: [320, 350], face: 'up' }, - }, { id: 'a_cardetole', name: 'verso casa, a Cardetole', box: [0, 230, 80, 130], at: [20, 300], exit: { scene: 'cardetole', at: [300, 350], face: 'up' }, }, @@ -2359,7 +2536,8 @@ export const story = { }, ], }, - // Il prato del parco dei camper visto dall'altra parte: per i ragazzi, «il campo del Giannini». + // Il prato del parco dei camper visto dall'altra parte: per i ragazzi, «il campo del Giannini». Ci si arriva dal + // ponticino della Carza; niente uscita verso l'area camper, perché è già questa (Andrea, 28 ottobre). campo_giannini: { name: 'Il campo del Giannini', map: [82, 96], @@ -2382,7 +2560,7 @@ export const story = { }, }, { - id: 'al_parco', name: 'indietro, verso l\'area camper', box: [0, 330, 640, 30], at: [320, 354], exit: { scene: 'area_camper', at: [250, 238], face: 'down' }, + id: 'al_ponticino', name: 'verso il ponticino della Carza', box: [440, 150, 90, 60], at: [480, 216], exit: { scene: 'ponticino', at: [444, 204], face: 'right' }, }, ], }, @@ -2410,6 +2588,7 @@ export const story = { use: [{ say: 'Arrampicarmi? Alla mia età, e davanti a tutto il condominio?' }], }, }, + // Si compare a destra dell'area camper: inquadrature invertite rispetto alle foto (Andrea, 28 ottobre, va bene così). { id: 'alla_pieve', name: 'su verso la Pieve', box: [0, 330, 640, 30], at: [300, 354], exit: { scene: 'area_camper', at: [600, 330], face: 'left' }, }, diff --git a/tests/command.test.mjs b/tests/command.test.mjs index 16f00b8..a33ab5b 100644 --- a/tests/command.test.mjs +++ b/tests/command.test.mjs @@ -15,7 +15,7 @@ test('clic intelligente: parla con le persone, guarda le cose, attraversa le usc const { g, c, at } = setup(); assert.equal(c.sentence('vecchietti'), 'Parla con vecchietti'); assert.equal(c.sentence('manifesto'), 'Guarda manifesto del Palio'); - assert.equal(c.sentence('verso_piazzetta'), 'Vai a Piazzetta Cambray Digny, verso Via de\' Medici'); + assert.equal(c.sentence('verso_piazzetta'), 'Vai a Via dell\'Antica Posta, verso Piazzetta Cambray Digny'); assert.equal(c.clickScene(at('vecchietti')), 'act'); settle(g); assert.equal(g.dialogue?.id, 'vecchietti');