diff --git a/backend/server.py b/backend/server.py index 146d3fe..0b2e99d 100644 --- a/backend/server.py +++ b/backend/server.py @@ -422,8 +422,11 @@ def private(sid): @sio.event @bang_handler def toggle_expansion(sid, expansion_name): - g = sio.get_session(sid).game - g.toggle_expansion(expansion_name) + game = sio.get_session(sid).game + if "suggest" in expansion_name: + sio.emit("suggest_expansion", room=game.name, data=expansion_name.split(";")[1]) + return + game.toggle_expansion(expansion_name) advertise_lobbies() diff --git a/frontend/src/components/AnimatedEffect.vue b/frontend/src/components/AnimatedEffect.vue new file mode 100644 index 0000000..564211c --- /dev/null +++ b/frontend/src/components/AnimatedEffect.vue @@ -0,0 +1,49 @@ + + + + + + diff --git a/frontend/src/components/Lobby.vue b/frontend/src/components/Lobby.vue index 9b9ddd8..64ed9cc 100644 --- a/frontend/src/components/Lobby.vue +++ b/frontend/src/components/Lobby.vue @@ -201,6 +201,7 @@ +
({ @@ -463,6 +472,7 @@ export default { deadRoleData: null, cardsToAnimate: [], characters_to_distribute: 2, + fullScreenEffects: [], }), sockets: { room(data) { @@ -560,6 +570,27 @@ export default { this.cardsToAnimate = this.cardsToAnimate.filter((x) => x.key !== key); }, 1800); }, + suggest_expansion(expansionName) { + if (this.expansions.includes(expansionName)) return; + let key = Math.random(); + let decel = document.getElementById(expansionName); + if (!decel) return; + let decelOffset = cumulativeOffset(decel); + for (let i = 0; i < 6; i++) { + setTimeout(() => { + this.fullScreenEffects.push({ + key: key, + text: i == 0 ? '🤠' : i == 5 ? '💭' : emojiMap[expansionName], + startPosition: decelOffset, + }); + }, 50 * i); + } + setTimeout(() => { + this.fullScreenEffects = this.fullScreenEffects.filter( + (x) => x.key !== key + ); + }, 3000); + }, card_scrapped(data) { let decel = document.getElementById("actual-scrap"); if (!decel) { @@ -693,7 +724,7 @@ export default { document.title = "PewPew!"; }, toggleExpansions(name) { - if (!this.isRoomOwner) return; + if (!this.isRoomOwner) return this.$socket.emit("toggle_expansion", `suggest;${name}`); this.$socket.emit("toggle_expansion", name); }, toggleCompetitive() {