Skip to content
Snippets Groups Projects

Some changes

Merged Max Wehmeier requested to merge some-changes into custom-server
All threads resolved!
+ 29
6
import SkribblClient from "../logic/SkribblClient.js";
import {CustomElement} from "../util/Util.js";
//TODO (in the end) clean up code, do cosmetics to the chat, write comments, fix scrolling?
//TODO do cosmetics in the chat
//TODO FCKING FIX THE SHITTY SCROLLING! THIS IS BULLSHIT; NOTHING WORKS??
//TODO clen up code
//TODO write comments
/**
* Custom element `<skribbl-chat>` for the chat used to guess words and see others guesses.
* @todo allow cycling through previous guesses using the arrow keys, like in a terminal
*/
export default class SkribblChat extends CustomElement {
/**
@@ -14,6 +16,9 @@ export default class SkribblChat extends CustomElement {
super();
this._oldDrawer = -1;
this._oldPlayerCount = -1;
/** @type {string[]} */
this._guesses = [];
this._guessListPosition = 0;
this.attachShadow({mode:"open"});
this.shadowRoot.innerHTML = `
<style>
@@ -69,7 +74,15 @@ export default class SkribblChat extends CustomElement {
this._input.addEventListener("keydown",e=>{
if (e.key=="Enter"&&this._input.value!==""){
this._client.sendGuess(this._input.value);
this._guesses[this._guesses.length] = this._input.value;
this._guessListPosition = this._guesses.length;
this._input.value = "";
} else if (e.key=="ArrowUp"&&this._guessListPosition>0){
this._input.value = this._guesses[--this._guessListPosition];
console.log("Index:" , this._guessListPosition);
} else if (e.key=="ArrowDown"&&this._guessListPosition<this._guesses.length){
this._input.value = this._guesses[++this._guessListPosition]||"";
console.log("Index:" , this._guessListPosition);
}
});
client.onGuess(guessData=>{
@@ -113,7 +126,7 @@ export default class SkribblChat extends CustomElement {
this._messageDiv.appendChild(_SkribblMessage.createSkribblJoin(state.players[state.players.length - 1].name));
this._oldPlayerCount = state.players.length;
} else if (state.players.length < this._oldPlayerCount) {
this._messageDiv.appendChild(_SkribblMessage.createSkribblLeave("jmd"));
this._messageDiv.appendChild(_SkribblMessage.createSkribblLeave("WIP"));
this._oldPlayerCount = state.players.length;
}
}
@@ -121,7 +134,6 @@ export default class SkribblChat extends CustomElement {
this._messageDiv.scrollTop = this._messageDiv.scrollHeight - this._messageDiv.clientHeight;
}
},{onlyWhen:this.connected});
//TODO write to chat when players join/leave
}
}
@@ -149,12 +161,23 @@ class _SkribblMessage extends HTMLElement {
* @param {string} playerName
* @param {string} message
*/
static createSkribblTextMessage(playerName,message) {
static createSkribblTextMessage(playerName,message) {
let innerHTML = "<b>" + playerName + ":</b> " + message;
let color = "#000000";
let element = new _SkribblMessage(innerHTML,color);
return element;
}
}
/**
* @param {string} playerName
* @param {string} message
*/
static createSkribblGhostMessage(playerName,message) {
let innerHTML = "<b>" + playerName + ":</b> " + message;
let color = "#ababab";
let element = new _SkribblMessage(innerHTML,color);
return element;
}
/**
* @param {string} word