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