def reset(request, room_pk): if request.method != "POST" or "players" not in request.POST: return HttpResponseForbidden() room = get_object_or_404(Room, pk=room_pk) new_state = MainLogic.get_new_game(int(request.POST["players"])) def do_action(player, players): gp.invalidate_players(players) print(new_state) return gp.set_new_state(room, new_state, change_to_drawable, player, players) return gp.player_action(room, request.session.session_key, do_action)
def enter_room(request, room_pk, dir_name): print("halo1") room = get_object_or_404(Room, pk=room_pk) room.game_state = pickle.dumps(MainLogic.get_new_game(2)) room.save() gp.add_player(room, request.session.session_key, 2) print("halo1") def do_action(player, players): if "current_player" not in player: taken_places = [player["current_player"] for player in players if "current_player" in player] free_place = 0 while free_place in taken_places: free_place += 1 player["current_player"] = free_place return gp.render_game(request, dir_name, room_pk) return gp.player_action(room, request.session.session_key, do_action, redirect('main'))
def action(request, room_pk): if request.method != "POST": return HttpResponseForbidden() room = get_object_or_404(Room, pk=room_pk) def do_action(player, players): state = pickle.loads(room.game_state) if state["current_player"] != player["current_player"]: return HttpResponseForbidden() try: MainLogic.do_move(state, int(request.POST['piece_number'])) except MoveNotValidException: print("%s: Invalid move" % player["who"]) return HttpResponseForbidden() else: gp.invalidate_players(players, player) print(state) print(change_to_drawable(state, None, None)) return gp.set_new_state(room, state, change_to_drawable) return gp.player_action(room, request.session.session_key, do_action)