From 66518cebaaec96fc63714da5a3c278debb25c2c9 Mon Sep 17 00:00:00 2001 From: Oliver-Akins Date: Fri, 1 Jan 2021 16:08:58 -0700 Subject: [PATCH] Add the listeners for websocket events. --- web/src/components/PlayerList.vue | 60 +++++++++++++++++++++++++++---- 1 file changed, 54 insertions(+), 6 deletions(-) diff --git a/web/src/components/PlayerList.vue b/web/src/components/PlayerList.vue index 6722918..991a8ac 100644 --- a/web/src/components/PlayerList.vue +++ b/web/src/components/PlayerList.vue @@ -2,12 +2,12 @@

Players:

{{ player.name }} - ( {{ player.role }} ) + ( {{ teamName(player.team) }} {{ roleName(player.role) }} )
@@ -19,15 +19,63 @@ export default { components: {}, computed: { isHost() { - return false; + return this.$store.state.is_host; }, players() { return this.$store.state.players; - } + }, + gameCode() { + return this.$store.state.game_code; + }, + }, + methods: { + teamName(teamID) { + return this.$store.state[`team_${teamID}`].name; + }, + roleName(role) { + return this.$store.state[`${role}_name`] + }, }, - methods: {}, sockets: { - PlayerUpdate() {}, + PlayerUpdate(data) { + /** + * data = { + * status: integer, + * mode: "modify" | "new" | "remove", + * name: string, + * team: integer, + * role: string + * } + */ + if (!(200 <= data.status && data.status < 300)) { + this.$emit(`error`, data); + return; + }; + + switch (data.mode) { + case "modify": + if (this.$store.state.name === data.name) { + this.$store.commit(`player`, { + role: data.role, + team: data.team, + }); + }; + this.$store.commit(`updatePlayer`, data) + break; + case "remove": + this.$store.commit(`playerList`, this.players.filter(player => player.name !== data.name)); + break; + case "new": + this.$store.commit(`newPlayer`, { + name: data.name, + role: data.role, + team: data.ream + }) + break; + default: + console.warn(`Unknown response type from "PlayerUpdate"`); + }; + }, }, }