From e19aa7a6feb00c223e084ff8c6d35874fb833b48 Mon Sep 17 00:00:00 2001 From: Steffen Date: Sun, 19 Jul 2020 21:11:23 +0200 Subject: [PATCH] fix swapping and moving players in live sessions (fixes #46) --- package-lock.json | 8 ++++---- package.json | 2 +- src/components/Token.vue | 2 ++ src/store/modules/players.js | 2 ++ src/store/socket.js | 34 +++++++++++++++++++++++++++++++++- 5 files changed, 42 insertions(+), 6 deletions(-) diff --git a/package-lock.json b/package-lock.json index 8feb838..bfcb56d 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "townsquare", - "version": "1.3.0", + "version": "1.4.2", "lockfileVersion": 1, "requires": true, "dependencies": { @@ -5015,9 +5015,9 @@ } }, "lodash": { - "version": "4.17.15", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.15.tgz", - "integrity": "sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A==" + "version": "4.17.19", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.19.tgz", + "integrity": "sha512-JNvd8XER9GQX0v2qJgsaN/mzFCNA5BRe/j8JN9d+tWyGLSodKQHKFicdwNYzWwI3wjRnaKPsGj1XkBjx/F96DQ==" }, "lodash.defaultsdeep": { "version": "4.6.1", diff --git a/package.json b/package.json index 2351a32..7e9faae 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "townsquare", - "version": "1.4.0", + "version": "1.4.2", "description": "Blood on the Clocktower Town Square", "author": "Steffen Baumgart", "scripts": { diff --git a/src/components/Token.vue b/src/components/Token.vue index 7d19cc0..9315694 100644 --- a/src/components/Token.vue +++ b/src/components/Token.vue @@ -82,6 +82,8 @@ export default { .icon { background-size: 100%; + background-repeat: no-repeat; + background-position: center 30%; position: absolute; width: 100%; height: 100%; diff --git a/src/store/modules/players.js b/src/store/modules/players.js index 491b40b..e5b47b0 100644 --- a/src/store/modules/players.js +++ b/src/store/modules/players.js @@ -102,6 +102,8 @@ const mutations = { state.players[to], state.players[from] ]; + // hack: "modify" the array so that Vue notices something changed + state.players.splice(0, 0); }, move(state, [from, to]) { state.players.splice(to, 0, state.players.splice(from, 1)[0]); diff --git a/src/store/socket.js b/src/store/socket.js index 6eaaee2..1d6f62b 100644 --- a/src/store/socket.js +++ b/src/store/socket.js @@ -105,9 +105,19 @@ class LiveSession { this._handlePing(params); break; case "nomination": + if (!this._isSpectator) return; this._store.commit("session/nomination", { nomination: params }); break; + case "swap": + if (!this._isSpectator) return; + this._store.commit("players/swap", params); + break; + case "move": + if (!this._isSpectator) return; + this._store.commit("players/move", params); + break; case "votingSpeed": + if (!this._isSpectator) return; this._store.commit("session/setVotingSpeed", params); break; case "vote": @@ -495,6 +505,24 @@ class LiveSession { } } } + + /** + * Swap two player seats. ST only + * @param payload + */ + swapPlayer(payload) { + if (this._isSpectator) return; + this._send("swap", payload); + } + + /** + * Move a player to another seat. ST only + * @param payload + */ + movePlayer(payload) { + if (this._isSpectator) return; + this._send("move", payload); + } } export default store => { @@ -530,9 +558,13 @@ export default store => { case "setEdition": session.sendEdition(); break; - case "players/set": case "players/swap": + session.swapPlayer(payload); + break; case "players/move": + session.movePlayer(payload); + break; + case "players/set": case "players/clear": case "players/remove": case "players/add":