Il paese si allarga: Via Calimara, Via Provinciale, ponte sulla Sieve, polisportiva, area feste, Comune, giardini, Cardetole

Sfondi di Codex dalle foto di Andrea del 23 ottobre, collegati come il paese vero:
- Piazza → Via Calimara → rotonda di Via Provinciale (River e farmacia) → Pieve; dalla rotonda, a sinistra
  l'area feste, a diritto il ponte sulla Sieve, il campo principale e il secondario (padel e tennis).
- Il Comune con l'asilo Antonio Frilli (dalla Piazza o di fronte alla farmacia) e, giù, i giardini delle poste.
- Dalla Pieve verso casa: il posticino della Carza, il ponticino, l'area camper col campo del Giannini, Cardetole.
Battute e voci per ogni posto; la stazione è pronta come sfondo, da collegare col forno.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_017egeN2amL84ErjfgQFtEDn
This commit is contained in:
2026-10-23 19:18:50 +02:00
co-authored by Claude Opus 5.5
parent ee35b7e84c
commit 043a5abdcb
65 changed files with 606 additions and 11 deletions
+417 -3
View File
@@ -146,6 +146,12 @@ export const story = {
{
id: 'verso_villa_adami', name: 'Via de\' Medici, verso Villa Adami', box: [0, 196, 90, 50], at: [92, 250], exit: { scene: 'via_de_medici', at: [300, 348], face: 'up' },
},
{
id: 'verso_comune', name: 'a sinistra, verso il Comune', box: [96, 196, 50, 54], at: [120, 252], exit: { scene: 'comune', at: [20, 300], face: 'right' },
},
{
id: 'verso_calimara', name: 'Via Calimara, verso la farmacia', box: [180, 334, 380, 26], at: [360, 354], exit: { scene: 'via_calimara', at: [300, 350], face: 'up' },
},
{
id: 'verso_pieve', name: 'verso la Pieve', box: [612, 292, 28, 68], at: [628, 330], exit: { scene: 'pieve', at: [30, 320], face: 'right' },
},
@@ -265,13 +271,14 @@ export const story = {
id: 'oratorio', name: 'porta dell\'oratorio', box: [452, 180, 42, 56], at: [473, 240], face: 'up', when: 'oratorio_aperto', exit: { scene: 'oratorio', at: [320, 345], face: 'right' },
},
{
// Per ora solo una battuta: la scena di Cardetole arriverà con le foto di Andrea.
id: 'verso_cardetole', name: 'strada per Cardetole', box: [0, 204, 82, 54], at: [95, 250], face: 'left', default: 'walk',
id: 'verso_cardetole', name: 'strada per Cardetole', box: [0, 204, 82, 54], at: [95, 250], face: 'left', exit: { scene: 'carza', at: [300, 350], face: 'up' },
actions: {
walk: [{ say: 'Di là si scende a Cardetole, a casa mia.' }, { say: 'Ma se torno a casa ora, mi mettono ad apparecchiare. Prima il palio.' }],
look: [{ say: 'La strada che scende a Cardetole, il rione dei verdi.' }],
},
},
{
id: 'verso_provinciale', name: 'Via Provinciale, verso il River', box: [30, 330, 200, 30], at: [130, 350], exit: { scene: 'via_provinciale', at: [100, 350], face: 'up' },
},
{
id: 'verso_piazza', name: 'verso la Piazza', box: [0, 262, 26, 98], at: [8, 320], exit: { scene: 'piazza', at: [610, 320], face: 'left' },
},
@@ -420,6 +427,267 @@ export const story = {
},
],
},
// Il Comune e l'asilo infantile Antonio Frilli: dalla Piazza (a sinistra, prima di Via de' Medici) o dalla
// strada di fronte alla farmacia; da qui si scende ai giardini delle poste.
comune: {
name: 'Il Comune',
map: [6, 62],
background: 'assets/scenes/comune-asilo.png',
walk: [[0, 360], [0, 262], [200, 256], [330, 250], [420, 268], [440, 305], [640, 330], [640, 360]],
depth: [[250, 0.5], [360, 1.15]],
entry: [320, 350],
hotspots: [
{
id: 'torre', name: 'torre dell\'orologio', box: [200, 26, 40, 70], at: [250, 262], face: 'up',
actions: {
look: [{ say: 'La torre dell\'orologio del Comune. Va sempre giusto, tranne quando serve.' }],
},
},
{
id: 'palazzo', name: 'Comune', box: [170, 96, 120, 150], at: [250, 262], face: 'up',
actions: {
look: [{ say: 'Il Comune di San Piero. Qui si fanno i timbri, i permessi e, a quanto pare, anche il Palio.' }],
open: [{ say: 'Senza un modulo in carta bollata non mi fanno entrare neanche a chiedere l\'ora.' }],
},
},
{
id: 'asilo', name: 'asilo Antonio Frilli', box: [300, 140, 150, 90], at: [380, 268], face: 'up',
actions: {
look: [{ say: 'L\'asilo infantile Antonio Frilli. Ci sono passato anch\'io, coi grembiulini a quadretti.' }],
open: [{ say: 'All\'asilo? Ho già dato, grazie.' }],
},
},
{
id: 'alla_piazza', name: 'su, verso la Piazza', box: [0, 250, 40, 110], at: [14, 300], exit: { scene: 'piazza', at: [120, 252], face: 'right' },
},
{
id: 'ai_giardini', name: 'giù, verso i giardini', box: [596, 300, 44, 60], at: [620, 345], exit: { scene: 'giardini_poste', at: [580, 340], face: 'left' },
},
{
id: 'alla_farmacia', name: 'giù, verso la farmacia', box: [60, 334, 520, 26], at: [320, 354], exit: { scene: 'via_provinciale', at: [320, 345], face: 'up' },
},
],
},
// I giardini delle poste: giù dal Comune; in fondo, le poste.
giardini_poste: {
name: 'Giardini delle poste',
map: [6, 78],
background: 'assets/scenes/giardini-poste.png',
walk: [[0, 360], [0, 232], [640, 232], [640, 360]],
depth: [[232, 0.55], [360, 1.15]],
entry: [580, 340],
hotspots: [
{
id: 'giochi', name: 'giochi', box: [196, 120, 330, 100], at: [360, 250], face: 'up',
actions: {
look: [{ say: 'Lo scivolo e le altalene. Sono troppo grande, ufficialmente. Ufficiosamente, un giro ci starebbe.' }],
use: [{ say: 'Un giro sull\'altalena! ... No, c\'è troppa gente che mi conosce.' }],
},
},
{
id: 'panchina', name: 'panchina rossa', box: [56, 164, 56, 22], at: [90, 240], face: 'up',
actions: {
look: [{ say: 'La panchina rossa. Qui si scambiavano le figurine: celo, celo, manca.' }],
},
},
{
id: 'poste', name: 'le poste', box: [0, 100, 110, 50], at: [60, 240], face: 'up',
actions: {
look: [{ say: 'Laggiù le poste. Mia nonna ci andava a ritirare la pensione e tornava con tutte le notizie del paese.' }],
},
},
{
id: 'al_comune', name: 'su, verso il Comune', box: [500, 300, 140, 60], at: [600, 340], exit: { scene: 'comune', at: [600, 345], face: 'left' },
},
],
},
// Via Calimara: dalla Piazza scende alla farmacia, in Via Provinciale.
via_calimara: {
name: 'Via Calimara',
map: [26, 80],
background: 'assets/scenes/via-calimara.png',
walk: [[0, 360], [0, 318], [330, 206], [400, 206], [560, 300], [600, 360]],
depth: [[206, 0.3], [360, 1.15]],
entry: [300, 350],
hotspots: [
{
id: 'giardino', name: 'giardino', box: [0, 110, 330, 120], at: [160, 290], face: 'left',
actions: {
look: [{ say: 'Il giardino coi cedri e le panchine. All\'ombra, d\'estate, ci si fa la siesta a turno.' }],
},
},
{
id: 'vetrina', name: 'vetrina', box: [570, 110, 70, 150], at: [540, 300], face: 'right',
actions: {
look: [{ say: 'Una vetrina vuota. Ci vedo solo il mio riflesso, e ha l\'aria di uno che cerca un palio.' }],
},
},
{
id: 'alla_provinciale', name: 'giù, verso la farmacia', box: [330, 176, 90, 40], at: [365, 210], exit: { scene: 'via_provinciale', at: [540, 345], face: 'up' },
},
{
id: 'alla_piazza', name: 'su, verso la Piazza', box: [0, 330, 640, 30], at: [300, 354], exit: { scene: 'piazza', at: [360, 350], face: 'up' },
},
],
},
// Via Provinciale alla rotonda: il River e la farmacia. Andando avanti, la Pieve.
via_provinciale: {
name: 'Via Provinciale',
map: [36, 84],
background: 'assets/scenes/via-provinciale.png',
walk: [[0, 360], [0, 312], [300, 302], [440, 262], [470, 238], [640, 238], [640, 360]],
depth: [[238, 0.45], [360, 1.15]],
entry: [140, 340],
hotspots: [
{
id: 'river', name: 'il River', box: [60, 128, 190, 110], at: [160, 320], face: 'up',
actions: {
look: [{ say: 'Il River, il bar della rotonda. Fuori gli ombrelloni, dentro i flipper e le figurine.' }],
open: [{ say: 'Un ghiacciolo ci starebbe. Ma prima il palio, poi i ghiaccioli.' }],
},
},
{
id: 'farmacia', name: 'farmacia', box: [356, 176, 50, 60], at: [380, 290], face: 'up',
actions: {
look: [{ say: 'La farmacia, con la croce verde. Mia nonna ci veniva per le pasticche e per le chiacchiere. Più per le chiacchiere.' }],
open: [{ say: 'Non mi fa male niente. Per ora.' }],
},
},
{
id: 'area_feste', name: 'a sinistra, l\'area feste', box: [0, 250, 60, 110], at: [12, 330], exit: { scene: 'area_feste', at: [300, 350], face: 'up' },
},
{
id: 'al_ponte', name: 'a diritto, verso il campo sportivo', box: [560, 222, 80, 46], at: [600, 248], exit: { scene: 'ponte_sieve', at: [300, 350], face: 'up' },
},
{
id: 'alla_pieve', name: 'verso la Pieve', box: [0, 330, 213, 30], at: [100, 352], exit: { scene: 'pieve', at: [130, 345], face: 'right' },
},
{
id: 'al_comune', name: 'di fronte alla farmacia, verso il Comune', box: [213, 330, 214, 30], at: [320, 352], exit: { scene: 'comune', at: [320, 350], face: 'up' },
},
{
id: 'alla_calimara', name: 'Via Calimara, verso la Piazza', box: [427, 330, 213, 30], at: [540, 352], exit: { scene: 'via_calimara', at: [365, 210], face: 'down' },
},
],
},
// L'area feste (il parco Antonio Berti): dalla rotonda del River, a sinistra.
area_feste: {
name: 'Area feste',
map: [40, 99],
background: 'assets/scenes/area-feste.png',
walk: [[0, 360], [0, 250], [260, 190], [420, 190], [640, 240], [640, 360]],
depth: [[190, 0.35], [360, 1.15]],
entry: [300, 350],
hotspots: [
{
id: 'prato', name: 'prato della festa', box: [120, 190, 520, 80], at: [320, 270], face: 'up',
actions: {
look: [{ say: 'L\'area feste. D\'estate ci montano la pista da ballo, le tavolate e lo stand della pasta.' }, { say: 'Adesso c\'è solo l\'erba. E la fame che mi viene a pensarci.' }],
},
},
{
id: 'casetta', name: 'casetta', box: [170, 146, 26, 22], at: [250, 200], face: 'up',
actions: {
look: [{ say: 'Una casetta chiusa. Ci tengono le prolunghe della festa e, dicono, un mistero.' }],
open: [{ say: 'Chiusa. Il mistero resta.' }],
},
},
{
id: 'alla_rotonda', name: 'indietro, verso la rotonda', box: [0, 330, 640, 30], at: [300, 354], exit: { scene: 'via_provinciale', at: [12, 330], face: 'right' },
},
],
},
// Il ponte sulla Sieve, proseguendo la Provinciale dalla farmacia; di là dal ponte, la polisportiva.
ponte_sieve: {
name: 'Ponte sulla Sieve',
map: [30, 94],
background: 'assets/scenes/ponte-sieve.png',
walk: [[0, 360], [0, 252], [180, 226], [300, 202], [342, 202], [380, 214], [330, 238], [330, 300], [460, 330], [640, 318], [640, 360]],
depth: [[202, 0.4], [360, 1.15]],
entry: [300, 350],
hotspots: [
{
id: 'edicola', name: 'edicola', box: [138, 148, 36, 60], at: [180, 236], face: 'up',
actions: {
look: [{ say: 'Il tabernacolo prima del ponte. Chi passa per andare via dal paese, un saluto glielo fa sempre.' }],
},
},
{
id: 'sieve', name: 'la Sieve', box: [380, 170, 260, 40], at: [340, 210], face: 'right',
actions: {
look: [{ say: 'Sotto il ponte la Sieve. Nel 1758 la piena arrivò fino a Cardetole: in casa mia, di sicuro, c\'erano i pesci.' }],
},
},
{
id: 'alla_polisportiva', name: 'di là dal ponte, il campo sportivo', box: [250, 180, 110, 36], at: [320, 206], exit: { scene: 'polisportiva_principale', at: [40, 330], face: 'right' },
},
{
id: 'alla_provinciale', name: 'indietro, verso la farmacia', box: [0, 330, 640, 30], at: [300, 354], exit: { scene: 'via_provinciale', at: [600, 248], face: 'left' },
},
],
},
// La polisportiva: passato il ponte, prima il campo principale con la tribuna; proseguendo il secondario, coi campi da padel e tennis.
polisportiva: {
name: 'Polisportiva',
map: [12, 99],
background: 'assets/scenes/polisportiva-secondario.png',
walk: [[0, 360], [0, 330], [300, 262], [430, 222], [600, 210], [640, 212], [640, 360]],
depth: [[210, 0.4], [360, 1.15]],
entry: [100, 340],
hotspots: [
{
id: 'campo', name: 'campo secondario', box: [140, 160, 240, 60], at: [330, 254], face: 'up',
actions: {
look: [{ say: 'Il campo secondario della polisportiva. Qui si allenano i piccoli, e i grandi fanno finta di non guardare.' }],
},
},
{
id: 'cupola', name: 'pallone bianco', box: [320, 140, 70, 40], at: [430, 226], face: 'up',
actions: {
look: [{ say: 'Il pallone bianco della palestra. Da fuori sembra un gigantesco marshmallow.' }],
},
},
{
id: 'padel', name: 'campi da padel e da tennis', box: [520, 190, 120, 40], at: [600, 214], face: 'right', default: 'walk',
actions: {
walk: [{ say: 'Più avanti ci sono i campi da tennis e da padel.' }, { say: 'Il padel, nel 2007, non sapevo nemmeno cosa fosse. Lo scopriranno i miei genitori, tra qualche anno.' }],
look: [{ say: 'Laggiù i campi da tennis e da padel. Racchette, palline e gente che si lamenta del sole.' }],
},
},
{
id: 'al_principale', name: 'indietro, verso il campo principale', box: [0, 330, 640, 30], at: [100, 354], exit: { scene: 'polisportiva_principale', at: [620, 330], face: 'left' },
},
],
},
polisportiva_principale: {
name: 'Campo principale',
map: [22, 99],
background: 'assets/scenes/polisportiva-principale.png',
walk: [[0, 298], [640, 298], [640, 360], [0, 360]],
depth: [[298, 1.0], [360, 1.2]],
entry: [40, 330],
hotspots: [
{
id: 'tribuna', name: 'tribuna', box: [254, 172, 116, 40], at: [310, 320], face: 'up',
actions: {
look: [{ say: 'La tribuna bianca e rossa. La domenica qui c\'è più tifo che al Palio. Quasi.' }],
},
},
{
id: 'campo', name: 'campo', box: [0, 212, 640, 76], at: [320, 320], face: 'up',
actions: {
look: [{ say: 'Il campo principale. Erba vera, righe vere, porte vere. Altro che le maglie per terra.' }],
walk: [{ say: 'Entrare in campo senza permesso? Il custode mi fa fare dieci giri di corsa.' }],
},
},
{
id: 'al_ponte', name: 'indietro, verso il ponte', box: [0, 280, 50, 80], at: [14, 330], exit: { scene: 'ponte_sieve', at: [320, 206], face: 'down' },
},
{
id: 'al_secondario', name: 'avanti, verso il campo secondario', box: [590, 280, 50, 80], at: [626, 330], exit: { scene: 'polisportiva', at: [100, 340], face: 'up' },
},
],
},
// Livello 1: Villa Adami, vista dalla salita della Fortezza guardando in discesa.
villa_adami: {
name: 'Villa Adami',
@@ -479,6 +747,152 @@ export const story = {
},
],
},
// La strada da Pieve a Cardetole: il posticino della Carza, il ponticino, l'area camper.
carza: {
name: 'Il posticino della Carza',
map: [54, 80],
background: 'assets/scenes/carza.png',
walk: [[60, 360], [250, 262], [300, 218], [350, 218], [420, 262], [600, 360]],
depth: [[218, 0.4], [360, 1.15]],
entry: [300, 350],
hotspots: [
{
id: 'muro', name: 'muro di sassi', box: [0, 120, 200, 140], at: [190, 300], face: 'left',
actions: {
look: [{ say: 'Il muro vecchio di sassi, mezzo coperto dai rampicanti. Qui ci si nascondeva a nascondino.' }],
},
},
{
id: 'cancello', name: 'cancello verde', box: [460, 150, 46, 132], at: [440, 290], face: 'right',
actions: {
look: [{ say: 'Un cancello verde, sempre aperto. Non ho mai capito cosa chiude.' }],
open: [{ say: 'È già aperto. Più aperto di così non si può.' }],
},
},
{
id: 'al_ponticino', name: 'il ponticino sulla Carza', box: [270, 180, 110, 50], at: [325, 222], exit: { scene: 'ponticino', at: [400, 350], face: 'up' },
},
{
id: 'alla_pieve', name: 'su verso la Pieve', box: [0, 330, 640, 30], at: [300, 354], exit: { scene: 'pieve', at: [95, 250], face: 'right' },
},
],
},
ponticino: {
name: 'Il ponticino sulla Carza',
map: [62, 86],
background: 'assets/scenes/ponticino-carza.png',
walk: [[250, 360], [438, 198], [478, 198], [560, 360]],
depth: [[198, 0.3], [360, 1.15]],
entry: [320, 350],
hotspots: [
{
id: 'torrente', name: 'la Carza', box: [0, 230, 230, 130], at: [300, 330], face: 'left',
actions: {
look: [{ say: 'La Carza. A maggio c\'è poca acqua: d\'estate si scendeva a fare le dighe coi sassi.' }],
use: [{ say: 'Fare i ponti di sassi? Prima il palio. Poi le dighe.' }],
},
},
{
id: 'edicola', name: 'edicola della Madonna', box: [442, 148, 36, 44], at: [458, 204], face: 'up',
actions: {
look: [{ say: 'La piccola edicola in fondo al ponticino. C\'è sempre un fiore fresco, ma nessuno l\'ha mai visto metterlo.' }],
},
},
{
id: 'all_area_camper', name: 'di là, verso l\'area camper', box: [420, 186, 76, 30], at: [458, 202], exit: { scene: 'area_camper', at: [600, 330], face: 'left' },
},
{
id: 'alla_carza', name: 'indietro, verso la Pieve', box: [0, 330, 640, 30], at: [400, 354], exit: { scene: 'carza', at: [325, 222], face: 'down' },
},
],
},
area_camper: {
name: 'Area camper',
map: [70, 92],
background: 'assets/scenes/area-camper.png',
walk: [[0, 360], [0, 260], [200, 232], [380, 240], [450, 248], [640, 300], [640, 360]],
depth: [[232, 0.5], [360, 1.15]],
entry: [600, 330],
hotspots: [
{
id: 'panchina', name: 'panchina', box: [156, 190, 36, 20], at: [190, 242], face: 'up',
actions: {
look: [{ say: 'La panchina del parco. Ci si sedevano i camperisti a guardare le montagne, con la cartina al contrario.' }],
},
},
{
id: 'villette', name: 'villette', box: [500, 80, 140, 120], at: [560, 280], face: 'right',
actions: {
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' },
},
{
id: 'al_ponticino', name: 'indietro, il ponticino', box: [560, 300, 80, 60], at: [620, 330], exit: { scene: 'ponticino', at: [458, 202], face: 'down' },
},
],
},
// Il prato del parco dei camper visto dall'altra parte: per i ragazzi, «il campo del Giannini».
campo_giannini: {
name: 'Il campo del Giannini',
map: [66, 98],
background: 'assets/scenes/campo-giannini.png',
walk: [[0, 360], [0, 214], [300, 208], [460, 210], [640, 220], [640, 360]],
depth: [[208, 0.4], [360, 1.15]],
entry: [320, 350],
hotspots: [
{
id: 'porte', name: 'porte', box: [300, 180, 120, 30], at: [360, 216], face: 'up',
actions: {
look: [{ say: 'Il campo del Giannini. Qui si giocava a calcio fino a buio, con le porte grandi: roba da campionato.' }],
use: [{ say: 'Senza pallone, e senza la squadra, non vale.' }],
},
},
{
id: 'giochi', name: 'giochi dei bambini', box: [220, 170, 80, 40], at: [260, 216], face: 'up',
actions: {
look: [{ say: 'Gli scivoli dei bambini. Una volta il pallone finiva lì una volta su tre.' }],
},
},
{
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' },
},
],
},
// Cardetole, il rione dei verdi, dove abita Andrea: giù dalla Pieve.
cardetole: {
name: 'Cardetole',
map: [78, 96],
background: 'assets/scenes/cardetole.png',
walk: [[0, 360], [0, 344], [120, 332], [200, 304], [262, 292], [330, 292], [372, 296], [640, 266], [640, 360]],
depth: [[266, 0.55], [360, 1.15]],
entry: [300, 350],
hotspots: [
{
id: 'casa', name: 'casa di Andrea', box: [330, 20, 220, 212], at: [470, 290], face: 'up',
actions: {
look: [{ say: 'Casa mia. Terzo piano, quello con la tapparella a metà: è la mia camera.' }],
open: [{ say: 'Se salgo, mi mettono ad apparecchiare. Prima il palio.' }],
walk: [{ say: 'Se salgo, mi mettono ad apparecchiare. Prima il palio.' }],
},
},
{
id: 'platano', name: 'platano', box: [90, 0, 170, 216], at: [200, 306], face: 'up',
actions: {
look: [{ say: 'Il prato sotto casa. Qui le porte le facevamo con le maglie per terra: due maglie, un palo ciascuna.' }, { say: 'E ogni gol era «Era fuori!», «No, era dentro!».' }],
use: [{ say: 'Arrampicarmi? Mia mamma mi vede dalla finestra.' }],
},
},
{
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' },
},
],
},
// L'ingresso della scuola, giù per la strada dalla salita di Villa Adami: dal cancello alle porte a vetri.
scuola: {
name: 'La scuola',