Ejemplo n.º 1
0
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()
Ejemplo n.º 2
0
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()
Ejemplo n.º 3
0
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()
Ejemplo n.º 4
0
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()
Ejemplo n.º 5
0
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
Ejemplo n.º 6
0
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"}
Ejemplo n.º 7
0
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
Ejemplo n.º 8
0
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"}