From 5907379db8bbf9bdaac7099f2a08272133cd5fa1 Mon Sep 17 00:00:00 2001 From: Alberto Xamin Date: Sat, 28 Nov 2020 11:20:19 +0100 Subject: [PATCH] distribute roles before available characters --- backend/bang/game.py | 14 ++++++++------ frontend/src/components/Lobby.vue | 12 ------------ frontend/src/components/Player.vue | 9 +++++++++ 3 files changed, 17 insertions(+), 18 deletions(-) diff --git a/backend/bang/game.py b/backend/bang/game.py index 7845820..7c69cbe 100644 --- a/backend/bang/game.py +++ b/backend/bang/game.py @@ -64,7 +64,13 @@ class Game: self.readyCount += 1 self.notify_room() if self.readyCount == len(self.players): - self.distribute_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}, la sua abilità speciale è: {self.players[i].character.desc}') + self.players[i].prepare() + for k in range(self.players[i].max_lives): + self.players[i].hand.append(self.deck.draw()) + self.players[i].notify_self() + self.players[self.turn].play_turn() def choose_characters(self): char_cards = random.sample(characters.all_characters(), len(self.players)*2) @@ -81,6 +87,7 @@ class Game: self.started = True self.deck = Deck(self) self.initial_players = len(self.players) + self.distribute_roles() self.choose_characters() def distribute_roles(self): @@ -96,17 +103,12 @@ 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}, la sua abilità speciale è: {self.players[i].character.desc}') 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): - self.players[i].hand.append(self.deck.draw()) self.players[i].notify_self() - self.play_turn() def attack_others(self, attacker: players.Player): attacker.pending_action = players.PendingAction.WAIT diff --git a/frontend/src/components/Lobby.vue b/frontend/src/components/Lobby.vue index 9976d0f..8457c6e 100644 --- a/frontend/src/components/Lobby.vue +++ b/frontend/src/components/Lobby.vue @@ -39,7 +39,6 @@ - @@ -74,7 +73,6 @@ export default { players: [], messages: [], distances: {}, - availableCharacters: [], self: {}, hasToChoose: false, target_p: '', @@ -99,9 +97,6 @@ export default { } }) }, - characters(data) { - this.availableCharacters = JSON.parse(data) - }, start() { this.started = true; }, @@ -130,9 +125,6 @@ export default { } return null; }, - showChooser() { - return this.availableCharacters.length > 0; - }, playersTable() { console.log('update players') return this.players.map((x,i) => { @@ -174,10 +166,6 @@ export default { this.started = true; this.$socket.emit('start_game') }, - setCharacter(char) { - this.availableCharacters = [] - this.$socket.emit('set_character', char.name) - }, choose(player_name) { console.log('choose from' + player_name) this.target_p = player_name diff --git a/frontend/src/components/Player.vue b/frontend/src/components/Player.vue index a7da1f0..f996dba 100644 --- a/frontend/src/components/Player.vue +++ b/frontend/src/components/Player.vue @@ -33,6 +33,7 @@ + @@ -60,6 +61,7 @@ export default { data: () => ({ my_role: null, character: null, + availableCharacters: [], equipment: [], hand: [], lives: 0, @@ -93,6 +95,9 @@ export default { this.my_role.is_back = true this.show_role = true }, + characters(data) { + this.availableCharacters = JSON.parse(data) + }, self(self) { self = JSON.parse(self) this.name = self.name @@ -190,6 +195,10 @@ export default { } }, methods: { + setCharacter(char) { + this.availableCharacters = [] + this.$socket.emit('set_character', char.name) + }, sidScrap(c) { this.sidScrapForHealth.push(this.hand.indexOf(c)) if (this.sidScrapForHealth.length == 2) {