示例#1
0
def create_room():
    """
    Route creates new room and redirects to the lobby.
    It adds a new player to the room and sets session cookie if not present
    """
    username = request.forms.get("username")
    if len(username) == 0:
        return HTTPError(403, "Username too short")

    sessid = request.cookies.get("sessid", generate_sessid())
    room = Room.create(code=generate_room_code())
    player = Player.create(sessid=sessid, name=username, room=room)
    room.owner = player
    room.save()

    response.set_cookie("sessid", sessid, path="/")
    return redirect("/game/%s/lobby" % room.code)
示例#2
0
def join():
    """
    Route invoked when a new player joins the room.
    Adds player to the room and sets his session cookie.
    Posts the join message to other players in the room.
    """
    username = request.forms.get("username")
    if len(username) == 0:
        return HTTPError(403, "Username too short")
    room_code = request.forms.get("room").upper()
    try:
        room = Room.select(Room).where(Room.code == room_code).get()
    except Room.DoesNotExist:
        return HTTPError(404, "Room does not exist")

    sessid = request.cookies.get("sessid", generate_sessid())
    player, created = Player.get_or_create(sessid=sessid, room=room, defaults={"name": username})
    if created:
        message_data = {"player": {"id": player.id, "name": player.name}}
        post_message([Msg("join", message_data)], room=room)
    response.set_cookie("sessid", sessid, path="/")
    return redirect("/game/%s/lobby" % room.code)