mirror of https://github.com/bra1n/townsquare.git
load traveler data in live sessions
This commit is contained in:
parent
2218b10331
commit
395619afb4
|
@ -1,3 +1,5 @@
|
||||||
|
import rolesJSON from "../roles.json";
|
||||||
|
|
||||||
class LiveSession {
|
class LiveSession {
|
||||||
constructor(store) {
|
constructor(store) {
|
||||||
// this._wss = "ws://localhost:8081/";
|
// this._wss = "ws://localhost:8081/";
|
||||||
|
@ -159,13 +161,7 @@ class LiveSession {
|
||||||
isDead: player.isDead,
|
isDead: player.isDead,
|
||||||
isVoteless: player.isVoteless,
|
isVoteless: player.isVoteless,
|
||||||
...(player.role && player.role.team === "traveler"
|
...(player.role && player.role.team === "traveler"
|
||||||
? {
|
? { roleId: player.role.id }
|
||||||
role: {
|
|
||||||
id: player.role.id,
|
|
||||||
team: "traveler",
|
|
||||||
name: player.role.name
|
|
||||||
}
|
|
||||||
}
|
|
||||||
: {})
|
: {})
|
||||||
}));
|
}));
|
||||||
this._send("gs", {
|
this._send("gs", {
|
||||||
|
@ -201,7 +197,7 @@ class LiveSession {
|
||||||
// update status for each player
|
// update status for each player
|
||||||
gamestate.forEach((state, x) => {
|
gamestate.forEach((state, x) => {
|
||||||
const player = players[x];
|
const player = players[x];
|
||||||
const { role } = state;
|
const { roleId } = state;
|
||||||
// update relevant properties
|
// update relevant properties
|
||||||
["name", "id", "isDead", "isVoteless"].forEach(property => {
|
["name", "id", "isDead", "isVoteless"].forEach(property => {
|
||||||
const value = state[property];
|
const value = state[property];
|
||||||
|
@ -210,13 +206,14 @@ class LiveSession {
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
// roles are special, because of travelers
|
// roles are special, because of travelers
|
||||||
if (role && player.role.id !== role.id) {
|
if (roleId && player.role.id !== roleId) {
|
||||||
|
const role = rolesJSON.find(r => r.id === roleId);
|
||||||
this._store.commit("players/update", {
|
this._store.commit("players/update", {
|
||||||
player,
|
player,
|
||||||
property: "role",
|
property: "role",
|
||||||
value: role
|
value: role
|
||||||
});
|
});
|
||||||
} else if (!role && player.role.team === "traveler") {
|
} else if (!roleId && player.role.team === "traveler") {
|
||||||
this._store.commit("players/update", {
|
this._store.commit("players/update", {
|
||||||
player,
|
player,
|
||||||
property: "role",
|
property: "role",
|
||||||
|
@ -238,19 +235,16 @@ class LiveSession {
|
||||||
if (property === "role") {
|
if (property === "role") {
|
||||||
if (value.team && value.team === "traveler") {
|
if (value.team && value.team === "traveler") {
|
||||||
// update local gamestate to remember this player as a traveler
|
// update local gamestate to remember this player as a traveler
|
||||||
this._gamestate[index].role = {
|
this._gamestate[index].roleId = value.id;
|
||||||
id: player.role.id,
|
|
||||||
team: "traveler",
|
|
||||||
name: player.role.name
|
|
||||||
};
|
|
||||||
this._send("player", {
|
this._send("player", {
|
||||||
index,
|
index,
|
||||||
property,
|
property,
|
||||||
value: this._gamestate[index].role
|
value: value.id
|
||||||
});
|
});
|
||||||
} else if (this._gamestate[index].role) {
|
} else if (this._gamestate[index].roleId) {
|
||||||
delete this._gamestate[index].role;
|
// player was previously a traveler
|
||||||
this._send("player", { index, property, value: {} });
|
delete this._gamestate[index].roleId;
|
||||||
|
this._send("player", { index, property, value: "" });
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
this._send("player", { index, property, value });
|
this._send("player", { index, property, value });
|
||||||
|
@ -268,17 +262,23 @@ class LiveSession {
|
||||||
const player = this._store.state.players.players[index];
|
const player = this._store.state.players.players[index];
|
||||||
if (!player) return;
|
if (!player) return;
|
||||||
// special case where a player stops being a traveler
|
// special case where a player stops being a traveler
|
||||||
if (
|
if (property === "role") {
|
||||||
property === "role" &&
|
if (!value && player.role.team === "traveler") {
|
||||||
value.team !== "traveler" &&
|
// reset to an unknown role
|
||||||
player.role.team === "traveler"
|
this._store.commit("players/update", {
|
||||||
) {
|
player,
|
||||||
// reset to an unknown role
|
property: "role",
|
||||||
this._store.commit("players/update", {
|
value: {}
|
||||||
player,
|
});
|
||||||
property: "role",
|
} else {
|
||||||
value: {}
|
// load traveler role
|
||||||
});
|
const role = rolesJSON.find(r => r.id === value);
|
||||||
|
this._store.commit("players/update", {
|
||||||
|
player,
|
||||||
|
property: "role",
|
||||||
|
value: role
|
||||||
|
});
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
// just update the player otherwise
|
// just update the player otherwise
|
||||||
this._store.commit("players/update", { player, property, value });
|
this._store.commit("players/update", { player, property, value });
|
||||||
|
@ -457,7 +457,7 @@ class LiveSession {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
module.exports = store => {
|
export default store => {
|
||||||
// setup
|
// setup
|
||||||
const session = new LiveSession(store);
|
const session = new LiveSession(store);
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue