diff --git a/assets/audio/liscio.mp3 b/assets/audio/liscio.mp3 new file mode 100644 index 0000000..e3f671d Binary files /dev/null and b/assets/audio/liscio.mp3 differ diff --git a/assets/audio/mazurka.mp3 b/assets/audio/mazurka.mp3 new file mode 100644 index 0000000..b784db1 Binary files /dev/null and b/assets/audio/mazurka.mp3 differ diff --git a/docs/STATO.md b/docs/STATO.md index c81bb7d..54ce5ed 100644 --- a/docs/STATO.md +++ b/docs/STATO.md @@ -32,8 +32,8 @@ Online su 50037.manzolo.it tutto fino agli effetti ambientali di Codex. Aperto, Codex, inventati, vestiti come nel video): i volontari della Misericordia alle bruciate («Che Iddio ve ne renda merito!! A voi e agli alpini!»), la fanfara degli alpini, gli alpini della polenta e del vino, la gente coi cartocci (anche nel tendone), le coppie del liscio che girano (`flourish` continuo). - [DA ANDREA] le battute; la musica del liscio (prompt per Suno dato ad Andrea: va in `assets/audio/` e suona vicino - alle coppie, come le console dell'Ingorgo); un minigioco delle bruciate (girare il cilindro sul fuoco). + La musica di Andrea (Suno): il liscio fuori, più forte vicino alle coppie (`stages`), la mazurca nel tendone. + [DA ANDREA] le battute; un minigioco delle bruciate (girare il cilindro sul fuoco). - **Dedica allo zio Mario (31 ottobre)**: nei Ringraziamenti, sotto quella al Lele e più piccola: «Al mio caro zio Mario, che mi ha fatto vivere tante avventure più belle della fantasia.» - **Il Taglia (31 ottobre)**: tolte le battute sulla sua altezza (Baldoria: non gli fa piacere). diff --git a/src/story/story.js b/src/story/story.js index f652587..44eed65 100644 --- a/src/story/story.js +++ b/src/story/story.js @@ -3709,6 +3709,8 @@ export const story = { effects: [{ type: 'fire', area: [206, 219, 36, 8] }, { type: 'smoke', at: [226, 186] }, { type: 'smoke', at: [214, 192] }], // La gente della festa (Andrea, 31 ottobre: «rendiamola bella come allora»): i volontari della Misericordia alle // bruciate, la fanfara degli alpini, gli alpini della polenta e del vino, la gente coi cartocci, il liscio. + // Il liscio di Andrea (Suno, 31 ottobre): più forte vicino alle coppie che ballano, più piano verso il ponte. + stages: [{ music: 'assets/audio/liscio.mp3', at: [430, 300], near: 130, far: 620, floor: 0.35 }], speakers: { volontari: [176, 144], fanfara: [330, 141], cuochi: [474, 148], alpino_vino: [606, 159], gente: [250, 196], liscio: [430, 201] }, people: [ { who: 'volontari', at: [176, 262], size: 1.35, idle: 'stand', talk: ['talk', 'explain'], blink: 'blink', every: 4.4, flourish: { poses: ['work', 'work2'], every: 5, for: 3.6, step: 0.45 } }, @@ -3840,6 +3842,7 @@ export const story = { back: { label: 'Torna al 2007', actions: RITORNO_1993 }, background: 'assets/scenes/smarronata-tendone.png', indoor: true, + music: 'assets/audio/mazurka.mp3', // la mazurca di Andrea (Suno, 31 ottobre), per chi è a tavola speakers: { gente: [470, 176] }, people: [{ who: 'gente', at: [470, 300], idle: 'stand', talk: ['talk', 'talk2'], blink: 'blink', every: 4.1, flourish: { poses: ['toast', 'laugh'], every: 7, for: 1.6, step: 0.8 } }], walk: [[0, 360], [0, 262], [150, 262], [165, 175], [215, 175], [225, 262], [400, 262], [640, 270], [640, 360]], diff --git a/tests/smarronata.browser.mjs b/tests/smarronata.browser.mjs index f30d67b..9d8d05a 100644 --- a/tests/smarronata.browser.mjs +++ b/tests/smarronata.browser.mjs @@ -43,11 +43,13 @@ try { assert.equal(await page.evaluate(() => game.state.scene), 'smarronata_1993'); await page.waitForTimeout(1200); await page.screenshot({ path: `${out}/3-smarronata.png` }); + await page.waitForFunction(() => [...music.tracks.keys()].some(k => k.includes('liscio')), null, { timeout: 8000 }); await page.evaluate(() => game.act('walk', 'tendone')); await run(); assert.equal(await page.evaluate(() => game.state.scene), 'smarronata_tendone'); await page.waitForTimeout(1200); await page.screenshot({ path: `${out}/4-tendone.png` }); + await page.waitForFunction(() => music.current?.src.includes('mazurka'), null, { timeout: 8000 }); // I cartelli della polenta e del vino gratis, ingranditi. await page.evaluate(() => game.act('look', 'cartelli_tendone')); await page.waitForFunction(() => game.closeup?.id === 'cartelli_smarronata' && game.closeup.t > 0.6, null, { timeout: 15000 }); diff --git a/tests/story.test.mjs b/tests/story.test.mjs index 70c2bd9..5a20097 100644 --- a/tests/story.test.mjs +++ b/tests/story.test.mjs @@ -693,7 +693,7 @@ test('i file che il Docker copia sono leggibili da tutti (nginx gira con un altr assert.deepEqual(closed, [], 'file non leggibili da nginx (chmod 644)'); }); -test('la Smarronata del 1993: lo spiazzo sotto il ponte fa comparire la macchina, il viaggio, la festa, il tendone e il ritorno', () => { +test('la Smarronata del 1993: lo spiazzo sotto il ponte fa comparire la macchina, il viaggio, la festa, il tendone e il ritorno', async () => { const g = new Game(story); settle(g); g.go('ponte_sieve', [250, 320]); settle(g); assert.ok(!g.hotspot('macchina_ponte'), 'prima del ricordo la macchina non c\'è'); @@ -711,6 +711,11 @@ test('la Smarronata del 1993: lo spiazzo sotto il ponte fa comparire la macchina for (let i = 0; i < 4000 && (g.closeup || g.queue.length || g.speech); i++) { g.skip(); g.update(0.05); } settle(g); assert.equal(g.state.scene, 'smarronata_1993'); + // La musica: il liscio fuori (più forte vicino alle coppie), la mazurca nel tendone. + const { trackFor } = await import('../src/engine/music.js'); + const fuori = trackFor(story, { screen: 'game', scene: 'smarronata_1993', at: [430, 300], ok: () => true }); + assert.equal(fuori[0].src, 'assets/audio/liscio.mp3'); assert.equal(fuori[0].gain, 1); + assert.equal(trackFor(story, { screen: 'game', scene: 'smarronata_tendone' }), 'assets/audio/mazurka.mp3'); assert.ok(!g.travel('piazza'), 'dal 1993 la mappa non porta via: si torna con la macchina'); g.act('walk', 'tendone'); settle(g); assert.equal(g.state.scene, 'smarronata_tendone');