From 92f948719ecaf6d3d0bec92926f146cb1707fb6d Mon Sep 17 00:00:00 2001 From: Giulio Date: Wed, 25 Nov 2020 21:36:27 +0100 Subject: [PATCH 1/9] fix dancing div --- frontend/src/components/Lobby.vue | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/frontend/src/components/Lobby.vue b/frontend/src/components/Lobby.vue index 091cd04..fa2a236 100644 --- a/frontend/src/components/Lobby.vue +++ b/frontend/src/components/Lobby.vue @@ -3,8 +3,8 @@

Lobby: {{ lobbyName }}

Giocatori (tu sei {{username}})

-
- Stanza Privata +
+ Stanza Privata
From 7cd89837b8a652f93750523e96dbc592408a6c71 Mon Sep 17 00:00:00 2001 From: Alberto Xamin Date: Wed, 25 Nov 2020 21:52:35 +0100 Subject: [PATCH 2/9] fix favicon serve error --- backend/__init__.py | 1 + 1 file changed, 1 insertion(+) diff --git a/backend/__init__.py b/backend/__init__.py index 65f56e3..f2a30fd 100644 --- a/backend/__init__.py +++ b/backend/__init__.py @@ -10,6 +10,7 @@ from players import Player sio = socketio.Server(cors_allowed_origins="*") app = socketio.WSGIApp(sio, static_files={ '/': {'content_type': 'text/html', 'filename': 'index.html'}, + '/favicon.ico': {'filename': 'favicon.ico'}, '/css': './css', '/js': './js', }) From e0a23340ca9c1fb60bd7290faa2f35fcce8cb1ec Mon Sep 17 00:00:00 2001 From: Alberto Xamin Date: Wed, 25 Nov 2020 22:27:07 +0100 Subject: [PATCH 3/9] fix chat message --- backend/cards.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/backend/cards.py b/backend/cards.py index 580ce46..696e97f 100644 --- a/backend/cards.py +++ b/backend/cards.py @@ -42,7 +42,7 @@ class Card(ABC): return super().__str__() def play_card(self, player, against): - contro = f'contro {against}' if against else '' + contro = f' contro {against}' if against else '' player.sio.emit('chat_message', room=player.game.name, data=f'{player.name} ha giocato {self.name}{contro}.') return True From 904956a46fe2e5c3e9365c7d859241a9b3f509b9 Mon Sep 17 00:00:00 2001 From: Alberto Xamin Date: Wed, 25 Nov 2020 22:35:40 +0100 Subject: [PATCH 4/9] fix slab the killer killing an outlaw --- backend/players.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/backend/players.py b/backend/players.py index 1287541..20e431a 100644 --- a/backend/players.py +++ b/backend/players.py @@ -431,7 +431,8 @@ class Player: else: self.on_failed_response_cb() self.game.responders_did_respond_resume_turn() - self.attacker = None + if self.mancato_needed <= 0: + self.attacker = None def get_sight(self, countWeapon=True): if not self.character: From e6119394cdff0a1f81fc6c01f7c881507573cafb Mon Sep 17 00:00:00 2001 From: Alberto Xamin Date: Wed, 25 Nov 2020 23:33:54 +0100 Subject: [PATCH 5/9] fix jesse jones --- backend/players.py | 2 +- frontend/src/main.js | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/backend/players.py b/backend/players.py index 20e431a..b21c9cc 100644 --- a/backend/players.py +++ b/backend/players.py @@ -160,7 +160,7 @@ class Player: randrange(0, len(self.game.get_player_named(pile).hand)))) self.game.get_player_named(pile).notify_self() self.sio.emit('chat_message', room=self.game.name, - data=f'{self.name} ha pescato la prima carta dalla mano di {self.attacker.name}.') + data=f'{self.name} ha pescato la prima carta dalla mano di {pile}.') self.hand.append(self.game.deck.draw()) else: for i in range(2): diff --git a/frontend/src/main.js b/frontend/src/main.js index 161bab4..d86bdbf 100644 --- a/frontend/src/main.js +++ b/frontend/src/main.js @@ -5,7 +5,7 @@ Vue.config.productionTip = false import VueSocketIO from 'vue-socket.io' Vue.use(new VueSocketIO({ debug: Vue.config.devtools, - connection: Vue.config.devtools ? 'http://localhost:5001' : window.location.origin, + connection: Vue.config.devtools ? `http://${window.location.hostname}:5001` : window.location.origin, })) import PrettyCheckbox from 'pretty-checkbox-vue'; From b06d7efa40fd7c9034d8421f74e9ec9a279b7a34 Mon Sep 17 00:00:00 2001 From: Alberto Xamin Date: Wed, 25 Nov 2020 23:45:34 +0100 Subject: [PATCH 6/9] fix mancato, cat balou, renegade --- backend/cards.py | 4 ++-- backend/roles.py | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/backend/cards.py b/backend/cards.py index 696e97f..7b7b478 100644 --- a/backend/cards.py +++ b/backend/cards.py @@ -170,7 +170,7 @@ class CatBalou(Card): self.need_target = True def play_card(self, player, against): - if against != None: + if against != None and (len(player.game.get_player_named(against).hand) + len(player.game.get_player_named(against).equipment)) > 0: super().play_card(player, against=against) from players import PendingAction player.pending_action = PendingAction.CHOOSE @@ -272,7 +272,7 @@ class Panico(Card): self.desc = "Pesca una carta da un giocatore a distanza 1, scegli a caso dalla mano, oppure fra quelle che ha in gioco" def play_card(self, player, against): - if against != None: + if against != None and (len(player.game.get_player_named(against).hand) + len(player.game.get_player_named(against).equipment)) > 0: super().play_card(player, against=against) from players import PendingAction player.pending_action = PendingAction.CHOOSE diff --git a/backend/roles.py b/backend/roles.py index 49eba1a..834f173 100644 --- a/backend/roles.py +++ b/backend/roles.py @@ -75,7 +75,7 @@ class Renegade(Role): return True elif initial_players == 3 and attacker_role != None: return isinstance(dead_role, Outlaw) and isinstance(attacker_role, Renegade) - elif initial_players != 3 and len(alive_players) == 1 and isinstance(alive_players[0], Renegade): + elif initial_players != 3 and len(alive_players) == 1 and isinstance(alive_players[0].role, Renegade): print("The Renegade won!") return True return False From 7936fdf6498b2b380f8b7f4eb9914c1b6e9f84e8 Mon Sep 17 00:00:00 2001 From: Alberto Xamin Date: Thu, 26 Nov 2020 00:19:27 +0100 Subject: [PATCH 7/9] fix lobby error --- backend/__init__.py | 4 ++-- backend/cards.py | 29 ++++++++++++++++++++++++++++- backend/players.py | 28 ++-------------------------- 3 files changed, 32 insertions(+), 29 deletions(-) diff --git a/backend/__init__.py b/backend/__init__.py index f2a30fd..3a2f3f7 100644 --- a/backend/__init__.py +++ b/backend/__init__.py @@ -54,7 +54,7 @@ def disconnect(sid): @sio.event def create_room(sid, room_name): while len([g for g in games if g.name == room_name]): - room_name += '_1' + room_name += f'_{random.randint(0,100)}' sio.leave_room(sid, 'lobby') sio.enter_room(sid, room_name) g = Game(room_name, sio) @@ -79,7 +79,7 @@ def join_room(sid, room): sio.leave_room(sid, 'lobby') sio.enter_room(sid, room_name) while len([p for p in games[i].players if p.name == sio.get_session(sid).name]): - sio.get_session(sid).name += '_1' + sio.get_session(sid).name += f'_{random.randint(0,100)}' games[i].add_player(sio.get_session(sid)) advertise_lobbies() diff --git a/backend/cards.py b/backend/cards.py index 7b7b478..760e62f 100644 --- a/backend/cards.py +++ b/backend/cards.py @@ -41,7 +41,27 @@ class Card(ABC): return f'{self.name} {char}{self.number}' return super().__str__() - def play_card(self, player, against): + def play_card(self, player, against):#self --> carta + if self.is_equipment: + if self.is_weapon: + has_weapon = False + for i in range(len(player.equipment)): + if player.equipment[i].is_weapon: + player.game.deck.scrap(player.equipment[i]) + player.equipment[i] = self + has_weapon = True + break + if not has_weapon: + player.equipment.append(self) + elif self.name in [c.name for c in player.equipment if not isinstance(c, Dinamite)]: + for i in range(len(player.equipment)): + print('tipo',type(self)) + if type(player.equipment[i]) == type(self): + player.game.deck.scrap(self.equipment[i]) + player.equipment[i] = self + break + else: + player.equipment.append(self) contro = f' contro {against}' if against else '' player.sio.emit('chat_message', room=player.game.name, data=f'{player.name} ha giocato {self.name}{contro}.') @@ -83,6 +103,13 @@ class Prigione(Card): self.desc = "Equipaggia questa carta a un altro giocatore, tranne lo Sceriffo. Il giocatore scelto all'inizio del suo turno, prima di pescare dovrà estrarre: se esce Cuori scarta questa carta e gioca normalmente il turno, altrimenti scarta questa carta e salta il turno" self.need_target = True + def play_card(self, player, against): + if against != None and not isinstance(player.game.get_player_named(against).role, r.Sheriff): + player.sio.emit('chat_message', room=player.game.name, + data=f'{self.name} ha giocato {self.name} contro {against}.') + player.game.get_player_named(against).equipment.append(self) + player.game.get_player_named(against).notify_self() + return False class Remington(Card): def __init__(self, suit, number): diff --git a/backend/players.py b/backend/players.py index b21c9cc..0c5fe0f 100644 --- a/backend/players.py +++ b/backend/players.py @@ -251,32 +251,8 @@ class Player: return card: cs.Card = self.hand.pop(hand_index) print(self.name, 'is playing ', card, ' against:', against) - if isinstance(card, cs.Prigione) and not isinstance(self.game.get_player_named(against).role, r.Sheriff): - self.sio.emit('chat_message', room=self.game.name, - data=f'{self.name} ha giocato {card.name} contro {against}.') - self.game.get_player_named(against).equipment.append(card) - self.game.get_player_named(against).notify_self() - elif card.is_equipment: - if card.is_weapon: - has_weapon = False - for i in range(len(self.equipment)): - if self.equipment[i].is_weapon: - self.game.deck.scrap(self.equipment[i]) - self.equipment[i] = card - has_weapon = True - break - if not has_weapon: - self.equipment.append(card) - elif card.name in [c.name for c in self.equipment if not isinstance(c, cs.Dinamite)]: - for i in range(len(self.equipment)): - if type(self.equipment[i]) == type(card): - self.game.deck.scrap(self.equipment[i]) - self.equipment[i] = card - break - else: - self.equipment.append(card) - else: - did_play_card = card.play_card(self, against) + did_play_card = card.play_card(self, against) + if not card.is_equipment: if did_play_card: self.game.deck.scrap(card) else: From 40e4afda7d4d2ffeb8c942fe560464b43091ce81 Mon Sep 17 00:00:00 2001 From: Alberto Xamin Date: Thu, 26 Nov 2020 00:21:24 +0100 Subject: [PATCH 8/9] fix join started lobby --- backend/__init__.py | 1 + 1 file changed, 1 insertion(+) diff --git a/backend/__init__.py b/backend/__init__.py index 3a2f3f7..1c730cc 100644 --- a/backend/__init__.py +++ b/backend/__init__.py @@ -92,6 +92,7 @@ def chat_message(sid, msg): def start_game(sid): ses = sio.get_session(sid) ses.game.start_game() + advertise_lobbies() @sio.event def set_character(sid, name): From 91e20c8e383df6e5d6632db80a94f67f9adda252 Mon Sep 17 00:00:00 2001 From: Giulio Date: Thu, 26 Nov 2020 00:36:40 +0100 Subject: [PATCH 9/9] fix prigione --- backend/cards.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/backend/cards.py b/backend/cards.py index 760e62f..bbed56d 100644 --- a/backend/cards.py +++ b/backend/cards.py @@ -1,7 +1,7 @@ from typing import List, Set, Dict, Tuple, Optional from abc import ABC, abstractmethod from enum import IntEnum - +import roles as r class Suit(IntEnum): DIAMONDS = 0 # ♦