diff --git a/backend/game.py b/backend/game.py
index c298d8a..f0c4e77 100644
--- a/backend/game.py
+++ b/backend/game.py
@@ -74,7 +74,8 @@ class Game:
def get_visible_players(self, player):
i = self.players.index(player)
sight = player.get_sight()
- return [self.players[j] for j in range(len(self.players)) if i != j and min(abs(i - j) - 1, abs(i - len(self.players) - j)) + self.players[j].get_visibility() <= sight]
+ return [{'name': self.players[j].name, 'dist': min(abs(i - j) - 1, abs(i - len(self.players) - j)) + self.players[j].get_visibility()}
+ for j in range(len(self.players)) if i != j and min(abs(i - j) - 1, abs(i - len(self.players) - j)) + self.players[j].get_visibility() <= sight]
def next_player(self):
return self.players[(self.turn + 1) % len(self.players)]
diff --git a/backend/players.py b/backend/players.py
index a16f830..8b86e8e 100644
--- a/backend/players.py
+++ b/backend/players.py
@@ -70,6 +70,7 @@ class Player:
ser.pop('sio')
ser.pop('sid')
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__))
def play_turn(self):
print(f'I {self.name} was notified that it is my turn')
diff --git a/frontend/src/components/Lobby.vue b/frontend/src/components/Lobby.vue
index db2b821..e5be4df 100644
--- a/frontend/src/components/Lobby.vue
+++ b/frontend/src/components/Lobby.vue
@@ -4,7 +4,7 @@
Giocatori
-
+
@@ -44,6 +44,7 @@ export default {
started: false,
players: [],
messages: [],
+ distances: {},
availableCharacters: [],
self: {},
}),
@@ -51,18 +52,27 @@ export default {
room(data) {
this.lobbyName = data.name
this.started = data.started
- this.players = data.players
+ this.players = data.players.map(x => {
+ return {
+ name:x,
+ }
+ })
},
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)
}
},
computed: {
startGameCard() {
- if (!this.started && this.players.length > 2 && this.players[0] == this.username) {
+ if (!this.started && this.players.length > 2 && this.players[0].name == this.username) {
return {
name: 'Start',
icon: '▶️',
@@ -76,6 +86,7 @@ export default {
return this.availableCharacters.length > 0;
},
playersTable() {
+ console.log('update players')
return this.players.map((x,i) => {
let offsetAngle = 360.0 / this.players.length
let rotateAngle = (i) * offsetAngle
@@ -85,10 +96,10 @@ export default {
}
},
methods: {
- getPlayerCard(username) {
+ getPlayerCard(player) {
return {
- name: username,
- number: (this.username == username) ? 'YOU' : (this.players[0] == username) ? 'OWNER' :'',
+ name: player.name,
+ number: ((this.username == player.name) ? 'YOU' : (this.players[0].name == player.name) ? 'OWNER' :'') + (player.dist ? `${player.dist}⛰` : ''),
icon: '🤠',
is_character: true,
}