diff --git a/public/oops/sounds.html b/public/oops/sounds.html index 1492ee536148..8de581794596 100644 --- a/public/oops/sounds.html +++ b/public/oops/sounds.html @@ -78,6 +78,7 @@

Sound Test Page

'draw', 'berserk', 'check', + 'checkmate', 'newChallenge', 'newPM', 'confirmation', diff --git a/public/sound/futuristic/Checkmate.mp3 b/public/sound/futuristic/Checkmate.mp3 new file mode 120000 index 000000000000..5d03cc53ce2d --- /dev/null +++ b/public/sound/futuristic/Checkmate.mp3 @@ -0,0 +1 @@ +Check.mp3 \ No newline at end of file diff --git a/public/sound/futuristic/Checkmate.ogg b/public/sound/futuristic/Checkmate.ogg new file mode 120000 index 000000000000..80b2f6e44fb8 --- /dev/null +++ b/public/sound/futuristic/Checkmate.ogg @@ -0,0 +1 @@ +Check.ogg \ No newline at end of file diff --git a/public/sound/instrument/Checkmate.mp3 b/public/sound/instrument/Checkmate.mp3 new file mode 120000 index 000000000000..5d03cc53ce2d --- /dev/null +++ b/public/sound/instrument/Checkmate.mp3 @@ -0,0 +1 @@ +Check.mp3 \ No newline at end of file diff --git a/public/sound/instrument/Checkmate.ogg b/public/sound/instrument/Checkmate.ogg new file mode 120000 index 000000000000..80b2f6e44fb8 --- /dev/null +++ b/public/sound/instrument/Checkmate.ogg @@ -0,0 +1 @@ +Check.ogg \ No newline at end of file diff --git a/public/sound/lisp/Checkmate.mp3 b/public/sound/lisp/Checkmate.mp3 new file mode 120000 index 000000000000..5d03cc53ce2d --- /dev/null +++ b/public/sound/lisp/Checkmate.mp3 @@ -0,0 +1 @@ +Check.mp3 \ No newline at end of file diff --git a/public/sound/lisp/Checkmate.ogg b/public/sound/lisp/Checkmate.ogg new file mode 120000 index 000000000000..80b2f6e44fb8 --- /dev/null +++ b/public/sound/lisp/Checkmate.ogg @@ -0,0 +1 @@ +Check.ogg \ No newline at end of file diff --git a/public/sound/nes/Checkmate.mp3 b/public/sound/nes/Checkmate.mp3 new file mode 120000 index 000000000000..5d03cc53ce2d --- /dev/null +++ b/public/sound/nes/Checkmate.mp3 @@ -0,0 +1 @@ +Check.mp3 \ No newline at end of file diff --git a/public/sound/nes/Checkmate.ogg b/public/sound/nes/Checkmate.ogg new file mode 120000 index 000000000000..80b2f6e44fb8 --- /dev/null +++ b/public/sound/nes/Checkmate.ogg @@ -0,0 +1 @@ +Check.ogg \ No newline at end of file diff --git a/public/sound/piano/Checkmate.mp3 b/public/sound/piano/Checkmate.mp3 new file mode 120000 index 000000000000..5d03cc53ce2d --- /dev/null +++ b/public/sound/piano/Checkmate.mp3 @@ -0,0 +1 @@ +Check.mp3 \ No newline at end of file diff --git a/public/sound/piano/Checkmate.ogg b/public/sound/piano/Checkmate.ogg new file mode 120000 index 000000000000..80b2f6e44fb8 --- /dev/null +++ b/public/sound/piano/Checkmate.ogg @@ -0,0 +1 @@ +Check.ogg \ No newline at end of file diff --git a/public/sound/robot/Checkmate.mp3 b/public/sound/robot/Checkmate.mp3 new file mode 100644 index 000000000000..2f866f9e89ba Binary files /dev/null and b/public/sound/robot/Checkmate.mp3 differ diff --git a/public/sound/robot/Checkmate.ogg b/public/sound/robot/Checkmate.ogg new file mode 100644 index 000000000000..b354eb2c9d57 Binary files /dev/null and b/public/sound/robot/Checkmate.ogg differ diff --git a/public/sound/sfx/Checkmate.mp3 b/public/sound/sfx/Checkmate.mp3 new file mode 120000 index 000000000000..5d03cc53ce2d --- /dev/null +++ b/public/sound/sfx/Checkmate.mp3 @@ -0,0 +1 @@ +Check.mp3 \ No newline at end of file diff --git a/public/sound/sfx/Checkmate.ogg b/public/sound/sfx/Checkmate.ogg new file mode 120000 index 000000000000..80b2f6e44fb8 --- /dev/null +++ b/public/sound/sfx/Checkmate.ogg @@ -0,0 +1 @@ +Check.ogg \ No newline at end of file diff --git a/public/sound/standard/Checkmate.mp3 b/public/sound/standard/Checkmate.mp3 new file mode 120000 index 000000000000..5d03cc53ce2d --- /dev/null +++ b/public/sound/standard/Checkmate.mp3 @@ -0,0 +1 @@ +Check.mp3 \ No newline at end of file diff --git a/public/sound/standard/Checkmate.ogg b/public/sound/standard/Checkmate.ogg new file mode 120000 index 000000000000..80b2f6e44fb8 --- /dev/null +++ b/public/sound/standard/Checkmate.ogg @@ -0,0 +1 @@ +Check.ogg \ No newline at end of file diff --git a/public/sound/woodland/Checkmate.mp3 b/public/sound/woodland/Checkmate.mp3 new file mode 120000 index 000000000000..5d03cc53ce2d --- /dev/null +++ b/public/sound/woodland/Checkmate.mp3 @@ -0,0 +1 @@ +Check.mp3 \ No newline at end of file diff --git a/public/sound/woodland/Checkmate.ogg b/public/sound/woodland/Checkmate.ogg new file mode 120000 index 000000000000..80b2f6e44fb8 --- /dev/null +++ b/public/sound/woodland/Checkmate.ogg @@ -0,0 +1 @@ +Check.ogg \ No newline at end of file diff --git a/ui/round/src/ctrl.ts b/ui/round/src/ctrl.ts index 051066ffa7d1..d4487843f988 100644 --- a/ui/round/src/ctrl.ts +++ b/ui/round/src/ctrl.ts @@ -442,7 +442,11 @@ export default class RoundController implements MoveRootCtrl { }, check: !!o.check, }); - if (o.check) site.sound.play('check', o.volume); + if (o.status?.name === 'mate') { + site.sound.play('checkmate', o.volume); + } else if (o.check) { + site.sound.play('check', o.volume); + } blur.onMove(); pubsub.emit('ply', this.ply); } diff --git a/ui/site/src/sound.ts b/ui/site/src/sound.ts index 14f57dcae6a6..adcb02135de6 100644 --- a/ui/site/src/sound.ts +++ b/ui/site/src/sound.ts @@ -51,7 +51,7 @@ export default new (class implements SoundI { if (!this.enabled()) return; let dir = this.theme; if (this.theme === 'music' || this.speech()) { - if (['move', 'capture', 'check'].includes(name)) return; + if (['move', 'capture', 'check', 'checkmate'].includes(name)) return; dir = 'standard'; } return this.url(`${dir}/${name[0].toUpperCase() + name.slice(1)}.mp3`); @@ -76,7 +76,11 @@ export default new (class implements SoundI { else { if (o?.san?.includes('x')) this.throttled('capture', volume); else this.throttled('move', volume); - if (o?.san?.includes('#') || o?.san?.includes('+')) this.throttled('check', volume); + if (o?.san?.includes('#')) { + this.throttled('checkmate', volume); + } else if (o?.san?.includes('+')) { + this.throttled('check', volume); + } } } if (o?.filter === 'game' || this.theme !== 'music') return; @@ -193,7 +197,7 @@ export default new (class implements SoundI { } preloadBoardSounds() { - for (const name of ['move', 'capture', 'check', 'genericNotify']) this.load(name); + for (const name of ['move', 'capture', 'check', 'checkmate', 'genericNotify']) this.load(name); } async resumeWithTest(): Promise {