ready status and expansion
This commit is contained in:
parent
3d88fdeb12
commit
24f7a68024
@ -5,7 +5,7 @@ import bang.cards as cs
|
||||
class Deck:
|
||||
def __init__(self, game):
|
||||
super().__init__()
|
||||
self.cards: List[cs.Card] = cs.get_starting_deck()
|
||||
self.cards: List[cs.Card] = cs.get_starting_deck(game.expansions)
|
||||
self.game = game
|
||||
random.shuffle(self.cards)
|
||||
self.scrap_pile: List[cs.Card] = []
|
||||
|
@ -6,8 +6,31 @@ class Riparo(Mustang):
|
||||
self.name = 'Riparo'
|
||||
self.icon = '⛰'
|
||||
|
||||
class Binocolo(Mirino):
|
||||
def __init__(self, suit, number):
|
||||
super().__init__(suit, number)
|
||||
self.name = 'Binocolo'
|
||||
self.icon = '🔍'
|
||||
|
||||
class Pugno(Card):
|
||||
def __init__(self, suit, number):
|
||||
super().__init__(suit, 'Pugno!', number, range=1)
|
||||
self.icon = '👊'
|
||||
self.desc = "Spara a un giocatore a distanta 1"
|
||||
self.need_target = True
|
||||
|
||||
def play_card(self, player, against):
|
||||
if against != None:
|
||||
import bang.characters as chars
|
||||
super().play_card(player, against=against)
|
||||
player.game.attack(player, against)
|
||||
return True
|
||||
return False
|
||||
|
||||
def get_starting_deck() -> List[Card]:
|
||||
return [
|
||||
#TODO: aggiungere anche le carte normalmente presenti https://bang.dvgiochi.com/cardslist.php?id=3
|
||||
Riparo(Suit.DIAMONDS, 'K'),
|
||||
Mustang(Suit.DIAMONDS, 'K'),
|
||||
]*100
|
||||
Binocolo(Suit.DIAMONDS, 10),
|
||||
Pugno(Suit.SPADES, 10),
|
||||
]
|
||||
|
@ -20,6 +20,7 @@ class Game:
|
||||
self.waiting_for = 0
|
||||
self.initial_players = 0
|
||||
self.password = ''
|
||||
self.expansions = []
|
||||
|
||||
def add_player(self, player: players.Player):
|
||||
if player in self.players or len(self.players) >= 7:
|
||||
@ -27,7 +28,7 @@ class Game:
|
||||
player.join_game(self)
|
||||
self.players.append(player)
|
||||
print(f'Added player {player.name} to game')
|
||||
self.sio.emit('room', room=self.name, data={'name': self.name, 'started': self.started, 'players': [p.name for p in self.players], 'password': self.password})
|
||||
self.sio.emit('room', room=self.name, data={'name': self.name, 'started': self.started, 'players': [{'name':p.name, 'ready': False} for p in self.players], 'password': self.password})
|
||||
self.sio.emit('chat_message', room=self.name, data=f'{player.name} è entrato nella lobby.')
|
||||
|
||||
def set_private(self):
|
||||
@ -36,10 +37,11 @@ class Game:
|
||||
print(self.name, 'is now private pwd', self.password)
|
||||
else:
|
||||
self.password = ''
|
||||
self.sio.emit('room', room=self.name, data={'name': self.name, 'started': self.started, 'players': [p.name for p in self.players], 'password': self.password})
|
||||
self.sio.emit('room', room=self.name, data={'name': self.name, 'started': self.started, 'players': [{'name':p.name, 'ready': False} for p in self.players], 'password': self.password})
|
||||
|
||||
def notify_character_selection(self):
|
||||
self.readyCount += 1
|
||||
self.sio.emit('room', room=self.name, data={'name': self.name, 'started': self.started, 'players': [{'name':p.name, 'ready': p.character!=None} for p in self.players], 'password': self.password})
|
||||
if self.readyCount == len(self.players):
|
||||
self.distribute_roles()
|
||||
|
||||
|
@ -86,7 +86,8 @@ export default {
|
||||
this.password = data.password
|
||||
this.players = data.players.map(x => {
|
||||
return {
|
||||
name: x,
|
||||
name: x.name,
|
||||
ready: x.ready,
|
||||
ncards: 0,
|
||||
}
|
||||
})
|
||||
@ -154,7 +155,7 @@ export default {
|
||||
return {
|
||||
name: player.name,
|
||||
number: ((this.username == player.name) ? 'YOU' : (this.players[0].name == player.name) ? 'OWNER' :'') + (player.dist ? `${player.dist}⛰` : ''),
|
||||
icon: (player.lives === undefined || player.lives > 0) ? (player.is_sheriff ? '⭐' : player.icon || '🤠' ) : '☠️',
|
||||
icon: (player.lives === undefined || player.lives > 0) ? (player.is_sheriff ? '⭐' : player.icon || ((player.ready)?'👍': '🤠') ) : '☠️',
|
||||
is_character: true,
|
||||
}
|
||||
},
|
||||
|
@ -196,12 +196,10 @@ export default {
|
||||
let cant_play_bang = (this.has_played_bang && this.equipment.filter(x => x.name == 'Volcanic').length == 0)
|
||||
if (this.pending_action == 2) {
|
||||
if ((card.need_target || calamity_special) && !((card.name == 'Bang!' || (calamity_special && card.name=='Mancato!')) && cant_play_bang)) {
|
||||
if (card.name == 'Panico!' || (card.name == 'Bang!' && cant_play_bang))
|
||||
this.range = 1
|
||||
else if (card.name == 'Bang!' || calamity_special)
|
||||
if (card.name == 'Bang!' || calamity_special)
|
||||
this.range = this.sight
|
||||
else
|
||||
this.range = 999
|
||||
this.range = card.range
|
||||
this.can_target_sheriff = (card.name !== 'Prigione')
|
||||
if (this.visiblePlayers.length == 0 && this.hand.length > this.lives) {
|
||||
this.really_play_card(card, null)
|
||||
|
Loading…
Reference in New Issue
Block a user