mirror of
https://github.com/got-feedBack/feedBack.git
synced 2026-09-11 05:54:33 +00:00
Merge remote-tracking branch 'origin/feat/career-plugin' into test/career-mode-combined
This commit is contained in:
@@ -4,9 +4,13 @@
|
|||||||
"version": "0.1.0",
|
"version": "0.1.0",
|
||||||
"bundled": true,
|
"bundled": true,
|
||||||
"private": false,
|
"private": false,
|
||||||
"description": "Career mode — gig your way from a local bar to the arena. Earn stars per song; the crowd reacts to how you play.",
|
"description": "Career mode \u2014 gig your way from a local bar to the arena. Earn stars per song; the crowd reacts to how you play.",
|
||||||
"screen": "screen.html",
|
"screen": "screen.html",
|
||||||
"script": "screen.js",
|
"script": "screen.js",
|
||||||
"styles": "assets/career.css",
|
"styles": "assets/career.css",
|
||||||
"routes": "routes.py"
|
"routes": "routes.py",
|
||||||
|
"settings": {
|
||||||
|
"html": "settings.html",
|
||||||
|
"category": "system"
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -134,9 +134,10 @@ def _validate_pack_dir(pack_dir: Path):
|
|||||||
for name in (manifest.get("stingers") or {}).values():
|
for name in (manifest.get("stingers") or {}).values():
|
||||||
if name and (not PACK_FILENAME_RE.fullmatch(name) or not (pack_dir / name).is_file()):
|
if name and (not PACK_FILENAME_RE.fullmatch(name) or not (pack_dir / name).is_file()):
|
||||||
raise ValueError(f"stinger file '{name}' invalid or missing")
|
raise ValueError(f"stinger file '{name}' invalid or missing")
|
||||||
for name in (manifest.get("intro") or {}).values():
|
for block in ("intro", "sfx"):
|
||||||
|
for name in (manifest.get(block) or {}).values():
|
||||||
if name and (not PACK_FILENAME_RE.fullmatch(name) or not (pack_dir / name).is_file()):
|
if name and (not PACK_FILENAME_RE.fullmatch(name) or not (pack_dir / name).is_file()):
|
||||||
raise ValueError(f"intro file '{name}' invalid or missing")
|
raise ValueError(f"{block} file '{name}' invalid or missing")
|
||||||
|
|
||||||
|
|
||||||
def _download_pack(venue_id, pack, progress):
|
def _download_pack(venue_id, pack, progress):
|
||||||
|
|||||||
@@ -0,0 +1,21 @@
|
|||||||
|
<div class="space-y-3 text-sm">
|
||||||
|
<label class="flex items-center justify-between gap-4">
|
||||||
|
<span>
|
||||||
|
<span class="text-gray-200 font-medium">Crowd sound reactions</span>
|
||||||
|
<span class="block text-xs text-gray-500">Cheers when the crowd's mood rises, boos when it drops. Uses each venue's own recordings.</span>
|
||||||
|
</span>
|
||||||
|
<input type="checkbox" id="career-sfx-toggle" class="accent-cyan-500 w-4 h-4">
|
||||||
|
</label>
|
||||||
|
</div>
|
||||||
|
<script>
|
||||||
|
(function () {
|
||||||
|
'use strict';
|
||||||
|
var KEY = 'feedBack-venue-crowd-sfx';
|
||||||
|
var box = document.getElementById('career-sfx-toggle');
|
||||||
|
if (!box) return;
|
||||||
|
try { box.checked = localStorage.getItem(KEY) === 'on'; } catch (e) { /* ok */ }
|
||||||
|
box.addEventListener('change', function () {
|
||||||
|
try { localStorage.setItem(KEY, box.checked ? 'on' : 'off'); } catch (e) { /* ok */ }
|
||||||
|
});
|
||||||
|
}());
|
||||||
|
</script>
|
||||||
Reference in New Issue
Block a user