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