From 07df5d708165c4ba78c1f677fdb2739d3e09f300 Mon Sep 17 00:00:00 2001 From: Alberto Xamin Date: Fri, 20 Nov 2020 15:15:36 +0100 Subject: [PATCH] character chooser --- backend/__init__.py | 12 +++++++- backend/game.py | 3 +- backend/players.py | 12 +++++--- frontend/src/App.vue | 5 +-- frontend/src/components/Card.vue | 1 + frontend/src/components/Chooser.vue | 47 +++++++++++++++++++++++++++++ frontend/src/components/Lobby.vue | 46 +++++++++++++++++++--------- 7 files changed, 103 insertions(+), 23 deletions(-) create mode 100644 frontend/src/components/Chooser.vue diff --git a/backend/__init__.py b/backend/__init__.py index ff4a655..5fd5bbe 100644 --- a/backend/__init__.py +++ b/backend/__init__.py @@ -21,7 +21,7 @@ def connect(sid, environ): @sio.event def set_username(sid, username): - sio.save_session(sid, Player(username, sid)) + sio.save_session(sid, Player(username, sid, sio)) print(f'{sid} is now {username}') advertise_lobbies() @@ -60,5 +60,15 @@ def chat_message(sid, msg): ses = sio.get_session(sid) sio.emit('chat_message', room=ses.game.name, data=f'[{ses.name}]: {msg}') +@sio.event +def start_game(sid): + ses = sio.get_session(sid) + ses.game.start_game() + +@sio.event +def set_character(sid, name): + ses = sio.get_session(sid) + ses.set_character(name) + if __name__ == '__main__': eventlet.wsgi.server(eventlet.listen(('', 5001)), app) diff --git a/backend/game.py b/backend/game.py index ac24620..f2025ac 100644 --- a/backend/game.py +++ b/backend/game.py @@ -35,11 +35,10 @@ class Game: self.sio.emit('room', room=self.name, data={'name': self.name, 'started': self.started, 'players': [p.name for p in self.players]}) self.sio.emit('chat_message', room=self.name, data=f'{player.name} è entrato nella lobby.') - def choose_characters(self): char_cards = random.sample(all_characters(), len(self.players)*2) for i in range(len(self.players)): - self.players[i].set_available_character(char_cards[i*2:i*2+2]) + self.players[i].set_available_character(char_cards[i * 2 : i * 2 + 2]) def start_game(self): print('GAME IS STARING') diff --git a/backend/players.py b/backend/players.py index b69c32a..1ed0003 100644 --- a/backend/players.py +++ b/backend/players.py @@ -14,10 +14,11 @@ class PendingAction(IntEnum): WAIT = 4 class Player: - def __init__(self, name, sid): + def __init__(self, name, sid, sio): super().__init__() self.name = name self.sid = sid + self.sio = sio self.hand: cards.Card = [] self.equipment: cards.Card = [] self.role: roles.Role = None @@ -43,10 +44,12 @@ class Player: self.role = role print(f'I {self.name} am a {role.name}, my goal is "{role.goal}"') - def set_character(self, character: characters.Character): + def set_character(self, character: str): + print(self.available_characters, character) + self.character = next(x for x in self.available_characters if x.name==character) self.available_characters = [] - self.character = character - print(f'I {self.name} chose character {character.name}') + print(f'I {self.name} chose character {self.character.name}') + self.sio.emit('chat_message', room=self.game.name, data=f'{self.name} ha scelto il personaggio.') def prepare(self): self.max_lives = self.character.max_lives + self.role.health_mod @@ -57,6 +60,7 @@ class Player: def set_available_character(self, available): self.available_characters = available print(f'I {self.name} have to choose between {available}') + self.sio.emit('characters', room=self.sid, data=json.dumps(available, default=lambda o: o.__dict__)) def play_turn(self): print(f'I {self.name} was notified that it is my turn') diff --git a/frontend/src/App.vue b/frontend/src/App.vue index 8e398e9..4938b09 100644 --- a/frontend/src/App.vue +++ b/frontend/src/App.vue @@ -104,8 +104,9 @@ export default { this.$socket.emit('join_room', lobby.name) this.isInLobby = true; }, - // room() { - // }, + init() { + location.reload(); + }, } } diff --git a/frontend/src/components/Card.vue b/frontend/src/components/Card.vue index 6340c56..60d043d 100644 --- a/frontend/src/components/Card.vue +++ b/frontend/src/components/Card.vue @@ -30,6 +30,7 @@ export default { border-radius: 6pt; position: relative; transition: all 0.5s ease-in-out; + color: #333; } .card.back{ color:white; diff --git a/frontend/src/components/Chooser.vue b/frontend/src/components/Chooser.vue new file mode 100644 index 0000000..a54dd42 --- /dev/null +++ b/frontend/src/components/Chooser.vue @@ -0,0 +1,47 @@ + + + + + + diff --git a/frontend/src/components/Lobby.vue b/frontend/src/components/Lobby.vue index 54147da..4143d89 100644 --- a/frontend/src/components/Lobby.vue +++ b/frontend/src/components/Lobby.vue @@ -3,7 +3,7 @@

Lobby: {{ lobbyName }}

Giocatori

- +

Chat

@@ -14,16 +14,19 @@ +