Forno, stazione e chiesa; uscite della rotonda e di Via Calimara come il paese vero; mappa ordinata

- Dalla Pieve a destra il forno e, a sinistra, la stazione; dal portone centrale si entra nella Pieve
  (foto di Mariano Mirannalti, nei crediti alla voce «Fotografie»).
- Via Calimara: in fondo la Piazza, verso chi guarda la farmacia. Rotonda del River: a sinistra il campo
  sportivo, in basso l'area feste, dietro la farmacia la Pieve, a destra il Comune, in basso a destra Calimara.
- Polisportiva: dal ponte prima il campo principale, poi il secondario col padel; dietro, l'area feste.
- Andrea ha 27 anni nel 2007: battute, documento e CLAUDE.md corretti.
- Mappa su una griglia ordinata, senza etichette sovrapposte.
- Doppio clic: Andrea va al doppio della velocità. In pausa la musica sfuma e si ferma; dopo un minuto
  senza toccare niente il gioco va in pausa da solo.
- Crediti: scorre solo l'elenco, dedica e Chiudi sempre in vista.

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 20:00:28 +02:00
co-authored by Claude Opus 5.5
parent 043a5abdcb
commit 2d682d8ae9
53 changed files with 341 additions and 93 deletions
+16
View File
@@ -42,3 +42,19 @@ test('mentre parla qualcuno la musica si abbassa, poi risale', () => {
for (let i = 0; i < 40; i++) m.update('g.mp3', 0.1);
assert.equal(m.current.audio.volume, 0.6);
});
test('in pausa la musica sfuma fino a zero e si ferma', () => {
const played = [], paused = [];
globalThis.Audio = class { constructor(src) { this.src = src; this.volume = 0; this.paused = true; }
play() { this.paused = false; played.push(this.src); return Promise.resolve(); } pause() { this.paused = true; paused.push(this.src); } };
const m = new Music({ volume: 0.5 });
for (let i = 0; i < 40; i++) m.update('a.mp3', 0.1);
assert.equal(m.current.audio.volume, 0.5);
m.hold = true;
for (let i = 0; i < 40; i++) m.update('a.mp3', 0.1);
assert.ok(m.current.audio.paused && m.current.audio.volume === 0, 'ferma a volume zero');
m.hold = false;
m.update('a.mp3', 0.1);
assert.ok(!m.current.audio.paused && played.length === 2, 'riprende lo stesso brano');
delete globalThis.Audio;
});