distance
This commit is contained in:
parent
f45c440348
commit
5674b9f541
@ -70,12 +70,12 @@ class Game:
|
||||
self.players[i].notify_self()
|
||||
self.play_turn()
|
||||
|
||||
def get_visible_players(self, player):
|
||||
def get_visible_players(self, player:Player):
|
||||
i = self.players.index(player)
|
||||
sight = player.get_sight()
|
||||
return [{
|
||||
'name': self.players[j].name,
|
||||
'dist': min(abs(i - j), abs(i - len(self.players) - j)) + self.players[j].get_visibility(),
|
||||
'dist': min(abs(i - j), (i+ abs(j-len(self.players))), (j+ abs(i-len(self.players)))) + self.players[j].get_visibility(),
|
||||
'lives': self.players[j].lives,
|
||||
'max_lives': self.players[j].max_lives,
|
||||
} for j in range(len(self.players)) if i != j]
|
||||
@ -123,7 +123,7 @@ class Game:
|
||||
def emporio(self):
|
||||
self.available_cards = [self.deck.draw() for i in range(len(self.players))]
|
||||
self.players[self.turn].pending_action = players.PendingAction.CHOOSE
|
||||
self.players[self.turn].available_cards = [self.deck.draw() for i in range(len(self.players))]
|
||||
self.players[self.turn].available_cards = self.available_cards
|
||||
self.players[self.turn].notify_self()
|
||||
|
||||
def respond_emporio(self, player, i):
|
||||
@ -175,6 +175,8 @@ class Game:
|
||||
|
||||
def player_death(self, player: players.Player):
|
||||
print(f'player {player.name} died')
|
||||
if (self.waiting_for > 0):
|
||||
self.responders_did_respond_resume_turn()
|
||||
for c in player.hand:
|
||||
self.deck.scrap(c)
|
||||
for c in player.equipment:
|
||||
|
@ -84,6 +84,7 @@ class Player:
|
||||
ser.pop('on_failed_response_cb')
|
||||
# ser.pop('expected_response')
|
||||
ser.pop('attacker')
|
||||
ser['sight'] = self.get_sight()
|
||||
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()
|
||||
@ -371,11 +372,13 @@ class Player:
|
||||
|
||||
def get_sight(self):
|
||||
aim = 0
|
||||
range = 0
|
||||
for card in self.equipment:
|
||||
aim += card.sight_mod
|
||||
if card.is_weapon:
|
||||
aim += card.range
|
||||
return 1 + self.character.sight_mod + aim
|
||||
range += card.range
|
||||
else:
|
||||
aim += card.sight_mod
|
||||
return max(1, range) + aim + self.character.sight_mod
|
||||
|
||||
def get_visibility(self):
|
||||
covers = 0
|
||||
|
@ -56,12 +56,14 @@ export default {
|
||||
pending_action: null,
|
||||
card_against: null,
|
||||
has_played_bang: false,
|
||||
visiblePlayers: [],
|
||||
playersDistances: [],
|
||||
is_my_turn: false,
|
||||
expected_response: null,
|
||||
shouldChooseCard: false,
|
||||
available_cards: [],
|
||||
win_status: undefined,
|
||||
range: 1,
|
||||
sight: 1,
|
||||
}),
|
||||
sockets: {
|
||||
role(role) {
|
||||
@ -81,6 +83,7 @@ export default {
|
||||
this.expected_response = self.expected_response
|
||||
this.available_cards = self.available_cards
|
||||
this.win_status = self.win_status
|
||||
this.sight = self.sight
|
||||
if (this.pending_action == 5 && self.target_p) {
|
||||
this.chooseCardFromPlayer(self.target_p)
|
||||
} else if (this.pending_action == 5) {
|
||||
@ -90,7 +93,13 @@ export default {
|
||||
self_vis(vis) {
|
||||
console.log('received visibility update')
|
||||
console.log(vis)
|
||||
this.visiblePlayers = JSON.parse(vis).map(player => {
|
||||
this.playersDistances = JSON.parse(vis)
|
||||
},
|
||||
},
|
||||
computed:{
|
||||
visiblePlayers() {
|
||||
this.range;
|
||||
return this.playersDistances.filter(x=> x.dist <= this.range).map(player => {
|
||||
return {
|
||||
name: player.name,
|
||||
number: player.dist !== undefined ? `${player.dist}⛰` : '',
|
||||
@ -98,8 +107,6 @@ export default {
|
||||
is_character: true,
|
||||
}})
|
||||
},
|
||||
},
|
||||
computed:{
|
||||
hasToPickResponse() {
|
||||
return !this.is_my_turn && this.pending_action == 0
|
||||
},
|
||||
@ -133,6 +140,12 @@ export default {
|
||||
if (this.pending_action == 2) {
|
||||
if (card.need_target &&
|
||||
!(card.name == 'Bang!' && (this.has_played_bang && this.equipment.filter(x => x.name == 'Volcanic').length == 0))) {
|
||||
if (card.name == 'Panico!' || (card.name == 'Bang!' && (this.has_played_bang && this.equipment.filter(x => x.name == 'Volcanic').length == 0)))
|
||||
this.range = 1
|
||||
else if (card.name == 'Bang!')
|
||||
this.range = this.sight
|
||||
else
|
||||
this.range = 999
|
||||
this.card_against = card
|
||||
} else {
|
||||
this.really_play_card(card, null)
|
||||
|
Loading…
Reference in New Issue
Block a user