Farmer-Header v2 nach Thomas-Feedback + Default-Musikplayer
- Header nach oben RECHTS (raus aus dem Leaflet-Zoom oben links), Geld-Anzeige entfernt (steht in linker Sidebar), Emoji aus Titel, Jahr als Badge in die Pille (Konsistenz mit Batch 1), Inter-Font. - Jahr-Leiste + Anbau-Versuch-Spalte nach unten geschoben (unter Header). - Komponente: wiederverwendbarer Default-Musikplayer (data-ggs-music, Klima-Tracks als Plattform-Standard) + Musik-Widget-Styling fuer Sims ohne design-system.css. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
@@ -87,6 +87,43 @@
|
||||
new MutationObserver(apply).observe(btn, { childList: true, characterData: true, subtree: true });
|
||||
}
|
||||
|
||||
/* Standard-Musikplayer (Klima-Tracks als Plattform-Default) für Sims
|
||||
ohne eigenen Player. Aktiviert per data-ggs-music="default". */
|
||||
// Plattform-Standardmusik (Platzhalter: Klima-Tracks, dort abgelegt)
|
||||
var DEFAULT_TRACKS = [
|
||||
{ label: '🎹 Lounge', file: '/sims/klima/assets/music/piano-lobby.mp3' },
|
||||
{ label: '🌿 Ambient', file: '/sims/klima/assets/music/fingertip-rain.mp3' },
|
||||
{ label: '🌙 Ruhig', file: '/sims/klima/assets/music/limestone-lullaby.mp3' },
|
||||
{ label: '☕ Chill', file: '/sims/klima/assets/music/vibrocoffee-calm.mp3' },
|
||||
{ label: '🎭 Drama', file: '/sims/klima/assets/music/rising-pressure.mp3' }
|
||||
];
|
||||
function buildDefaultMusic() {
|
||||
var wrap = document.createElement('div');
|
||||
wrap.className = 'ggs-music';
|
||||
wrap.id = 'ggs-music';
|
||||
var sel = document.createElement('select');
|
||||
sel.className = 'ggs-music-sel'; sel.id = 'ggs-music-sel'; sel.title = 'Musik wählen';
|
||||
DEFAULT_TRACKS.forEach(function (t) {
|
||||
var o = document.createElement('option'); o.value = t.file; o.textContent = t.label; sel.appendChild(o);
|
||||
});
|
||||
var btn = document.createElement('button');
|
||||
btn.className = 'ggs-music-btn'; btn.id = 'ggs-music-toggle'; btn.type = 'button'; btn.title = 'Play / Pause'; btn.textContent = '▶';
|
||||
var vol = document.createElement('input');
|
||||
vol.type = 'range'; vol.className = 'ggs-music-vol'; vol.id = 'ggs-music-vol';
|
||||
vol.min = 0; vol.max = 100; vol.value = 30; vol.title = 'Lautstärke';
|
||||
wrap.appendChild(sel); wrap.appendChild(btn); wrap.appendChild(vol);
|
||||
|
||||
var audio = new Audio();
|
||||
audio.loop = true; audio.volume = 0.3; audio.src = DEFAULT_TRACKS[0].file;
|
||||
var playing = false;
|
||||
function play() { audio.play().then(function () { playing = true; btn.textContent = '⏸'; btn.classList.add('playing'); }).catch(function () {}); }
|
||||
function pause() { audio.pause(); playing = false; btn.textContent = '▶'; btn.classList.remove('playing'); }
|
||||
btn.addEventListener('click', function (e) { e.stopPropagation(); playing ? pause() : play(); });
|
||||
sel.addEventListener('change', function () { audio.src = sel.value; if (playing) play(); });
|
||||
vol.addEventListener('input', function () { audio.volume = (vol.value || 0) / 100; });
|
||||
return wrap;
|
||||
}
|
||||
|
||||
/* ------------------------------------------------------------ */
|
||||
function enhance(header, opts) {
|
||||
if (!header || header.hasAttribute('data-ggs-enhanced')) return;
|
||||
@@ -212,7 +249,12 @@
|
||||
});
|
||||
}
|
||||
|
||||
/* --- 5) Musik-Panel (nur wenn #ggs-music vorhanden) ------- */
|
||||
/* --- 5) Musik-Panel ---------------------------------------- */
|
||||
// Default-Player erzeugen, falls die Sim keinen eigenen Player hat
|
||||
var musicSpec = opts.music || header.getAttribute('data-ggs-music');
|
||||
if (musicSpec && !q('#ggs-music') && actions) {
|
||||
actions.appendChild(buildDefaultMusic());
|
||||
}
|
||||
var music = q('#ggs-music');
|
||||
var musicWrap = null;
|
||||
if (music) {
|
||||
|
||||
Reference in New Issue
Block a user