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 @@
+
+ {{text}}
+
+
+
+
+
+
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() {