Compare commits
4 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| dd530266f9 | |||
| a37b2048fe | |||
| e3ac3e003c | |||
| 6fa142f133 |
Binary file not shown.
@@ -8,6 +8,7 @@ export const useApp = createGlobalState(() => {
|
|||||||
const mediasoup = useMediasoup()
|
const mediasoup = useMediasoup()
|
||||||
const signaling = useSignaling()
|
const signaling = useSignaling()
|
||||||
const toast = useToast()
|
const toast = useToast()
|
||||||
|
const sfx = useSfx()
|
||||||
|
|
||||||
const ready = ref(false)
|
const ready = ref(false)
|
||||||
const isTauri = computed(() => '__TAURI_INTERNALS__' in window)
|
const isTauri = computed(() => '__TAURI_INTERNALS__' in window)
|
||||||
@@ -52,6 +53,7 @@ export const useApp = createGlobalState(() => {
|
|||||||
|
|
||||||
await mediasoup.pauseProducer(mediasoup.micProducer.value)
|
await mediasoup.pauseProducer(mediasoup.micProducer.value)
|
||||||
|
|
||||||
|
sfx.play('/sfx/off_micr.ogg').then()
|
||||||
toast.add({ severity: 'info', summary: 'Microphone muted', closable: false, life: 1000 })
|
toast.add({ severity: 'info', summary: 'Microphone muted', closable: false, life: 1000 })
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -65,6 +67,7 @@ export const useApp = createGlobalState(() => {
|
|||||||
|
|
||||||
await mediasoup.resumeProducer(mediasoup.micProducer.value)
|
await mediasoup.resumeProducer(mediasoup.micProducer.value)
|
||||||
|
|
||||||
|
sfx.play('/sfx/on_micr.ogg').then()
|
||||||
toast.add({ severity: 'info', summary: 'Microphone activated', closable: false, life: 1000 })
|
toast.add({ severity: 'info', summary: 'Microphone activated', closable: false, life: 1000 })
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -115,18 +118,22 @@ export const useApp = createGlobalState(() => {
|
|||||||
async function toggleVideo() {
|
async function toggleVideo() {
|
||||||
if (!mediasoup.videoProducer.value) {
|
if (!mediasoup.videoProducer.value) {
|
||||||
await mediasoup.enableVideo()
|
await mediasoup.enableVideo()
|
||||||
|
await sfx.play('/sfx/on_trans.ogg', 0.03)
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
await mediasoup.disableProducer(mediasoup.videoProducer.value)
|
await mediasoup.disableProducer(mediasoup.videoProducer.value)
|
||||||
|
await sfx.play('/sfx/off_trans.ogg', 0.03)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
async function toggleShare() {
|
async function toggleShare() {
|
||||||
if (!mediasoup.shareProducer.value) {
|
if (!mediasoup.shareProducer.value) {
|
||||||
await mediasoup.enableShare()
|
await mediasoup.enableShare()
|
||||||
|
await sfx.play('/sfx/on_trans.ogg', 0.03)
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
await mediasoup.disableProducer(mediasoup.shareProducer.value)
|
await mediasoup.disableProducer(mediasoup.shareProducer.value)
|
||||||
|
await sfx.play('/sfx/off_trans.ogg', 0.03)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -29,6 +29,7 @@ const ICE_SERVERS: RTCIceServer[] = [
|
|||||||
|
|
||||||
export const useMediasoup = createSharedComposable(() => {
|
export const useMediasoup = createSharedComposable(() => {
|
||||||
const toast = useToast()
|
const toast = useToast()
|
||||||
|
const sfx = useSfx()
|
||||||
|
|
||||||
const signaling = useSignaling()
|
const signaling = useSignaling()
|
||||||
const { addClient, removeClient } = useClients()
|
const { addClient, removeClient } = useClients()
|
||||||
@@ -175,6 +176,7 @@ export const useMediasoup = createSharedComposable(() => {
|
|||||||
})
|
})
|
||||||
|
|
||||||
socket.on('newPeer', (client) => {
|
socket.on('newPeer', (client) => {
|
||||||
|
sfx.playRandomConnectionSound(client.socketId).then()
|
||||||
addClient(client)
|
addClient(client)
|
||||||
})
|
})
|
||||||
|
|
||||||
@@ -200,6 +202,9 @@ export const useMediasoup = createSharedComposable(() => {
|
|||||||
appData: { ...appData, socketId },
|
appData: { ...appData, socketId },
|
||||||
})
|
})
|
||||||
|
|
||||||
|
if (kind === 'video')
|
||||||
|
sfx.play('/sfx/on_trans.ogg', 0.03).then()
|
||||||
|
|
||||||
if (producerPaused)
|
if (producerPaused)
|
||||||
consumer.pause()
|
consumer.pause()
|
||||||
|
|
||||||
@@ -219,6 +224,9 @@ export const useMediasoup = createSharedComposable(() => {
|
|||||||
})
|
})
|
||||||
|
|
||||||
consumer.observer.on('close', () => {
|
consumer.observer.on('close', () => {
|
||||||
|
if (kind === 'video')
|
||||||
|
sfx.play('/sfx/off_trans.ogg', 0.03).then()
|
||||||
|
|
||||||
delete consumers.value[consumer.id]
|
delete consumers.value[consumer.id]
|
||||||
})
|
})
|
||||||
|
|
||||||
|
|||||||
43
client/app/composables/use-sfx.ts
Normal file
43
client/app/composables/use-sfx.ts
Normal file
@@ -0,0 +1,43 @@
|
|||||||
|
import { createSharedComposable } from '@vueuse/core'
|
||||||
|
import { Howl, Howler } from 'howler'
|
||||||
|
|
||||||
|
const CONNECTION_SOUNDS = Object.keys(import.meta.glob('@/../public/sfx/connection/*.ogg')).map(path => path.replace('../public', ''))
|
||||||
|
|
||||||
|
console.log('CONNECTION_SOUNDS', CONNECTION_SOUNDS)
|
||||||
|
|
||||||
|
function hashStringToNumber(str: string, cap: number): number {
|
||||||
|
let hash = 0
|
||||||
|
for (let i = 0; i < str.length; i++) {
|
||||||
|
hash = (hash * 31 + str.charCodeAt(i)) | 0
|
||||||
|
}
|
||||||
|
return Math.abs(hash) % cap
|
||||||
|
}
|
||||||
|
|
||||||
|
export const useSfx = createSharedComposable(() => {
|
||||||
|
async function play(src: string, volume = 0.2): Promise<void> {
|
||||||
|
Howler.stop()
|
||||||
|
|
||||||
|
return new Promise((resolve) => {
|
||||||
|
const howl = new Howl({
|
||||||
|
src,
|
||||||
|
autoplay: true,
|
||||||
|
loop: false,
|
||||||
|
volume,
|
||||||
|
})
|
||||||
|
|
||||||
|
howl.on('end', () => {
|
||||||
|
resolve()
|
||||||
|
})
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
async function playRandomConnectionSound(seed: string) {
|
||||||
|
await play('/sfx/on_trans.ogg', 0.03)
|
||||||
|
await play(CONNECTION_SOUNDS[hashStringToNumber(seed, CONNECTION_SOUNDS.length + 1)]!, 0.1)
|
||||||
|
}
|
||||||
|
|
||||||
|
return {
|
||||||
|
play,
|
||||||
|
playRandomConnectionSound,
|
||||||
|
}
|
||||||
|
})
|
||||||
@@ -19,6 +19,7 @@
|
|||||||
"@tauri-apps/plugin-updater": "~2",
|
"@tauri-apps/plugin-updater": "~2",
|
||||||
"@vueuse/core": "^13.9.0",
|
"@vueuse/core": "^13.9.0",
|
||||||
"hotkeys-js": "^4.0.0",
|
"hotkeys-js": "^4.0.0",
|
||||||
|
"howler": "^2.2.4",
|
||||||
"lucide-vue-next": "^0.562.0",
|
"lucide-vue-next": "^0.562.0",
|
||||||
"mediasoup-client": "^3.18.6",
|
"mediasoup-client": "^3.18.6",
|
||||||
"nuxt": "^4.2.2",
|
"nuxt": "^4.2.2",
|
||||||
@@ -37,6 +38,7 @@
|
|||||||
"@antfu/eslint-config": "^5.4.1",
|
"@antfu/eslint-config": "^5.4.1",
|
||||||
"@primevue/nuxt-module": "^4.4.0",
|
"@primevue/nuxt-module": "^4.4.0",
|
||||||
"@tauri-apps/cli": "^2.8.4",
|
"@tauri-apps/cli": "^2.8.4",
|
||||||
|
"@types/howler": "^2",
|
||||||
"eslint": "^9.36.0",
|
"eslint": "^9.36.0",
|
||||||
"eslint-plugin-format": "^1.0.2",
|
"eslint-plugin-format": "^1.0.2",
|
||||||
"sass-embedded": "^1.93.2",
|
"sass-embedded": "^1.93.2",
|
||||||
|
|||||||
BIN
client/public/sfx/connection/0.ogg
Normal file
BIN
client/public/sfx/connection/0.ogg
Normal file
Binary file not shown.
BIN
client/public/sfx/connection/1.ogg
Normal file
BIN
client/public/sfx/connection/1.ogg
Normal file
Binary file not shown.
BIN
client/public/sfx/connection/10.ogg
Normal file
BIN
client/public/sfx/connection/10.ogg
Normal file
Binary file not shown.
BIN
client/public/sfx/connection/100.ogg
Normal file
BIN
client/public/sfx/connection/100.ogg
Normal file
Binary file not shown.
BIN
client/public/sfx/connection/101.ogg
Normal file
BIN
client/public/sfx/connection/101.ogg
Normal file
Binary file not shown.
BIN
client/public/sfx/connection/102.ogg
Normal file
BIN
client/public/sfx/connection/102.ogg
Normal file
Binary file not shown.
BIN
client/public/sfx/connection/103.ogg
Normal file
BIN
client/public/sfx/connection/103.ogg
Normal file
Binary file not shown.
BIN
client/public/sfx/connection/104.ogg
Normal file
BIN
client/public/sfx/connection/104.ogg
Normal file
Binary file not shown.
BIN
client/public/sfx/connection/105.ogg
Normal file
BIN
client/public/sfx/connection/105.ogg
Normal file
Binary file not shown.
BIN
client/public/sfx/connection/106.ogg
Normal file
BIN
client/public/sfx/connection/106.ogg
Normal file
Binary file not shown.
BIN
client/public/sfx/connection/107.ogg
Normal file
BIN
client/public/sfx/connection/107.ogg
Normal file
Binary file not shown.
BIN
client/public/sfx/connection/108.ogg
Normal file
BIN
client/public/sfx/connection/108.ogg
Normal file
Binary file not shown.
BIN
client/public/sfx/connection/109.ogg
Normal file
BIN
client/public/sfx/connection/109.ogg
Normal file
Binary file not shown.
BIN
client/public/sfx/connection/11.ogg
Normal file
BIN
client/public/sfx/connection/11.ogg
Normal file
Binary file not shown.
BIN
client/public/sfx/connection/110.ogg
Normal file
BIN
client/public/sfx/connection/110.ogg
Normal file
Binary file not shown.
BIN
client/public/sfx/connection/111.ogg
Normal file
BIN
client/public/sfx/connection/111.ogg
Normal file
Binary file not shown.
BIN
client/public/sfx/connection/112.ogg
Normal file
BIN
client/public/sfx/connection/112.ogg
Normal file
Binary file not shown.
BIN
client/public/sfx/connection/113.ogg
Normal file
BIN
client/public/sfx/connection/113.ogg
Normal file
Binary file not shown.
BIN
client/public/sfx/connection/114.ogg
Normal file
BIN
client/public/sfx/connection/114.ogg
Normal file
Binary file not shown.
BIN
client/public/sfx/connection/115.ogg
Normal file
BIN
client/public/sfx/connection/115.ogg
Normal file
Binary file not shown.
BIN
client/public/sfx/connection/116.ogg
Normal file
BIN
client/public/sfx/connection/116.ogg
Normal file
Binary file not shown.
BIN
client/public/sfx/connection/117.ogg
Normal file
BIN
client/public/sfx/connection/117.ogg
Normal file
Binary file not shown.
BIN
client/public/sfx/connection/118.ogg
Normal file
BIN
client/public/sfx/connection/118.ogg
Normal file
Binary file not shown.
BIN
client/public/sfx/connection/119.ogg
Normal file
BIN
client/public/sfx/connection/119.ogg
Normal file
Binary file not shown.
BIN
client/public/sfx/connection/12.ogg
Normal file
BIN
client/public/sfx/connection/12.ogg
Normal file
Binary file not shown.
BIN
client/public/sfx/connection/120.ogg
Normal file
BIN
client/public/sfx/connection/120.ogg
Normal file
Binary file not shown.
BIN
client/public/sfx/connection/121.ogg
Normal file
BIN
client/public/sfx/connection/121.ogg
Normal file
Binary file not shown.
BIN
client/public/sfx/connection/122.ogg
Normal file
BIN
client/public/sfx/connection/122.ogg
Normal file
Binary file not shown.
BIN
client/public/sfx/connection/123.ogg
Normal file
BIN
client/public/sfx/connection/123.ogg
Normal file
Binary file not shown.
BIN
client/public/sfx/connection/124.ogg
Normal file
BIN
client/public/sfx/connection/124.ogg
Normal file
Binary file not shown.
BIN
client/public/sfx/connection/125.ogg
Normal file
BIN
client/public/sfx/connection/125.ogg
Normal file
Binary file not shown.
BIN
client/public/sfx/connection/126.ogg
Normal file
BIN
client/public/sfx/connection/126.ogg
Normal file
Binary file not shown.
BIN
client/public/sfx/connection/127.ogg
Normal file
BIN
client/public/sfx/connection/127.ogg
Normal file
Binary file not shown.
BIN
client/public/sfx/connection/128.ogg
Normal file
BIN
client/public/sfx/connection/128.ogg
Normal file
Binary file not shown.
BIN
client/public/sfx/connection/129.ogg
Normal file
BIN
client/public/sfx/connection/129.ogg
Normal file
Binary file not shown.
BIN
client/public/sfx/connection/13.ogg
Normal file
BIN
client/public/sfx/connection/13.ogg
Normal file
Binary file not shown.
BIN
client/public/sfx/connection/130.ogg
Normal file
BIN
client/public/sfx/connection/130.ogg
Normal file
Binary file not shown.
BIN
client/public/sfx/connection/131.ogg
Normal file
BIN
client/public/sfx/connection/131.ogg
Normal file
Binary file not shown.
BIN
client/public/sfx/connection/132.ogg
Normal file
BIN
client/public/sfx/connection/132.ogg
Normal file
Binary file not shown.
BIN
client/public/sfx/connection/133.ogg
Normal file
BIN
client/public/sfx/connection/133.ogg
Normal file
Binary file not shown.
BIN
client/public/sfx/connection/134.ogg
Normal file
BIN
client/public/sfx/connection/134.ogg
Normal file
Binary file not shown.
BIN
client/public/sfx/connection/135.ogg
Normal file
BIN
client/public/sfx/connection/135.ogg
Normal file
Binary file not shown.
BIN
client/public/sfx/connection/136.ogg
Normal file
BIN
client/public/sfx/connection/136.ogg
Normal file
Binary file not shown.
BIN
client/public/sfx/connection/137.ogg
Normal file
BIN
client/public/sfx/connection/137.ogg
Normal file
Binary file not shown.
BIN
client/public/sfx/connection/138.ogg
Normal file
BIN
client/public/sfx/connection/138.ogg
Normal file
Binary file not shown.
BIN
client/public/sfx/connection/139.ogg
Normal file
BIN
client/public/sfx/connection/139.ogg
Normal file
Binary file not shown.
BIN
client/public/sfx/connection/14.ogg
Normal file
BIN
client/public/sfx/connection/14.ogg
Normal file
Binary file not shown.
BIN
client/public/sfx/connection/140.ogg
Normal file
BIN
client/public/sfx/connection/140.ogg
Normal file
Binary file not shown.
BIN
client/public/sfx/connection/141.ogg
Normal file
BIN
client/public/sfx/connection/141.ogg
Normal file
Binary file not shown.
BIN
client/public/sfx/connection/142.ogg
Normal file
BIN
client/public/sfx/connection/142.ogg
Normal file
Binary file not shown.
BIN
client/public/sfx/connection/143.ogg
Normal file
BIN
client/public/sfx/connection/143.ogg
Normal file
Binary file not shown.
BIN
client/public/sfx/connection/144.ogg
Normal file
BIN
client/public/sfx/connection/144.ogg
Normal file
Binary file not shown.
BIN
client/public/sfx/connection/145.ogg
Normal file
BIN
client/public/sfx/connection/145.ogg
Normal file
Binary file not shown.
BIN
client/public/sfx/connection/146.ogg
Normal file
BIN
client/public/sfx/connection/146.ogg
Normal file
Binary file not shown.
BIN
client/public/sfx/connection/147.ogg
Normal file
BIN
client/public/sfx/connection/147.ogg
Normal file
Binary file not shown.
BIN
client/public/sfx/connection/148.ogg
Normal file
BIN
client/public/sfx/connection/148.ogg
Normal file
Binary file not shown.
BIN
client/public/sfx/connection/149.ogg
Normal file
BIN
client/public/sfx/connection/149.ogg
Normal file
Binary file not shown.
BIN
client/public/sfx/connection/15.ogg
Normal file
BIN
client/public/sfx/connection/15.ogg
Normal file
Binary file not shown.
BIN
client/public/sfx/connection/16.ogg
Normal file
BIN
client/public/sfx/connection/16.ogg
Normal file
Binary file not shown.
BIN
client/public/sfx/connection/17.ogg
Normal file
BIN
client/public/sfx/connection/17.ogg
Normal file
Binary file not shown.
BIN
client/public/sfx/connection/18.ogg
Normal file
BIN
client/public/sfx/connection/18.ogg
Normal file
Binary file not shown.
BIN
client/public/sfx/connection/19.ogg
Normal file
BIN
client/public/sfx/connection/19.ogg
Normal file
Binary file not shown.
BIN
client/public/sfx/connection/2.ogg
Normal file
BIN
client/public/sfx/connection/2.ogg
Normal file
Binary file not shown.
BIN
client/public/sfx/connection/20.ogg
Normal file
BIN
client/public/sfx/connection/20.ogg
Normal file
Binary file not shown.
BIN
client/public/sfx/connection/21.ogg
Normal file
BIN
client/public/sfx/connection/21.ogg
Normal file
Binary file not shown.
BIN
client/public/sfx/connection/22.ogg
Normal file
BIN
client/public/sfx/connection/22.ogg
Normal file
Binary file not shown.
BIN
client/public/sfx/connection/23.ogg
Normal file
BIN
client/public/sfx/connection/23.ogg
Normal file
Binary file not shown.
BIN
client/public/sfx/connection/24.ogg
Normal file
BIN
client/public/sfx/connection/24.ogg
Normal file
Binary file not shown.
BIN
client/public/sfx/connection/25.ogg
Normal file
BIN
client/public/sfx/connection/25.ogg
Normal file
Binary file not shown.
BIN
client/public/sfx/connection/26.ogg
Normal file
BIN
client/public/sfx/connection/26.ogg
Normal file
Binary file not shown.
BIN
client/public/sfx/connection/27.ogg
Normal file
BIN
client/public/sfx/connection/27.ogg
Normal file
Binary file not shown.
BIN
client/public/sfx/connection/28.ogg
Normal file
BIN
client/public/sfx/connection/28.ogg
Normal file
Binary file not shown.
BIN
client/public/sfx/connection/29.ogg
Normal file
BIN
client/public/sfx/connection/29.ogg
Normal file
Binary file not shown.
BIN
client/public/sfx/connection/3.ogg
Normal file
BIN
client/public/sfx/connection/3.ogg
Normal file
Binary file not shown.
BIN
client/public/sfx/connection/30.ogg
Normal file
BIN
client/public/sfx/connection/30.ogg
Normal file
Binary file not shown.
BIN
client/public/sfx/connection/31.ogg
Normal file
BIN
client/public/sfx/connection/31.ogg
Normal file
Binary file not shown.
BIN
client/public/sfx/connection/32.ogg
Normal file
BIN
client/public/sfx/connection/32.ogg
Normal file
Binary file not shown.
BIN
client/public/sfx/connection/33.ogg
Normal file
BIN
client/public/sfx/connection/33.ogg
Normal file
Binary file not shown.
BIN
client/public/sfx/connection/34.ogg
Normal file
BIN
client/public/sfx/connection/34.ogg
Normal file
Binary file not shown.
BIN
client/public/sfx/connection/35.ogg
Normal file
BIN
client/public/sfx/connection/35.ogg
Normal file
Binary file not shown.
BIN
client/public/sfx/connection/36.ogg
Normal file
BIN
client/public/sfx/connection/36.ogg
Normal file
Binary file not shown.
BIN
client/public/sfx/connection/37.ogg
Normal file
BIN
client/public/sfx/connection/37.ogg
Normal file
Binary file not shown.
BIN
client/public/sfx/connection/38.ogg
Normal file
BIN
client/public/sfx/connection/38.ogg
Normal file
Binary file not shown.
BIN
client/public/sfx/connection/39.ogg
Normal file
BIN
client/public/sfx/connection/39.ogg
Normal file
Binary file not shown.
BIN
client/public/sfx/connection/4.ogg
Normal file
BIN
client/public/sfx/connection/4.ogg
Normal file
Binary file not shown.
BIN
client/public/sfx/connection/40.ogg
Normal file
BIN
client/public/sfx/connection/40.ogg
Normal file
Binary file not shown.
BIN
client/public/sfx/connection/41.ogg
Normal file
BIN
client/public/sfx/connection/41.ogg
Normal file
Binary file not shown.
BIN
client/public/sfx/connection/42.ogg
Normal file
BIN
client/public/sfx/connection/42.ogg
Normal file
Binary file not shown.
BIN
client/public/sfx/connection/43.ogg
Normal file
BIN
client/public/sfx/connection/43.ogg
Normal file
Binary file not shown.
BIN
client/public/sfx/connection/44.ogg
Normal file
BIN
client/public/sfx/connection/44.ogg
Normal file
Binary file not shown.
BIN
client/public/sfx/connection/45.ogg
Normal file
BIN
client/public/sfx/connection/45.ogg
Normal file
Binary file not shown.
BIN
client/public/sfx/connection/46.ogg
Normal file
BIN
client/public/sfx/connection/46.ogg
Normal file
Binary file not shown.
BIN
client/public/sfx/connection/47.ogg
Normal file
BIN
client/public/sfx/connection/47.ogg
Normal file
Binary file not shown.
BIN
client/public/sfx/connection/48.ogg
Normal file
BIN
client/public/sfx/connection/48.ogg
Normal file
Binary file not shown.
BIN
client/public/sfx/connection/49.ogg
Normal file
BIN
client/public/sfx/connection/49.ogg
Normal file
Binary file not shown.
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user