Show who played fails at the end.

pull/11/head
Daniel Perelman 8 years ago
parent 1740f051b1
commit c78fa16b01

@ -57,6 +57,8 @@ class Game(models.Model):
def game_phase_string(self):
return Game._game_phase_strings[self.game_phase]
def num_players(self):
return self.player_set.count()
class Player(models.Model):
game = models.ForeignKey(Game, on_delete=models.CASCADE, db_index=True)
@ -213,6 +215,13 @@ class GameRound(models.Model):
else:
return self.missionaction_set.filter(played_success=False).count()
def played_fail(self):
if self.mission_passed is None:
return None
else:
fail_actions = self.missionaction_set.filter(played_success=False)
return [action.player for action in fail_actions]
class MissionAction(models.Model):
game_round = models.ForeignKey(GameRound, on_delete=models.CASCADE, db_index=True)
player = models.ForeignKey(Player, on_delete=models.CASCADE)
@ -262,6 +271,15 @@ class VoteRound(models.Model):
def is_final_vote(self):
return self.vote_num == 5
def team_approved(self):
num_players = self.game_round.game.num_players()
if self.playervote_set.count() == num_players:
accepts = self.playervote_set.filter(accept=True).count()
rejects = num_players - accepts
return accepts > rejects
else:
return None
def next_leader(self):
game = self.game_round.game
num_players = Player.objects.filter(game=game).count()

@ -360,3 +360,9 @@ li.player, li.player form {
#history tbody td.chosen {
border: solid black 3px;
}
#history tbody td.chosen.played-fail {
border: solid #440000 5px;
}
#history tbody td.chosen.played-success {
border: solid #000044 5px;
}

@ -82,7 +82,7 @@
{% endif %}">
{% if vote_round.is_voting_complete %}
{% for pv in vote_round.playervote_set.all|dictsort:'player.order' %}
<td class="{% if pv.player == vote_round.leader %}leader{% endif %} {% if pv.player in vote_round.chosen.all %}chosen{% endif %} {% if pv.accept %}accept{% else %}reject{% endif %}"></td>
<td class="{% if pv.player == vote_round.leader %}leader{% endif %} {% if pv.player in vote_round.chosen.all %}chosen {% if game_over and vote_round.team_approved %}{% if pv.player in game_round.played_fail %}played-fail{% else %}played-success{% endif %}{% endif %}{% endif %} {% if pv.accept %}accept{% else %}reject{% endif %}"></td>
{% endfor %}
{% else %}
{% for p in players %}

@ -456,14 +456,12 @@ def vote(request, game, player, round_num, vote_num, vote):
vote_round.playervote_set\
.update_or_create(defaults={'accept': accept},
player=player)
num_players = game.player_set.count()
if vote_round.playervote_set.count() == num_players:
team_approved = vote_round.team_approved()
if team_approved is not None:
# All players voted, voting round is over.
vote_round.vote_status = VoteRound.VOTE_STATUS_VOTED
vote_round.save()
accepts = vote_round.playervote_set.filter(accept=True).count()
rejects = num_players - accepts
if accepts > rejects:
if team_approved:
# Team was approved
game.game_phase = Game.GAME_PHASE_MISSION
else:

Loading…
Cancel
Save