syncronize scrap pile

This commit is contained in:
Alberto Xamin 2020-11-20 23:02:23 +01:00
parent a119ce6852
commit 79f363a5a0
No known key found for this signature in database
GPG Key ID: 4F026F48309500A2
4 changed files with 20 additions and 9 deletions

View File

@ -9,6 +9,8 @@ class Character(ABC):
self.visibility_mod = 0 self.visibility_mod = 0
self.pick_mod = 0 self.pick_mod = 0
self.desc = desc self.desc = desc
self.icon = '🤷‍♂️'
self.number = ''.join(['❤️']*self.max_lives)
# @abstractmethod # @abstractmethod
# def on_hurt(self, dmg: int): # def on_hurt(self, dmg: int):
@ -40,6 +42,7 @@ class BlackJack(Character):
class CalamityJanet(Character): class CalamityJanet(Character):
def __init__(self): def __init__(self):
super().__init__("Calamity Janet", max_lives=4) super().__init__("Calamity Janet", max_lives=4)
self.icon = '🤷‍♀️'
class ElGringo(Character): class ElGringo(Character):
def __init__(self): def __init__(self):
@ -72,6 +75,7 @@ class PedroRamirez(Character):
class RoseDoolan(Character): class RoseDoolan(Character):
def __init__(self): def __init__(self):
super().__init__("Rose Doolan", max_lives=4) super().__init__("Rose Doolan", max_lives=4)
self.icon = '🤷‍♀️'
class SidKetchum(Character): class SidKetchum(Character):
def __init__(self): def __init__(self):

View File

@ -3,9 +3,10 @@ import random
from cards import Card, get_starting_deck from cards import Card, get_starting_deck
class Deck: class Deck:
def __init__(self, sio): def __init__(self, game):
super().__init__() super().__init__()
self.cards: List[Card] = get_starting_deck() self.cards: List[Card] = get_starting_deck()
self.game = game
random.shuffle(self.cards) random.shuffle(self.cards)
self.scrap_pile: List[Card] = [] self.scrap_pile: List[Card] = []
print(f'Deck initialized with {len(self.cards)} cards') print(f'Deck initialized with {len(self.cards)} cards')
@ -13,7 +14,7 @@ class Deck:
def peek(self, n_cards: int) -> list: def peek(self, n_cards: int) -> list:
return self.cards[:n_cards] return self.cards[:n_cards]
def peek_scrap_pile(self,) -> Card: def peek_scrap_pile(self) -> Card:
if len(self.scrap_pile) > 0: if len(self.scrap_pile) > 0:
return self.scrap_pile[-1] return self.scrap_pile[-1]
else: else:
@ -35,8 +36,10 @@ class Deck:
def draw_from_scrap_pile(self) -> Card: def draw_from_scrap_pile(self) -> Card:
if len(self.scrap_pile) > 0: if len(self.scrap_pile) > 0:
return self.scrap_pile.pop(0) return self.scrap_pile.pop(0)
self.game.notify_scrap_pile()
else: else:
return self.draw() return self.draw()
def scrap(self, card: Card): def scrap(self, card: Card):
self.scrap_pile.append(card) self.scrap_pile.append(card)
self.game.notify_scrap_pile()

View File

@ -53,7 +53,7 @@ class Game:
self.sio.emit('chat_message', room=self.name, data=f'La partita sta iniziando...') self.sio.emit('chat_message', room=self.name, data=f'La partita sta iniziando...')
self.sio.emit('start', room=self.name) self.sio.emit('start', room=self.name)
self.started = True self.started = True
self.deck = Deck(self.sio) self.deck = Deck(self)
self.choose_characters() self.choose_characters()
def distribute_roles(self): def distribute_roles(self):
@ -86,6 +86,10 @@ class Game:
self.turn = (self.turn + 1) % len(self.players) self.turn = (self.turn + 1) % len(self.players)
self.play_turn() self.play_turn()
def notify_scrap_pile(self):
print('scrap')
self.sio.emit('scrap', room=self.name, data=self.deck.peek_scrap_pile().__dict__)
# game = Game() # game = Game()
# p1 = players.Player('p1') # p1 = players.Player('p1')

View File

@ -1,10 +1,6 @@
<template> <template>
<div class="deck"> <div class="deck">
<!-- <div v-if="lastScrap != null" :class="{ card:true, equipment: lastScrap.is_equipment }"> <card v-if="lastScrap" :card="lastScrap" />
<h3>{{lastScrap.name}}</h3>
<emoji>{{lastScrap.icon}}</emoji>
<span>{{lastScrap.number}}{{lastScrap.suit}}</span>
</div> -->
<div style="position:relative"> <div style="position:relative">
<div class="card back" style="position:absolute; bottom:-3pt;right:-2pt;"/> <div class="card back" style="position:absolute; bottom:-3pt;right:-2pt;"/>
<div class="card back" style="position:absolute; bottom:-1pt;right:-1pt;"/> <div class="card back" style="position:absolute; bottom:-1pt;right:-1pt;"/>
@ -26,12 +22,16 @@ export default {
name: 'PewPew!', name: 'PewPew!',
icon: '💥', icon: '💥',
}, },
lastScrap: null,
pending_action: false, pending_action: false,
}), }),
sockets: { sockets: {
self(self){ self(self){
self = JSON.parse(self) self = JSON.parse(self)
this.pending_action = self.pending_action this.pending_action = self.pending_action
},
scrap(card) {
this.lastScrap = card
} }
}, },
methods: { methods: {