Added "Exit to Lobby" button in role phase. (#13)

Closes #2.
pull/16/head
Daniel Perelman 8 years ago committed by GitHub
parent 946d389bfd
commit e8c21182b1

@ -25,6 +25,7 @@ class Game(models.Model):
GAME_PHASE_ASSASSIN = 5
GAME_PHASE_END = 6
game_phase = models.IntegerField(default=GAME_PHASE_LOBBY)
times_started = models.IntegerField(null=False, default=0)
display_history = models.NullBooleanField()
player_assassinated = models.ForeignKey('Player', null=True, default=None,
related_name='+')

@ -2,7 +2,9 @@
{% block game_content %}
<div class="role-phase">
<h2>Role Phase</h2>
<h2>Role Phase{% if times_started > 1 %}
<b>#{{times_started}}</b>
{% endif %}</h2>
<p><b>Ready up!</b></p>
<ul>
@ -12,17 +14,19 @@
</li>
{% endfor %}
</ul>
<form method="post" action="{% url 'ready' access_code=access_code player_secret=player_secret %}">
<form method="post">
{% csrf_token %}
<div class="button-container">
<button type="submit">Ready</button>
<button type="submit" formaction="{% url 'ready' access_code=access_code player_secret=player_secret %}">Ready</button>
<button type="submit" formaction="{% url 'cancel_game' access_code=access_code player_secret=player_secret %}">Return to Lobby</button>
</div>
</form>
</div>
{% endblock %}
{% block game_handle_new_status %}
if(oldStatus.game_phase == newStatus.game_phase) {
if(oldStatus.game_phase == newStatus.game_phase
&& oldStatus.times_started == newStatus.times_started) {
if(JSON.stringify(oldStatus.ready)
!= JSON.stringify(newStatus.ready)) {
newStatus.ready.forEach(function(player) {

@ -15,6 +15,7 @@ urlpatterns = [
url(r'^start/$', views.start, name='start'),
url(r'^leave/$', views.leave, name='leave'),
url(r'^ready/$', views.ready, name='ready'),
url(r'^cancel_game/$', views.cancel_game, name='cancel_game'),
url(r'^(?P<round_num>[1-5])/(?P<vote_num>[1-5])/', include([
url(r'^vote/(?P<vote>(approve|reject))/$', views.vote, name='vote'),
url(r'^choose/(?P<who>[0-9])/$', views.choose, name='choose'),

@ -105,6 +105,7 @@ def game_status_string(game, player):
if game.game_phase == Game.GAME_PHASE_LOBBY:
game_status_object['players'] = [p.name for p in players]
elif game.game_phase == Game.GAME_PHASE_ROLE:
game_status_object['times_started'] = game.times_started
ready_players = game.player_set.filter(ready=True).order_by('order')
game_status_object['ready'] = [{'name': p.name, 'order': p.order}
for p in ready_players]
@ -198,6 +199,7 @@ def game(request, game, player):
context['form'] = StartGameForm()
return render(request, 'lobby.html', context)
elif game.game_phase == Game.GAME_PHASE_ROLE:
context['times_started'] = game.times_started
return render(request, 'role_phase.html', context)
elif game.game_phase == Game.GAME_PHASE_PICK:
vote_round = VoteRound.objects.get_current_vote_round(game=game)
@ -320,6 +322,7 @@ def start(request, game, player):
else:
game.display_history = form.cleaned_data.get('display_history')
game.game_phase = Game.GAME_PHASE_ROLE
game.times_started += 1
resistance_roles = []
if form.cleaned_data.get('merlin'):
@ -350,6 +353,20 @@ def start(request, game, player):
return render(request, 'lobby.html', context)
@lookup_access_code
@lookup_player_secret
@require_POST
def cancel_game(request, game, player):
if game.game_phase == Game.GAME_PHASE_ROLE:
player.ready = False
player.save()
game.game_phase = Game.GAME_PHASE_LOBBY
game.save()
return redirect('game', access_code=game.access_code,
player_secret=player.secret_id)
@lookup_access_code
@lookup_player_secret
@require_POST

Loading…
Cancel
Save