diff --git a/src/client/game.ts b/src/client/game.ts index 409cf26..3a14004 100644 --- a/src/client/game.ts +++ b/src/client/game.ts @@ -52,14 +52,23 @@ export class Game { if (array[1] === 'join') { this.party.push(name); + this.chat.addMessage(`Joined party of user "${name}".`); } if (array[1] === 'leave') { this.party.splice(this.party.indexOf(name), 1); + this.chat.addMessage(`Left party of user "${name}".`); } if (array[1] === 'clear') { this.party.length = 0; + this.chat.addMessage('Cleared party list.'); + } + + if (array[1] === 'list') { + this.chat.addMessage( + `You have joined the watch party of: ${this.party.join(', ')}`, + ); } localStorage.setItem('party', this.party.join('|')); @@ -178,7 +187,9 @@ export class Game { (player as PlayerEntity).addChat(event.message); } - this.chat.addMessage(event.sender.display_name, event.message); + this.chat.addMessage(event.message, event.sender.display_name); + + // experimental stuff this.experimentalPlayerCmd(event.message, event.sender.display_name); }); } @@ -195,16 +206,23 @@ export class Game { } else { this.videoTest.play(); } + return; } if (message.startsWith('!stop') || message.startsWith('!pause')) { this.videoTest.stop(); + return; } if (message.startsWith('!volume')) { const [cmd, vol] = message.split(' '); + if (!vol) { + this.chat.addMessage( + `Current volume: ${Math.floor(this.videoTest.video.volume * 100)}`, + ); + return; + } this.videoTest.setVolume(parseInt(vol.replace('%', ''), 10)); } - // end of } } diff --git a/src/client/object/chat.ts b/src/client/object/chat.ts index d179ab7..b083bf5 100644 --- a/src/client/object/chat.ts +++ b/src/client/object/chat.ts @@ -137,7 +137,7 @@ export class Chat { this._rehide = rehide; } - public addMessage(sender: string, message: string, meta?: any) { + public addMessage(message: string, sender?: string, meta?: any) { const msg = document.createElement('div'); const msgSender = document.createElement('div'); const msgTime = document.createElement('div'); @@ -148,7 +148,7 @@ export class Chat { msgSender.classList.add('chat__message-sender'); msgContent.classList.add('chat__message-content'); - msg.append(msgTime, msgSender, msgContent); + msg.append(msgTime); const stamp = meta?.time ? new Date(meta.time) : new Date(); @@ -157,9 +157,20 @@ export class Chat { .getMinutes() .toString() .padStart(2, '0')}`; - msgSender.innerText = sender; - msgSender.style.setProperty('--name-color', this.getNameColor(sender)); + + // optional sender + if (sender) { + msgSender.innerText = sender; + msgSender.style.setProperty('--name-color', this.getNameColor(sender)); + msg.append(msgSender); + } + + // optional color for content + if (meta?.color) { + msgSender.style.setProperty('--name-color', meta.color); + } msgContent.innerText = message; + msg.append(msgContent); // const bottomed = this._history.scrollTop ,this._history.scrollHeight; this._history.append(msg); diff --git a/src/client/object/other/video-player.ts b/src/client/object/other/video-player.ts index e1a9ff5..ccd58d7 100644 --- a/src/client/object/other/video-player.ts +++ b/src/client/object/other/video-player.ts @@ -35,6 +35,8 @@ export class VideoPlayer { this.video.pause(); this.video.src = undefined; }); + + this.video.volume = 0.8; } public setSource(source: string, autoplay = false) { @@ -60,9 +62,11 @@ export class VideoPlayer { this.hls.stopLoad(); } }); + this.hls.on(Hls.Events.ERROR, (e, d) => { - this.playable = false; - // if (!d.fatal) return; + if (d.fatal) { + this.playable = false; + } }); return; }