diff --git a/backend/game.py b/backend/game.py index 5f86d17..93904b2 100644 --- a/backend/game.py +++ b/backend/game.py @@ -133,6 +133,18 @@ class Game: for p in self.players: p.notify_self() self.players_map = {c.name: i for i, c in enumerate(self.players)} + + def notify_all(self): + data = [{ + 'name': p.name, + 'ncards': len(p.hand), + 'equipment': [e.__dict__ for e in p.equipment], + 'lives': p.lives, + 'max_lives': p.max_lives, + 'is_sheriff': isinstance(p.role, roles.Sheriff) + } for p in self.players] + self.sio.emit('players_update', room=self.name, data=data) + # game = Game() diff --git a/backend/players.py b/backend/players.py index c377c5a..abcd372 100644 --- a/backend/players.py +++ b/backend/players.py @@ -80,6 +80,7 @@ class Player: ser.pop('expected_response') self.sio.emit('self', room=self.sid, data=json.dumps(ser, default=lambda o: o.__dict__)) self.sio.emit('self_vis', room=self.sid, data=json.dumps(self.game.get_visible_players(self), default=lambda o: o.__dict__)) + self.game.notify_all() def play_turn(self): if self.lives == 0: diff --git a/frontend/src/components/Lobby.vue b/frontend/src/components/Lobby.vue index e3f8a0f..a7161a2 100644 --- a/frontend/src/components/Lobby.vue +++ b/frontend/src/components/Lobby.vue @@ -3,11 +3,14 @@

Lobby: {{ lobbyName }}

Giocatori (tu sei {{username}})

+ - +
+ + +
-
@@ -26,6 +29,7 @@ import Chooser from './Chooser.vue' import Chat from './Chat.vue' import Player from './Player.vue' import Deck from './Deck.vue' +import TinyHand from './TinyHand.vue' export default { name: 'Lobby', @@ -35,6 +39,7 @@ export default { Chat, Player, Deck, + TinyHand, }, props: { username: String @@ -54,21 +59,26 @@ export default { this.started = data.started this.players = data.players.map(x => { return { - name:x, + name: x, + ncards: 0, } }) }, - characters(data){ + characters(data) { this.availableCharacters = JSON.parse(data) }, start() { this.started = true; }, - self_vis(vis) { - console.log('received visibility update') - console.log(vis) - this.players = JSON.parse(vis) + players_update(data) { + console.log(data) + this.players = data }, + // self_vis(vis) { + // console.log('received visibility update') + // console.log(vis) + // this.players = JSON.parse(vis) + // }, }, computed: { startGameCard() { @@ -91,7 +101,11 @@ export default { let offsetAngle = 360.0 / this.players.length let rotateAngle = (i) * offsetAngle let size = 130 - return {card:this.getPlayerCard(x), style: `position:absolute;transform: rotate(${rotateAngle}deg) translate(0, -${size}pt) rotate(-${rotateAngle}deg) translate(${size}pt,${size}pt)`} + return { + card:this.getPlayerCard(x), + style: `position:absolute;transform: rotate(${rotateAngle}deg) translate(0, -${size}pt) rotate(-${rotateAngle}deg) translate(${size}pt,${size}pt)`, + ...x + } }) } }, diff --git a/frontend/src/components/TinyHand.vue b/frontend/src/components/TinyHand.vue new file mode 100644 index 0000000..e623d41 --- /dev/null +++ b/frontend/src/components/TinyHand.vue @@ -0,0 +1,20 @@ + + + + \ No newline at end of file