Files
leggenda-del-regolo/src/story/ambience.js
T
manzoloandClaude Opus 5.5 fb1568259b Via dell'Antica Posta fra Piazza e Piazzetta, la Piazzetta del Comune e la scalinata; uscite ritoccate (Andrea)
Sfondi di Codex dalle foto di Andrea: Via dell'Antica Posta dalla Piazza, la Piazzetta del Comune (il retro del
municipio con la torre e le sculture), la cima della via sotto il muro di Villa Schifanoia col ponticello, le
panchine e due gatti, e la scalinata col cortile dei garage. Dalla Piazza, a sinistra, si sale in Via dell'Antica
Posta e poi in Piazzetta, che non porta più direttamente in Piazza; dalla Piazzetta (a destra del palazzo) e dalla
curva in cima alla via si scende per la scalinata ai giardini del Comune (lato sinistro). In Piazzetta tutto il lato
sinistro porta in Via de' Medici. Alla rotonda della farmacia l'uscita per la Pieve dove la strada gira dietro il
palazzo e quella per il Comune su tutto l'albero. Il campo del Giannini si collega al ponticino della Carza invece
che all'area camper. Battute provvisorie e voci.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01GiECdCPptNRwbVzjzHbohi
2026-10-28 12:03:05 +01:00

146 lines
8.9 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
// Dettagli ambientali, separati dagli enigmi. Coordinate nello sfondo 640×360.
// Le tre prove (Bosco ai Frati, campeggio, interno Pieve) restano in story.js.
const day = ['pomeriggio', 'tramonto'];
const rect = ([x, y, w, h]) => [[x, y], [x + w, y], [x + w, y + h], [x, y + h]];
const shade = (area, count = 10) => ({ type: 'leafshadow', phase: day, area, count, opacity: 0.55, clip: rect(area) });
const butterfly = (area, offset = 0) => ({ type: 'insect', phase: day, area, every: 34000, duration: 10500, offset });
const curtain = area => ({ type: 'curtain', phase: day, area, clip: rect(area) });
const bird = (area, offset = 0, kind = 'pigeon') => ({ type: 'groundbird', phase: day, area, every: 42000, duration: 17000, offset, kind });
export const ambience = {
piazza: [bird([165, 277, 58, 20], 7000), bird([245, 286, 38, 20], 2000)],
fortezza: [shade([25, 295, 135, 44], 9)],
pieve: [{ type: 'birds', phase: day, area: [195, 16, 95, 30], count: 2, every: 27000, duration: 4300, offset: 9000,
clip: [[160, 0], [268, 0], [268, 66], [160, 66]] }],
oratorio: [bird([366, 139, 28, 12], 11000), shade([430, 278, 150, 45], 8)],
via_de_medici: [{ type: 'cat', phase: day, points: [[264, 250], [399, 255]], every: 57000, duration: 9500, offset: 3000 }],
comune: [shade([20, 268, 240, 70], 16)],
giardini_poste: [butterfly([80, 222, 145, 42], 6000), shade([340, 262, 150, 60], 8)],
via_calimara: [shade([52, 263, 190, 64], 14)],
via_provinciale: [
{ type: 'cloth', pole: 'left', rects: [[168, 198, 55, 5], [230, 201, 49, 5]], amount: 0.8,
clip: [[166, 197], [282, 197], [282, 208], [166, 208]] },
{ type: 'lamps', phase: 'sera', points: [[384, 198]], glow: 7 },
],
area_feste: [butterfly([280, 225, 150, 40], 9000), shade([460, 260, 130, 35], 7)],
ponte_sieve: [shade([20, 280, 175, 55], 11), { type: 'lamps', phase: 'sera', points: [[62, 39], [271, 62], [293, 136], [533, 115]], glow: 12 }],
polisportiva: [shade([220, 280, 135, 55], 10), butterfly([380, 251, 100, 28], 18000)],
polisportiva_principale: [bird([230, 237, 76, 18], 12000, 'blackbird')],
forno: [{ type: 'windowlife', area: [162, 164, 66, 55], every: 47000, duration: 7000, offset: 1000,
clip: [[162, 164], [228, 164], [228, 218], [162, 218]] }],
stazione: [shade([20, 270, 200, 55], 12),
{ type: 'windowlife', area: [353, 219, 15, 20], every: 51000, duration: 6500, offset: 14000,
clip: rect([353, 219, 15, 20]), fill: 'rgba(255,192,105,0.16)' }],
bivio_provinciale: [shade([320, 300, 80, 35], 6), butterfly([335, 232, 105, 30], 20000)],
provinciale_viale: [shade([55, 274, 240, 62], 14)],
verso_luna: [
{ type: 'ripples', area: [375, 287, 225, 42], count: 15, flow: [8, 2],
clip: [[366, 303], [402, 296], [429, 286], [479, 288], [519, 307], [597, 324], [500, 330], [456, 321], [400, 312]] },
{ type: 'ripples', area: [428, 222, 42, 18], count: 4, flow: [2, 2],
clip: [[428, 223], [449, 222], [469, 235], [445, 240]] },
],
campomigliaio_strada: [shade([458, 296, 140, 42], 10)],
campomigliaio_circolo: [{ type: 'drip', at: [379, 232], height: 27, every: 2900 }],
campomigliaio_ponte: [
{ type: 'ripples', area: [157, 209, 180, 87], count: 15, flow: [12, 6],
clip: [[159, 211], [231, 213], [286, 226], [310, 247], [329, 280], [310, 294], [259, 281], [213, 253], [169, 234]] },
{ type: 'ripples', area: [402, 321, 163, 39], count: 9, flow: [12, 4],
clip: [[430, 323], [467, 337], [494, 337], [566, 359], [402, 359], [409, 342]] },
],
tennis_chiesa: [butterfly([410, 294, 120, 32], 4000), shade([490, 305, 140, 36], 8)],
casa_maestro_bacci: [{ type: 'cloudshadow', phase: day, area: [172, 215, 450, 140], offset: 19000,
clip: [[172, 215], [370, 234], [622, 309], [622, 355], [315, 296]] }],
area_feste_festa: [
{ type: 'cloth', pole: 'left', amount: 0.9, rects: [[190, 109, 8, 9], [224, 118, 7, 9], [262, 124, 7, 9], [598, 120, 9, 10], [610, 117, 9, 11]] },
{ type: 'insect', kind: 'moth', phase: 'sera', area: [148, 80, 28, 24], every: 29000, duration: 9000, offset: 4500 },
],
villa_adami: [curtain([300, 120, 12, 26])],
salita_fortezza: [shade([500, 308, 135, 36], 9),
{ type: 'leaves', phase: day, area: [560, 242, 55, 70], count: 1, colors: ['#8a9e48'] }],
salita_villa_adami: [shade([460, 298, 170, 45], 10)],
carza: [shade([55, 275, 210, 60], 12)],
ponticino: [{ type: 'insect', kind: 'dragonfly', phase: day, area: [90, 240, 100, 44], every: 37000, duration: 8500, offset: 7000 }],
area_camper: [shade([30, 242, 200, 65], 14), butterfly([245, 240, 90, 30], 21000)],
campo_giannini: [bird([220, 262, 100, 25], 6000, 'blackbird')],
cardetole: [curtain([450, 121, 10, 18]),
{ type: 'windows', phase: 'sera', rects: [[450, 121, 10, 18], [496, 111, 12, 15], [450, 169, 10, 12]], over: 6500, opacity: 0.5, blend: 'screen' }],
scuola: [shade([191, 260, 130, 47], 9)],
viale_cipressi: [{ type: 'cloudshadow', phase: day, area: [95, 225, 435, 135], offset: 11000,
clip: [[300, 225], [337, 225], [530, 360], [95, 360]] }],
trebbio: [shade([278, 277, 112, 23], 6)],
// Le scene del 27 ottobre (Andrea: «applicale tutte»).
via_pignone: [
{ type: 'clouds', area: [100, 0, 440, 110], count: 3, big: true },
{ type: 'birds', phase: day, area: [200, 20, 300, 80], count: 3, every: 23000, duration: 5000, offset: 6000 },
shade([330, 282, 180, 50], 10),
{ type: 'lamps', phase: 'sera', points: [[250, 74]], glow: 10 },
],
piazzetta: [
shade([30, 290, 300, 60], 14),
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,
clip: [[290, 232], [370, 232], [640, 330], [640, 360], [0, 360], [0, 330]] },
bird([410, 258, 70, 16], 9000),
],
gabbiano: [
{ type: 'clouds', area: [140, 0, 500, 140], count: 3, big: true },
{ type: 'birds', phase: day, area: [200, 40, 400, 100], count: 4, every: 21000, duration: 5500, offset: 3000 },
{ type: 'cloudshadow', phase: day, area: [140, 160, 500, 200], offset: 7000, clip: rect([140, 160, 500, 200]) },
{ type: 'sway', rects: [[430, 128, 70, 60]], amount: 2 },
butterfly([120, 250, 200, 60], 3000),
],
ponticino_mozzete: [
shade([0, 230, 640, 110], 22),
{ type: 'insect', kind: 'dragonfly', phase: day, area: [80, 230, 140, 50], every: 37000, duration: 8500, offset: 7000 },
],
via_cipriani: [
{ type: 'clouds', area: [0, 0, 420, 150], count: 3, big: true },
shade([300, 300, 160, 50], 10),
// Di sera le lampade del cinema e il cartellone del Rattattù illuminato.
{ type: 'lamps', phase: 'sera', points: [[545, 214], [620, 168]], glow: 12 },
{ type: 'lamps', phase: 'sera', points: [[490, 200]], glow: 34 },
],
via_massorondinaio: [
{ type: 'clouds', area: [0, 0, 640, 100], count: 3, big: true },
{ type: 'birds', phase: day, area: [100, 30, 400, 100], count: 3, every: 25000, duration: 5000, offset: 11000 },
{ type: 'sway', rects: [[200, 128, 90, 72]], amount: 2 },
],
coldaia: [
{ type: 'clouds', area: [200, 0, 440, 120], count: 2 },
{ type: 'cloudshadow', phase: day, area: [0, 150, 640, 210], offset: 15000, clip: rect([0, 160, 640, 200]) },
{ type: 'birds', phase: day, area: [250, 20, 350, 90], count: 3, every: 27000, duration: 5500, offset: 2000 },
butterfly([60, 280, 200, 50], 12000),
],
falegnameria_coldaia: [
{ type: 'clouds', area: [0, 0, 640, 110], count: 3, big: true },
{ type: 'dust', phase: day, area: [330, 150, 260, 70], count: 10 },
bird([250, 230, 90, 18], 8000, 'blackbird'),
],
mozzete: [
{ type: 'clouds', area: [100, 0, 540, 110], count: 3, big: true },
shade([0, 215, 230, 60], 12),
{ type: 'cloudshadow', phase: day, area: [60, 220, 520, 140], offset: 23000,
clip: [[0, 215], [400, 195], [640, 260], [640, 360], [0, 360]] },
],
};