From a7ef721f1bf89b894c6e5a077f41960680777da9 Mon Sep 17 00:00:00 2001 From: Alberto Xamin Date: Wed, 25 Jan 2023 17:46:16 +0000 Subject: [PATCH] enable draw animation from other players --- backend/bang/deck.py | 7 +++++-- backend/bang/players.py | 3 +++ frontend/src/components/Lobby.vue | 3 ++- 3 files changed, 10 insertions(+), 3 deletions(-) diff --git a/backend/bang/deck.py b/backend/bang/deck.py index f3a430e..6172177 100644 --- a/backend/bang/deck.py +++ b/backend/bang/deck.py @@ -113,7 +113,10 @@ class Deck: if self.game.check_event(ce.MinieraAbbandonata) and not ignore_event: self.put_on_top(card) else: + self.scrap_pile.append(card) if player is not None and self.game.replay_speed > 0: G.sio.emit('card_scrapped', room=self.game.name, data={'player': player.name, 'card':card.__dict__, 'pile': 'scrap'}) - self.scrap_pile.append(card) - self.game.notify_scrap_pile() + G.sio.sleep(0.6) + self.game.notify_scrap_pile() + else: + self.game.notify_scrap_pile() diff --git a/backend/bang/players.py b/backend/bang/players.py index f5d8fa0..51ca9bd 100644 --- a/backend/bang/players.py +++ b/backend/bang/players.py @@ -767,6 +767,7 @@ class Player: card = target.hand.pop(card_index) target.notify_self() if self.choose_action == 'steal': + G.sio.emit('card_drawn', room=self.game.name, data={'player': self.name, 'pile': target.name}) card.reset_card() if card.name != "Fantasma" or self.name != target.name: #se si uccide facendo panico su fantasma la carta non gli viene messa in mano self.hand.append(card) @@ -1038,6 +1039,7 @@ class Player: card.reset_card() self.hand.append(card) self.available_cards = [] + G.sio.emit('card_drawn', room=self.game.name, data={'player': self.name, 'pile': self.pat_target}) self.game.get_player_named(self.pat_target).notify_self() self.pending_action = PendingAction.PLAY self.manette() @@ -1232,6 +1234,7 @@ class Player: elif self.character.check(self.game, chars.ElGringo) and self.attacker and self.attacker in self.game.get_alive_players() and len(self.attacker.hand) > 0: self.hand.append(self.attacker.hand.pop(randrange(0, len(self.attacker.hand)))) self.hand[-1].reset_card() + G.sio.emit('card_drawn', room=self.game.name, data={'player': self.name, 'pile': self.attacker.name}) G.sio.emit('chat_message', room=self.game.name, data=f'_special_el_gringo|{self.name}|{self.attacker.name}') self.attacker.notify_self() diff --git a/frontend/src/components/Lobby.vue b/frontend/src/components/Lobby.vue index c72494e..d205834 100644 --- a/frontend/src/components/Lobby.vue +++ b/frontend/src/components/Lobby.vue @@ -222,7 +222,8 @@ export default { this.username = username }, card_drawn(data) { - let decel = document.getElementById('actual-deck') + let from = data.pile === 'deck' ? 'actual-deck' : `${data.pile}-hand`; + let decel = document.getElementById(from) if (!decel) return let decelOffset = cumulativeOffset(decel)