fix some animations

This commit is contained in:
Alberto Xamin 2023-04-10 00:56:53 +01:00
parent 25f5f5062e
commit 980774e51e
No known key found for this signature in database
GPG Key ID: 5ABFCD8A22EA6F5D
2 changed files with 48 additions and 24 deletions

View File

@ -20,7 +20,7 @@
:style="`background-image: url(${card.avatar});`" :style="`background-image: url(${card.avatar});`"
></div> ></div>
<div :class="{ emoji: true, bottomed: card.avatar }">{{ emoji }}</div> <div :class="{ emoji: true, bottomed: card.avatar }">{{ emoji }}</div>
<div v-if="card.isMe" :class="{ emoji: true, bottomed: card.avatar, isMe: true }">🫵</div> <div v-if="card.isMe" :class="{ emoji: true, bottomed: card.avatar, isMe: true }"></div>
<div class="alt_text">{{ card.alt_text }}</div> <div class="alt_text">{{ card.alt_text }}</div>
<div class="suit"> <div class="suit">
{{ number {{ number
@ -280,6 +280,26 @@ export default {
top: 52%; top: 52%;
right: 12pt; right: 12pt;
} }
.emoji.isMe::after {
content: "🫵";
display: block;
}
.card:HOVER .isMe::after {
content: "👋";
animation: wave 0.5s infinite;
will-change: transform;
}
@keyframes wave {
0% {
transform: translate(-5px, 0px) rotate(0deg);
}
50% {
transform: translate(-5px, -5px) rotate(25deg);
}
100% {
transform: translate(-5px, 0) rotate(0deg);
}
}
.emoji.bottomed { .emoji.bottomed {
top: 45%; top: 45%;
left: 8pt; left: 8pt;

View File

@ -390,6 +390,7 @@
<transition name="bounce"> <transition name="bounce">
<DeadRoleNotification <DeadRoleNotification
v-if="deadRoleData" v-if="deadRoleData"
:key="deadRoleData.name"
:playerCard="deadRoleData" :playerCard="deadRoleData"
:playerRole="deadRoleData.role" :playerRole="deadRoleData.role"
/> />
@ -470,7 +471,7 @@ export default {
displayAdminStatus: false, displayAdminStatus: false,
is_replay: false, is_replay: false,
turn: -1, turn: -1,
deadRoleData: null, deadRoleData: false,
cardsToAnimate: [], cardsToAnimate: [],
characters_to_distribute: 2, characters_to_distribute: 2,
fullScreenEffects: [], fullScreenEffects: [],
@ -505,7 +506,7 @@ export default {
notify_dead_role(data) { notify_dead_role(data) {
this.deadRoleData = data; this.deadRoleData = data;
setTimeout(() => { setTimeout(() => {
this.deadRoleData = null; this.deadRoleData = false;
}, 4000); }, 4000);
}, },
debug(data) { debug(data) {
@ -575,33 +576,36 @@ export default {
let params = msg.split('|') let params = msg.split('|')
let type = params.shift().substring(1) let type = params.shift().substring(1)
let messageMap = { let messageMap = {
prison_turn: '⛓️', prison_turn: '⛓️;🔒;⏭️',
explode: '💥', explode: '💥;🧨',
purchase_card: '🛒', purchase_card: '🛒;💸',
prison_free: '🆓', prison_free: '🆓;🔑',
snake_bit: '🐍', snake_bit: '🐍;🩸',
beer_save: '🍺😇', beer_save: '🍺;😇',
sheriff: '⭐', sheriff: '⭐',
spilled_beer: '🍺😭', spilled_beer: '🍺;😭',
use_special: '🔝', use_special: '🔝;✨',
died: '💀;👻;😭;☠️;🪦;F',
died_role: '💀;👻;😭;☠️;🪦;F',
} }
if (messageMap[type]) { if (messageMap[type]) {
let key = Math.random(); let key = Math.random();
let avail = messageMap[type].split(';');
for (let i = 0; i < 5; i++) { for (let i = 0; i < 5; i++) {
setTimeout(() => { setTimeout(() => {
this.fullScreenEffects.push({ this.fullScreenEffects.push({
key, key: key+i,
text: messageMap[type], text: avail[Math.floor(Math.random() * avail.length)],
startPosition: cumulativeOffset(document.getElementById(params[0])), startPosition: cumulativeOffset(document.getElementById(params[0])),
}); });
}, 50 * i); }, 50 * i);
}
setTimeout(() => { setTimeout(() => {
this.fullScreenEffects = this.fullScreenEffects.filter( this.fullScreenEffects = this.fullScreenEffects.filter(
(x) => x.key !== key (x) => x.key !== key+i
); );
}, 3000); }, 3000);
} }
}
}, },
suggest_expansion(expansionName) { suggest_expansion(expansionName) {
if (this.expansions.includes(expansionName)) return; if (this.expansions.includes(expansionName)) return;
@ -612,17 +616,17 @@ export default {
for (let i = 0; i < 6; i++) { for (let i = 0; i < 6; i++) {
setTimeout(() => { setTimeout(() => {
this.fullScreenEffects.push({ this.fullScreenEffects.push({
key: key, key: key+i,
text: i == 0 ? '🤠' : i == 5 ? '💭' : emojiMap[expansionName], text: i == 0 ? '🤠' : i == 5 ? '💭' : emojiMap[expansionName],
startPosition: decelOffset, startPosition: decelOffset,
}); });
}, 50 * i); }, 50 * i);
}
setTimeout(() => { setTimeout(() => {
this.fullScreenEffects = this.fullScreenEffects.filter( this.fullScreenEffects = this.fullScreenEffects.filter(
(x) => x.key !== key (x) => x.key !== key+i
); );
}, 3000); }, 3000);
}
}, },
card_scrapped(data) { card_scrapped(data) {
let decel = document.getElementById("actual-scrap"); let decel = document.getElementById("actual-scrap");