player death

This commit is contained in:
Alberto Xamin 2020-11-21 13:13:14 +01:00
parent 1e98d4a1dd
commit eabf71e27b
No known key found for this signature in database
GPG Key ID: 4F026F48309500A2
3 changed files with 21 additions and 0 deletions

View File

@ -108,6 +108,18 @@ class Game:
print('scrap') print('scrap')
self.sio.emit('scrap', room=self.name, data=self.deck.peek_scrap_pile().__dict__) self.sio.emit('scrap', room=self.name, data=self.deck.peek_scrap_pile().__dict__)
def player_death(self, player: players.Player):
print(f'player {player.name} died')
self.players.pop(self.players.index(player))
if len(self.players) == 0:
print(f'no players left in game {self.name}')
return True
self.sio.emit('room', room=self.name, data={'name': self.name, 'started': self.started, 'players': [p.name for p in self.players]})
self.sio.emit('chat_message', room=self.name, data=f'{player.name} è morto.')
for p in self.players:
p.notify_self()
self.players_map = {c.name: i for i, c in enumerate(self.players)}
# game = Game() # game = Game()
# p1 = players.Player('p1') # p1 = players.Player('p1')

View File

@ -69,6 +69,8 @@ class Player:
self.sio.emit('characters', room=self.sid, data=json.dumps(available, default=lambda o: o.__dict__)) self.sio.emit('characters', room=self.sid, data=json.dumps(available, default=lambda o: o.__dict__))
def notify_self(self): def notify_self(self):
if self.lives <= 0 and self.max_lives > 0:
self.game.player_death(self)
ser = self.__dict__.copy() ser = self.__dict__.copy()
ser.pop('game') ser.pop('game')
ser.pop('sio') ser.pop('sio')
@ -80,6 +82,8 @@ class Player:
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__))
def play_turn(self): def play_turn(self):
if self.lives == 0:
self.end_turn(forced=True)
print(f'I {self.name} was notified that it is my turn') print(f'I {self.name} was notified that it is my turn')
self.was_shot = False self.was_shot = False
self.is_my_turn = True self.is_my_turn = True

View File

@ -9,6 +9,10 @@
<Card v-for="card in equipment" v-bind:key="card.name+card.number" :card="card" /> <Card v-for="card in equipment" v-bind:key="card.name+card.number" :card="card" />
</transition-group> </transition-group>
</div> </div>
<transition-group name="list" tag="div" style="display: flex; justify-content: space-evenly;">
<span v-for="(n, i) in lives" v-bind:key="n" :alt="i"></span>
<span v-for="(n, i) in (max_lives-lives)" v-bind:key="n" :alt="i">💀</span>
</transition-group>
<div> <div>
<span>Mano</span> <span>Mano</span>
<transition-group name="list" tag="div" class="hand"> <transition-group name="list" tag="div" class="hand">
@ -20,6 +24,7 @@
<p>{{hint}}</p> <p>{{hint}}</p>
<Chooser v-if="card_against" text="Contro chi vuoi giocare la carta" :cards="visiblePlayers" :select="selectAgainst"/> <Chooser v-if="card_against" text="Contro chi vuoi giocare la carta" :cards="visiblePlayers" :select="selectAgainst"/>
<Chooser v-if="pending_action == 3" text="Scegli come rispondere" :cards="respondCards" :select="respond"/> <Chooser v-if="pending_action == 3" text="Scegli come rispondere" :cards="respondCards" :select="respond"/>
<Chooser v-if="lives <= 0 && max_lives > 0" text="SEI MORTO" />
</div> </div>
</template> </template>