def _record_result(result_info): player = models.get_player_in_game(result_info["game_id"]) player.score = result_info["score"] player.in_queue = False db.session.add(player) db.session.commit() update_queue()
def update_queue(): player = models.get_next_in_queue() for game in GAMES: if player is None: break game_info = get_game_state(game) if game_info['state'].value == GAME_STATE_READY and models.get_player_in_game(game) is None: player.game_id = game db.session.add(player) player = models.get_next_in_queue() db.session.commit()
def update_queue(): player = models.get_next_in_queue() for game in GAMES: if player is None: break game_info = get_game_state(game) if game_info[ 'state'].value == GAME_STATE_READY and models.get_player_in_game( game) is None: player.game_id = game db.session.add(player) player = models.get_next_in_queue() db.session.commit()
def get_players_in_game(): retval = [] for game in GAMES: game_info = get_game_state(game) info = {"game_id":game} player = models.get_player_in_game(game) if player is not None: info["player"] = player.name else: info["player"] = "" info["state"] = "PLAYING" if game_info['state'].value == GAME_STATE_ACTIVE else "READY" retval.append(info) return retval
def start_game(game_id): game_info = get_game_state(game_id) if game_info['state'].value == GAME_STATE_ACTIVE: raise InvalidAPIUsage("game already in-progress, abort to start a new game.") player = models.get_player_in_game(game_id) if player is None: raise InvalidAPIUsage("no player in game, queue player first.") player.play_time = datetime.datetime.utcnow() db.session.add(player) db.session.commit() pool = mp.get_pool() pool.apply_async(_game_runner, (game_id,), callback=_record_result) return {"status": "success"}
def get_players_in_game(): retval = [] for game in GAMES: game_info = get_game_state(game) info = {"game_id": game} player = models.get_player_in_game(game) if player is not None: info["player"] = player.name else: info["player"] = "" info["state"] = "PLAYING" if game_info[ 'state'].value == GAME_STATE_ACTIVE else "READY" retval.append(info) return retval
def start_game(game_id): game_info = get_game_state(game_id) if game_info['state'].value == GAME_STATE_ACTIVE: raise InvalidAPIUsage( "game already in-progress, abort to start a new game.") player = models.get_player_in_game(game_id) if player is None: raise InvalidAPIUsage("no player in game, queue player first.") player.play_time = datetime.datetime.utcnow() db.session.add(player) db.session.commit() pool = mp.get_pool() pool.apply_async(_game_runner, (game_id, ), callback=_record_result) return {"status": "success"}