def choose_deck(): name = request.json["name"] try: current_user.choose_deck(name) except DeckNotExists: return failed("Deck %s not exists" % name) return success(data=current_user.deck_json)
def leave_room(room_id): if current_user.playing_room == -1: return failed(rtn=ErrorCode.PLAYER_NOT_PLAYING, message="not in room") room = room_manager.get_room(current_user.playing_room) room.players.remove(current_user.player) if len(room.players) == 0: room_manager.delete_room(room_id) return success(message="Join room %s success" % room_id)
def delete_deck(): name = request.json["name"] try: current_user.delete_deck(name) user_manager.save_user(current_user) except DeckNotExists: return failed("Deck %s not exists" % name) return success(data=current_user.deck_json)
def add_deck(): data = request.json try: current_user.add_deck(data["name"], data["code"]) current_user.choose_deck(data["name"]) user_manager.save_user(current_user) except DeckNameDuplicate: return failed(rtn=ErrorCode.DECK_NAME_DUPLICATE, message="Deck name %s already exists") return success(data=current_user.deck_json)
def sign_up(): data = request.json username = data['username'] password = data['password'] DEBUG("username is %s, password is %s" % (username, password)) DEBUG("users is %s" % user_manager.users) if username not in user_manager.users: user_manager.save_user(User(username, password)) return success(message="User %s sign up success" % username) return failed(rtn=ErrorCode.USER_ALREADY_EXISTS, message="User %s already exists" % (username))
def join_room(room_id): try: if current_user.playing_room == -1: room_manager.join_room(room_id, current_user) return success(message="Join room %s success" % room_id) else: return failed( ErrorCode.PLAYER_ALREADLY_PLAYING, message="playing in room %s") except RoomNotExists: return failed(rtn=ErrorCode.ROOM_NOT_EXISTS, message="Room %s does not exist" % room_id) except RoomFull: return failed(rtn=ErrorCode.ROOM_FULL, message="Room %s is full")
def get_room(room_id): try: room = room_manager.get_room(room_id) DEBUG(room.players) return success(data={ "players": [{ "name": player.name, "hero": cards_name_map[player.starting_hero], "deck": [cards_name_map[card] for card in player.starting_deck] } for player in room.players] }) except RoomNotExists: return failed(rtn=ErrorCode.ROOM_NOT_EXISTS, message="Room %s does not exist" % room_id)
def logout(): logout_user() return success(message='Logged out')
def protected(): return success(message='Logged in as: ' + current_user.id)
def create_room(): room = room_manager.create_room() return success(data={"room_id": room.id}, message="Create room success")
def get_deck(): return success(data=current_user.deck_json)