Lobby: leagues are play buttons w/ arrow; remove background music feature
CI/CD / CI - API (dotnet build + engine sim) (push) Successful in 35s
CI/CD / CI - Web (tsc + next build) (push) Successful in 1m14s
CI/CD / Deploy - local stack (db + server + web) (push) Successful in 58s

- OnlineLobbyScreen: each league row is now a tappable play button (queues a
  ranked match at that league's stake) with a forward arrow; the cheapest
  enterable league is highlighted gold. Drops the redundant separate "ranked
  random" CTA and the select-then-play step.
- Remove the background-music feature entirely: deleted the floating MusicToggle,
  the TopBar music button, and the Profile audio music toggle + style picker.
  sound.startMusic() is now an inert no-op so music never plays (sfx unchanged).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
soroush.asadi
2026-06-11 17:23:26 +03:30
parent deb83cf77c
commit efefbcec3d
5 changed files with 66 additions and 198 deletions
+2 -37
View File
@@ -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) {