-
-
- {t("lobby.chooseLeague")}
-
-
- {MATCH_LEAGUES.map((l) => {
- const locked = level < l.minLevel;
- const active = l.id === leagueId;
- return (
-
-
-
-
-
-
-
- {t("lobby.random")}
- {t("lobby.randomDesc")}
-
-
- {entry}
-
-
-
);
}
diff --git a/src/components/screens/ProfileScreen.tsx b/src/components/screens/ProfileScreen.tsx
index dda4ea6..913cf3d 100644
--- a/src/components/screens/ProfileScreen.tsx
+++ b/src/components/screens/ProfileScreen.tsx
@@ -1,7 +1,7 @@
"use client";
import { motion } from "framer-motion";
-import { Check, ChevronLeft, Crown, Eye, EyeOff, Lock, LogOut, Music, Pencil, Star, Upload, Users, Volume2 } from "lucide-react";
+import { Check, ChevronLeft, Crown, Eye, EyeOff, Lock, LogOut, Pencil, Star, Upload, Users, Volume2 } from "lucide-react";
import { useRef, useState } from "react";
import { ScreenHeader, ScreenShell } from "@/components/online/ScreenHeader";
import { RankBadge } from "@/components/online/RankBadge";
@@ -509,34 +509,11 @@ function SocialSettings() {
function SoundSettings() {
const { t } = useI18n();
- const { sfx, music, musicTrack, toggleSfx, toggleMusic, setMusicTrack } = useSoundStore();
- const tracks = [
- { id: "santoor" as const, label: t("settings.trackSantoor") },
- { id: "playful" as const, label: t("settings.trackPlayful") },
- ];
+ const { sfx, toggleSfx } = useSoundStore();
return (
{t("settings.audio")}
} label={t("settings.sound")} on={sfx} onClick={toggleSfx} />
-
} label={t("settings.music")} on={music} onClick={toggleMusic} />
- {/* music style picker */}
-
-
{t("settings.musicStyle")}
-
- {tracks.map((tr) => (
-
- ))}
-
-
);
}
diff --git a/src/lib/sound.ts b/src/lib/sound.ts
index 009f1d0..1d51369 100644
--- a/src/lib/sound.ts
+++ b/src/lib/sound.ts
@@ -210,43 +210,8 @@ class SoundManager {
},
};
- startMusic() {
- if (!this.musicEnabled || this.musicTimer || !this.ctx || !this.musicGain) return;
- const playNote = () => {
- if (!this.ctx || !this.musicGain) return;
- const cfg = this.TRACKS[this.musicTrack];
- const freq = cfg.notes[this.step % cfg.notes.length];
- this.step++;
- const osc = this.ctx.createOscillator();
- const g = this.ctx.createGain();
- const t = this.ctx.currentTime;
- osc.type = cfg.type;
- osc.frequency.value = freq;
- g.gain.setValueAtTime(0.0001, t);
- g.gain.exponentialRampToValueAtTime(cfg.peak, t + cfg.attack);
- g.gain.exponentialRampToValueAtTime(0.0001, t + cfg.dur);
- osc.connect(g);
- g.connect(this.musicGain);
- osc.start(t);
- osc.stop(t + cfg.dur + 0.1);
- // soft fifth harmony (santoor) every other note
- if (cfg.fifth && this.step % 2 === 0) {
- const o2 = this.ctx.createOscillator();
- const g2 = this.ctx.createGain();
- o2.type = "sine";
- o2.frequency.value = freq * 1.5;
- g2.gain.setValueAtTime(0.0001, t);
- g2.gain.exponentialRampToValueAtTime(0.22, t + 0.3);
- g2.gain.exponentialRampToValueAtTime(0.0001, t + 1.4);
- o2.connect(g2);
- g2.connect(this.musicGain);
- o2.start(t);
- o2.stop(t + 1.5);
- }
- };
- playNote();
- this.musicTimer = setInterval(playNote, this.TRACKS[this.musicTrack].gap);
- }
+ /** Background music was removed from the game — these are inert no-ops. */
+ startMusic() {}
stopMusic() {
if (this.musicTimer) {