diff --git a/backend/__init__.py b/backend/__init__.py index c01541b..235f574 100644 --- a/backend/__init__.py +++ b/backend/__init__.py @@ -77,9 +77,9 @@ def refresh(sid): ses.notify_self() @sio.event -def draw(sid): +def draw(sid, pile): ses = sio.get_session(sid) - ses.draw() + ses.draw(pile) @sio.event def pick(sid): diff --git a/backend/deck.py b/backend/deck.py index 1b5a838..a1a991a 100644 --- a/backend/deck.py +++ b/backend/deck.py @@ -36,8 +36,9 @@ class Deck: def draw_from_scrap_pile(self) -> Card: if len(self.scrap_pile) > 0: - return self.scrap_pile.pop(0) + card = self.scrap_pile.pop(0) self.game.notify_scrap_pile() + return card else: return self.draw() diff --git a/backend/game.py b/backend/game.py index a2dcf85..5f0e55e 100644 --- a/backend/game.py +++ b/backend/game.py @@ -62,8 +62,11 @@ class Game: available_roles = available_roles[:len(self.players)] random.shuffle(available_roles) for i in range(len(self.players)): + self.sio.emit('chat_message', room=self.name, data=f'{self.players[i].name} ha come personaggio {self.players[i].character.name}') self.players[i].set_role(available_roles[i]) if isinstance(available_roles[i], roles.Sheriff) or (len(available_roles) == 3 and isinstance(available_roles[i], roles.Vice)): + if isinstance(available_roles[i], roles.Sheriff): + self.sio.emit('chat_message', room=self.name, data=f'{self.players[i].name} È lo sceriffo') self.turn = i self.players[i].prepare() for k in range(self.players[i].max_lives): diff --git a/backend/players.py b/backend/players.py index 2339802..e399194 100644 --- a/backend/players.py +++ b/backend/players.py @@ -120,19 +120,23 @@ class Player: self.pending_action = PendingAction.DRAW self.notify_self() - def draw(self): + def draw(self, pile): if self.pending_action != PendingAction.DRAW: return self.pending_action = PendingAction.PLAY - for i in range(2): - card: cards.Card = self.game.deck.draw() - self.hand.append(card) - if i == 1 and isinstance(self.character, characters.BlackJack): - for p in self.game.players: - if p != self: - p.notify_card(self, card) - if card.suit == cards.Suit.HEARTS or card.suit == cards.Suit.DIAMONDS: - self.game.deck.draw(self.hand.append(card)) + if pile == 'scrap' and isinstance(self.character, characters.PedroRamirez): + self.hand.append(self.game.deck.draw_from_scrap_pile()) + self.hand.append(self.game.deck.draw()) + else: + for i in range(2): + card: cards.Card = self.game.deck.draw() + self.hand.append(card) + if i == 1 and isinstance(self.character, characters.BlackJack): + for p in self.game.players: + if p != self: + p.notify_card(self, card) + if card.suit == cards.Suit.HEARTS or card.suit == cards.Suit.DIAMONDS: + self.hand.append(self.game.deck.draw()) self.notify_self() def pick(self): diff --git a/frontend/src/components/Deck.vue b/frontend/src/components/Deck.vue index bc8f729..8e1ee8f 100644 --- a/frontend/src/components/Deck.vue +++ b/frontend/src/components/Deck.vue @@ -8,7 +8,7 @@