visibility update
This commit is contained in:
parent
31508dbb94
commit
d861a1869a
@ -74,7 +74,8 @@ class Game:
|
|||||||
def get_visible_players(self, player):
|
def get_visible_players(self, player):
|
||||||
i = self.players.index(player)
|
i = self.players.index(player)
|
||||||
sight = player.get_sight()
|
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):
|
def next_player(self):
|
||||||
return self.players[(self.turn + 1) % len(self.players)]
|
return self.players[(self.turn + 1) % len(self.players)]
|
||||||
|
@ -70,6 +70,7 @@ class Player:
|
|||||||
ser.pop('sio')
|
ser.pop('sio')
|
||||||
ser.pop('sid')
|
ser.pop('sid')
|
||||||
self.sio.emit('self', room=self.sid, data=json.dumps(ser, default=lambda o: o.__dict__))
|
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):
|
def play_turn(self):
|
||||||
print(f'I {self.name} was notified that it is my turn')
|
print(f'I {self.name} was notified that it is my turn')
|
||||||
|
@ -4,7 +4,7 @@
|
|||||||
<h3>Giocatori</h3>
|
<h3>Giocatori</h3>
|
||||||
<div style="display:flex">
|
<div style="display:flex">
|
||||||
<!-- <div style="position: relative;width:260pt;height:400pt;"> -->
|
<!-- <div style="position: relative;width:260pt;height:400pt;"> -->
|
||||||
<Card v-for="p in playersTable" v-bind:key="p" :card="p.card"/>
|
<Card v-for="p in playersTable" v-bind:key="p.card.name" :card="p.card"/>
|
||||||
<!-- :style="p.style"/> -->
|
<!-- :style="p.style"/> -->
|
||||||
<!-- </div> -->
|
<!-- </div> -->
|
||||||
<Card v-if="startGameCard" :card="startGameCard" @click.native="startGame"/>
|
<Card v-if="startGameCard" :card="startGameCard" @click.native="startGame"/>
|
||||||
@ -44,6 +44,7 @@ export default {
|
|||||||
started: false,
|
started: false,
|
||||||
players: [],
|
players: [],
|
||||||
messages: [],
|
messages: [],
|
||||||
|
distances: {},
|
||||||
availableCharacters: [],
|
availableCharacters: [],
|
||||||
self: {},
|
self: {},
|
||||||
}),
|
}),
|
||||||
@ -51,18 +52,27 @@ export default {
|
|||||||
room(data) {
|
room(data) {
|
||||||
this.lobbyName = data.name
|
this.lobbyName = data.name
|
||||||
this.started = data.started
|
this.started = data.started
|
||||||
this.players = data.players
|
this.players = data.players.map(x => {
|
||||||
|
return {
|
||||||
|
name:x,
|
||||||
|
}
|
||||||
|
})
|
||||||
},
|
},
|
||||||
characters(data){
|
characters(data){
|
||||||
this.availableCharacters = JSON.parse(data)
|
this.availableCharacters = JSON.parse(data)
|
||||||
},
|
},
|
||||||
start() {
|
start() {
|
||||||
this.started = true;
|
this.started = true;
|
||||||
|
},
|
||||||
|
self_vis(vis) {
|
||||||
|
console.log('received visibility update')
|
||||||
|
console.log(vis)
|
||||||
|
this.players = JSON.parse(vis)
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
computed: {
|
computed: {
|
||||||
startGameCard() {
|
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 {
|
return {
|
||||||
name: 'Start',
|
name: 'Start',
|
||||||
icon: '▶️',
|
icon: '▶️',
|
||||||
@ -76,6 +86,7 @@ export default {
|
|||||||
return this.availableCharacters.length > 0;
|
return this.availableCharacters.length > 0;
|
||||||
},
|
},
|
||||||
playersTable() {
|
playersTable() {
|
||||||
|
console.log('update players')
|
||||||
return this.players.map((x,i) => {
|
return this.players.map((x,i) => {
|
||||||
let offsetAngle = 360.0 / this.players.length
|
let offsetAngle = 360.0 / this.players.length
|
||||||
let rotateAngle = (i) * offsetAngle
|
let rotateAngle = (i) * offsetAngle
|
||||||
@ -85,10 +96,10 @@ export default {
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
methods: {
|
methods: {
|
||||||
getPlayerCard(username) {
|
getPlayerCard(player) {
|
||||||
return {
|
return {
|
||||||
name: username,
|
name: player.name,
|
||||||
number: (this.username == username) ? 'YOU' : (this.players[0] == username) ? 'OWNER' :'',
|
number: ((this.username == player.name) ? 'YOU' : (this.players[0].name == player.name) ? 'OWNER' :'') + (player.dist ? `${player.dist}⛰` : ''),
|
||||||
icon: '🤠',
|
icon: '🤠',
|
||||||
is_character: true,
|
is_character: true,
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user