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 @@
+
+ Scegli il tuo personaggio
+