From c2e834a67aaa77b65fd2b4519d0acd1eb020f796 Mon Sep 17 00:00:00 2001 From: Paul Brinkmeier Date: Tue, 17 Jan 2023 18:32:21 +0100 Subject: [PATCH] Implement board view and improve chat --- glebby-client/src/App.vue | 9 +- glebby-client/src/components/Game.vue | 176 +++++++++++++++++++++++--- 2 files changed, 160 insertions(+), 25 deletions(-) diff --git a/glebby-client/src/App.vue b/glebby-client/src/App.vue index af311f3..64baaac 100644 --- a/glebby-client/src/App.vue +++ b/glebby-client/src/App.vue @@ -10,14 +10,14 @@ export default { components: { Game }, - data() { + data(): { ws: WebSocket, model: any } { return { ws: new WebSocket(import.meta.env.VITE_GLEBBY_SERVER_URL), - model: null as any + model: null } }, created() { - const messageListener = (ev: MessageEvent) => { + const messageListener = (ev: MessageEvent) => { const message = JSON.parse(ev.data) const payload = message.payload @@ -30,7 +30,8 @@ export default { } this.model = { yourId: payload.state.yourId, - players + players, + board: payload.state.board } this.ws.removeEventListener('message', messageListener) } diff --git a/glebby-client/src/components/Game.vue b/glebby-client/src/components/Game.vue index 8c23835..a3eeef6 100644 --- a/glebby-client/src/components/Game.vue +++ b/glebby-client/src/components/Game.vue @@ -8,7 +8,8 @@ interface Player { interface Model { yourId: number, - players: Map + players: Map, + board: string[4][4] } function getPlayer(model: Model, id: number): Player | undefined { @@ -26,13 +27,16 @@ export default defineComponent({ }, data() { return { - chatMessages: [] as string[], + chatMessages: [] as { from: number, message: string }[], playerName: '', chatMessage: '' } }, created() { + console.log(this.model.board) + console.log(this.model) + console.log(this.model.players) this.ws.addEventListener('message', (ev) => { const message = JSON.parse(ev.data) const payload = message.payload @@ -50,12 +54,20 @@ export default defineComponent({ this.model.players.delete(message.from) break case 'chat': - this.chatMessages.push(payload.message) + this.chatMessages.push({ + from: message.from, + message: payload.message + }) break case 'set-name': getPlayer(this.model, message.from)!.name = payload.name break + case 'roll': + this.model.board = payload.board + break } + + console.log(this.model) }) }, methods: { @@ -75,28 +87,150 @@ export default defineComponent({ message: this.chatMessage })) this.chatMessage = '' + }, + roll() { + this.ws.send(JSON.stringify({ + type: 'roll' + })) } } }) + +