feat: hotel radio widget (client-side, multi-station)

Adds a compact collapsible radio widget (top-left) that plays internet
radio streams with the HTML5 Audio API — no server/renderer changes.

- station list loaded from a JSON5 config file (loadGamedata: JSON + JSON5),
  shipped as radio-stations.json5.example so each hotel fills in its own
- shows the selected station + a dropdown (3 visible, scrolls if more) to
  switch; volume slider; animated equalizer + LIVE indicator
- first station autostarts quietly (5%) on load, with a resume-on-first-
  gesture fallback for browser autoplay policy
This commit is contained in:
medievalshell
2026-05-28 10:20:15 +02:00
parent 4833ab8447
commit acb3dd7ef1
7 changed files with 325 additions and 2 deletions
@@ -0,0 +1,19 @@
{
// Hotel radio stations. Copy this file to `radio-stations.json5` (without the
// .example suffix) and add your own stations — each entry is just a streaming
// URL the client plays with the HTML5 Audio API. JSON5: // comments and
// trailing commas are allowed. Add / remove / reorder freely, no rebuild needed.
//
// Fields:
// id - unique key (string)
// name - label shown in the radio widget
// genre - optional subtitle
// url - the audio stream URL (mp3/aac/ogg Icecast or Shoutcast)
// logo - optional image URL shown next to the station
//
// The first station autostarts (quietly) on client load. The list can later
// be moved to the CMS (website_settings) so it's editable from the admin.
stations: [
// { id: 'mystation', name: 'My Station', genre: 'Hotel Radio', url: 'https://your-stream-host/stream' },
],
}
+5 -1
View File
@@ -9,5 +9,9 @@
"soundboard.title": "Soundboard",
"soundboard.empty": "No sounds available",
"soundboard.lastplayed": "Played by %user%",
"soundboard.room.setting.desc": "Let people in this room play sound effects"
"soundboard.room.setting.desc": "Let people in this room play sound effects",
"radio.title": "Radio",
"radio.empty": "No stations",
"radio.error": "Couldn't load stations",
"radio.stop": "Stop"
}
+5 -1
View File
@@ -9,5 +9,9 @@
"soundboard.title": "Soundboard",
"soundboard.empty": "Nessun suono disponibile",
"soundboard.lastplayed": "Suonato da %user%",
"soundboard.room.setting.desc": "Permetti ai presenti di suonare effetti audio in questa stanza"
"soundboard.room.setting.desc": "Permetti ai presenti di suonare effetti audio in questa stanza",
"radio.title": "Radio",
"radio.empty": "Nessuna stazione",
"radio.error": "Impossibile caricare le stazioni",
"radio.stop": "Stop"
}