feat(audio): looping per-season background music system

MusicService (looping audioplayers player, independent of SFX) driven by the
active season theme's new 'bgm' key; switches track on season change, pauses on
app background, all failures swallowed. Separate Music on/off toggle in Settings
(persisted, independent of SFX). Season packs carry bgm keys (menu/season_001/
season_002), manifest regenerated. Assets slot assets/audio/bgm/ ready — drop in
menu.mp3/season_001.mp3/season_002.mp3 (CC0) and it plays; silent until then.
180 tests green, analyze clean.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
2026-06-14 09:31:10 +09:00
parent 2310aabdb9
commit 8947221b27
16 changed files with 227 additions and 8 deletions
+2 -2
View File
@@ -7,13 +7,13 @@
"seasonId": "season_001",
"version": 1,
"packUrl": "seasons/season_001/pack.json",
"sha256": "5b20b88251931838563aaaa7729f48e5a35f09dbf80c576b9bc2ec944050fc0a"
"sha256": "6018fc20187e5835e1a5bc5a3626479dcd448e3a9f35c708b89722587a881468"
},
{
"seasonId": "season_002",
"version": 1,
"packUrl": "seasons/season_002/pack.json",
"sha256": "47cc115f9982ade7df686b28aa95a82edcc1e8a4aae5f13319e7131477855de3"
"sha256": "7be1d0082d9fa81b25938c340801baf9cc0deecdbbd0cdc2d75af443e9fb8552"
}
]
}
+2 -1
View File
@@ -8,7 +8,8 @@
},
"theme": {
"tileSet": "spring",
"background": "background.webp"
"background": "background.webp",
"bgm": "season_001"
},
"stages": [
{
+2 -1
View File
@@ -15,7 +15,8 @@
4280179302
],
"accentColor": 4285517301,
"particleType": "petals"
"particleType": "petals",
"bgm": "season_002"
},
"stages": [
{