Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
15ae2b8221 | ||
|
|
f895b7979d | ||
|
|
bec7f067bc | ||
|
|
e50a3e80e9 | ||
|
|
afb0b931c5 | ||
|
|
fb1568259b |
|
After Width: | Height: | Size: 4.9 KiB |
|
After Width: | Height: | Size: 5.1 KiB |
|
After Width: | Height: | Size: 6.6 KiB |
|
After Width: | Height: | Size: 5.5 KiB |
|
After Width: | Height: | Size: 5.1 KiB |
|
After Width: | Height: | Size: 175 KiB |
|
After Width: | Height: | Size: 224 KiB |
|
After Width: | Height: | Size: 456 KiB |
|
After Width: | Height: | Size: 280 KiB |
|
After Width: | Height: | Size: 233 KiB |
@@ -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
|
||||
@@ -1243,6 +1335,22 @@
|
||||
"file": "andrea-3e2f9b4424.mp3",
|
||||
"sec": 6.42
|
||||
},
|
||||
"andrea|La pozza. Anche il quindici d'agosto è sempre bella piena.": {
|
||||
"file": "andrea-8c0ccd6cd7.mp3",
|
||||
"sec": 5.09
|
||||
},
|
||||
"andrea|Un giorno ci casco dentro e ci affogo: il primo annegato in mezzo al bosco.": {
|
||||
"file": "andrea-d7a9731b0f.mp3",
|
||||
"sec": 4.59
|
||||
},
|
||||
"andrea|Un bagno nella pozza? No, grazie: non so quanto è fonda, e non lo voglio sapere.": {
|
||||
"file": "andrea-97a7504f87.mp3",
|
||||
"sec": 6.15
|
||||
},
|
||||
"andrea|Una rete vecchia, tenuta su coi pali di legno e con la speranza.": {
|
||||
"file": "andrea-bbd7781659.mp3",
|
||||
"sec": 4.13
|
||||
},
|
||||
"andrea|Giù a destra, oltre le vigne, c'è la casa del maestro Bacci. Mezzo paese ha imparato a leggere e scrivere da lui.": {
|
||||
"file": "andrea-060513a152.mp3",
|
||||
"sec": 8.65
|
||||
|
||||
@@ -204,6 +204,16 @@ 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.
|
||||
- Il sentiero della Fortezza (foto di Andrea, 28 ottobre, sfondo di Codex): fra la Fortezza (a diritto) e la casa del
|
||||
maestro Bacci (alle spalle), che non sono più collegate direttamente. La pozza c'è anche il 15 d'agosto (Andrea).
|
||||
Il nome del sentiero è provvisorio.
|
||||
- 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
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "leggenda-del-regolo",
|
||||
"version": "0.1.26",
|
||||
"version": "0.1.29",
|
||||
"private": true,
|
||||
"type": "module",
|
||||
"scripts": {
|
||||
|
||||
@@ -80,6 +80,26 @@ export const ambience = {
|
||||
butterfly([150, 170, 150, 60], 5000),
|
||||
{ type: 'lamps', phase: 'sera', points: [[616, 118]], glow: 12 },
|
||||
],
|
||||
sentiero_fortezza: [
|
||||
{ type: 'cloudshadow', phase: day, area: [0, 180, 640, 180], offset: 5000, clip: rect([0, 180, 640, 180]) },
|
||||
butterfly([380, 200, 160, 70], 8000),
|
||||
],
|
||||
// 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,
|
||||
|
||||
@@ -12,7 +12,7 @@ export const soundscapes = {
|
||||
};
|
||||
|
||||
const groups = {
|
||||
bosco: ['bosco_ai_frati', 'viale_cipressi', 'trebbio', 'salita_fortezza', 'casa_maestro_bacci', 'campo_giannini', 'area_camper', 'giardini_poste'],
|
||||
bosco: ['bosco_ai_frati', 'sentiero_fortezza', 'viale_cipressi', 'trebbio', 'salita_fortezza', 'casa_maestro_bacci', 'campo_giannini', 'area_camper', 'giardini_poste'],
|
||||
acqua: ['ponte_sieve', 'campomigliaio_ponte', 'verso_luna'],
|
||||
pieve: ['pieve', 'pieve_interno', 'oratorio'],
|
||||
circolo: ['campomigliaio_circolo', 'tennis_chiesa', 'area_feste_festa'],
|
||||
|
||||
@@ -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' },
|
||||
@@ -625,7 +626,7 @@ export const story = {
|
||||
},
|
||||
},
|
||||
{
|
||||
id: 'sentiero_trebbio', name: 'sentiero per il Trebbio', box: [0, 200, 90, 160], at: [20, 330], exit: { scene: 'casa_maestro_bacci', at: [120, 350], face: 'up' },
|
||||
id: 'sentiero_trebbio', name: 'sentiero per il Trebbio', box: [0, 200, 90, 160], at: [20, 330], exit: { scene: 'sentiero_fortezza', at: [325, 190], face: 'down' },
|
||||
},
|
||||
{
|
||||
id: 'verso_villa_adami', name: 'giù per il Poggio, verso Villa Adami', box: [180, 326, 340, 34], at: [330, 352], exit: { scene: 'salita_fortezza', at: [150, 318], face: 'up' },
|
||||
@@ -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' },
|
||||
@@ -1359,7 +1363,7 @@ export const story = {
|
||||
id: 'via_pignone', name: 'a destra, Via del Pignone', box: [440, 196, 100, 56], at: [530, 245], face: 'right', exit: { scene: 'via_pignone', at: [300, 345], face: 'up' },
|
||||
},
|
||||
{
|
||||
id: 'alla_rotonda', name: 'indietro, verso la rotonda della farmacia', box: [0, 334, 640, 26], at: [300, 354], exit: { scene: 'via_provinciale', at: [560, 240], face: 'left' },
|
||||
id: 'alla_rotonda', name: 'indietro, verso la rotonda della farmacia', box: [0, 334, 640, 26], at: [300, 354], exit: { scene: 'via_provinciale', at: [480, 246], face: 'down' },
|
||||
},
|
||||
],
|
||||
},
|
||||
@@ -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, poi a sinistra verso 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, poi a destra verso 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',
|
||||
@@ -2051,6 +2228,37 @@ export const story = {
|
||||
},
|
||||
],
|
||||
},
|
||||
// Il sentiero nel bosco fra la casa del maestro Bacci (alle spalle) e la Fortezza (a diritto): foto di Andrea,
|
||||
// 28 ottobre. La pozza c'è anche a Ferragosto (Andrea).
|
||||
sentiero_fortezza: {
|
||||
name: 'Il sentiero della Fortezza',
|
||||
map: [43, 9],
|
||||
background: 'assets/scenes/sentiero-fortezza.png',
|
||||
walk: [[0, 360], [0, 321], [208, 267], [292, 196], [317, 181], [342, 181], [375, 217], [500, 292], [640, 325], [640, 360]],
|
||||
depth: [[181, 0.3], [360, 1.15]],
|
||||
entry: [320, 350],
|
||||
hotspots: [
|
||||
{
|
||||
id: 'pozza', name: 'pozza', box: [271, 212, 96, 54], at: [250, 285], face: 'right',
|
||||
actions: {
|
||||
look: [{ say: 'La pozza. Anche il quindici d\'agosto è sempre bella piena.' }, { say: 'Un giorno ci casco dentro e ci affogo: il primo annegato in mezzo al bosco.' }],
|
||||
use: [{ say: 'Un bagno nella pozza? No, grazie: non so quanto è fonda, e non lo voglio sapere.' }],
|
||||
},
|
||||
},
|
||||
{
|
||||
id: 'rete', name: 'rete', box: [0, 140, 230, 150], at: [120, 300], face: 'left',
|
||||
actions: {
|
||||
look: [{ say: 'Una rete vecchia, tenuta su coi pali di legno e con la speranza.' }],
|
||||
},
|
||||
},
|
||||
{
|
||||
id: 'alla_fortezza', name: 'a diritto, verso la Fortezza', box: [295, 160, 70, 36], at: [328, 186], exit: { scene: 'fortezza', at: [20, 330], face: 'right' },
|
||||
},
|
||||
{
|
||||
id: 'alla_casa_bacci', name: 'indietro, verso la casa del maestro Bacci', box: [0, 334, 640, 26], at: [320, 354], exit: { scene: 'casa_maestro_bacci', at: [120, 350], face: 'up' },
|
||||
},
|
||||
],
|
||||
},
|
||||
// Fra la Fortezza e i cipressi: la stradina fra le vigne, la casa del maestro Bacci, e lassù il Trebbio.
|
||||
casa_maestro_bacci: {
|
||||
name: 'La casa del maestro Bacci',
|
||||
@@ -2083,7 +2291,7 @@ export const story = {
|
||||
id: 'ai_cipressi', name: 'avanti, verso i cipressi e il Trebbio', box: [120, 150, 56, 30], at: [138, 226], exit: { scene: 'viale_cipressi', at: [300, 350], face: 'up' },
|
||||
},
|
||||
{
|
||||
id: 'alla_fortezza', name: 'indietro, verso la Fortezza', box: [0, 330, 240, 30], at: [120, 354], exit: { scene: 'fortezza', at: [20, 330], face: 'right' },
|
||||
id: 'alla_fortezza', name: 'indietro, verso la Fortezza', box: [0, 330, 240, 30], at: [120, 354], exit: { scene: 'sentiero_fortezza', at: [320, 350], face: 'up' },
|
||||
},
|
||||
],
|
||||
},
|
||||
@@ -2147,7 +2355,7 @@ export const story = {
|
||||
},
|
||||
},
|
||||
{
|
||||
id: 'verso_piazza', name: 'Via de\' Medici, verso la Piazza', box: [20, 215, 50, 40], at: [45, 250], exit: { scene: 'via_de_medici', at: [300, 216], face: 'left' },
|
||||
id: 'verso_piazza', name: 'Via de\' Medici, verso la Piazza', box: [20, 215, 50, 40], at: [45, 250], exit: { scene: 'via_de_medici', at: [300, 216], face: 'down' },
|
||||
},
|
||||
{
|
||||
id: 'verso_pieve', name: 'discesa verso la Pieve', box: [560, 236, 60, 38], at: [600, 266], exit: { scene: 'pieve', at: [600, 350], face: 'left' },
|
||||
@@ -2320,6 +2528,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 +2559,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 +2567,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 +2591,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 +2619,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' },
|
||||
},
|
||||
@@ -2529,7 +2739,7 @@ export const story = {
|
||||
},
|
||||
},
|
||||
{
|
||||
id: 'verso_fortezza', name: 'viale dei cipressi, verso la Fortezza', box: [0, 250, 110, 110], at: [92, 345], exit: { scene: 'viale_cipressi', at: [300, 256], face: 'left' },
|
||||
id: 'verso_fortezza', name: 'viale dei cipressi, verso la Fortezza', box: [0, 250, 110, 110], at: [92, 345], exit: { scene: 'viale_cipressi', at: [300, 256], face: 'down' },
|
||||
},
|
||||
],
|
||||
},
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
// La versione del gioco: la cambia scripts/bump.sh, insieme a package.json.
|
||||
export const VERSION = '0.1.26';
|
||||
export const VERSION = '0.1.29';
|
||||
|
||||
// Immagini, musiche e voci con ?v=<versione>: a ogni versione l'indirizzo cambia e il browser le riscarica,
|
||||
// mentre fra una versione e l'altra le tiene in cache a lungo (nginx.conf).
|
||||
|
||||
@@ -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');
|
||||
|
||||