Sfondo di Codex dalla foto di Andrea: la strada bianca in salita col muretto, il cartello e lassù i cipressi che spuntano. Alle spalle la casa del maestro Bacci, in fondo il viale dei cipressi, che non sono più collegati direttamente. Battute provvisorie e voci; paesaggio sonoro del bosco. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01GiECdCPptNRwbVzjzHbohi
155 lines
9.3 KiB
JavaScript
155 lines
9.3 KiB
JavaScript
// 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 },
|
||
],
|
||
salita_cipressi: [
|
||
{ type: 'clouds', area: [260, 0, 200, 110], count: 2 },
|
||
{ type: 'sway', rects: [[312, 118, 24, 70]], amount: 1 },
|
||
butterfly([380, 220, 180, 60], 4000),
|
||
],
|
||
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,
|
||
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]] },
|
||
],
|
||
};
|