fix swapping and moving players in live sessions (fixes #46)

This commit is contained in:
Steffen 2020-07-19 21:11:23 +02:00
parent ef42239d2c
commit e19aa7a6fe
No known key found for this signature in database
GPG Key ID: 764D74E98267DFC6
5 changed files with 42 additions and 6 deletions

8
package-lock.json generated
View File

@ -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",

View File

@ -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": {

View File

@ -82,6 +82,8 @@ export default {
.icon {
background-size: 100%;
background-repeat: no-repeat;
background-position: center 30%;
position: absolute;
width: 100%;
height: 100%;

View File

@ -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]);

View File

@ -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":