Example #1
0
def game(request, game_id):
  game = load_game_by_id(game_id)
  game.add_user(request.user)

  datetimeLastUpdated = timestampToDatetime(request.GET.get("lastUpdated", "0"))

  players = [{
    'id': gameUser.id,
    'color': gameUser.get_color(),
    'username': gameUser.user.username,
  } for gameUser in game.get_gameusers_modified_since(datetimeLastUpdated)]

  pieces = [{
    'id': piece.id,
    'player_id': piece.gameUser.id,
    'type': piece.get_type(),
    'position': piece.position,
  } for piece in game.get_pieces_modified_since(datetimeLastUpdated)]

  history = [{
    'id': hist.id,
    'piece_id': hist.piece_id,
    'from': hist.fromPosition,
    'to': hist.toPosition,
  } for hist in game.get_history_modified_since(datetimeLastUpdated)]

  response = {}
  if (
    datetimeToEpoch(game.datetimeLastModified) > datetimeToEpoch(datetimeLastUpdated)
    or len(players) > 0
    or len(pieces) > 0
  ):
    game.update_status()
    response = {
      'status': game.status,
      'players': players,
      'pieces': pieces,
      'history': history,
      'moves': [{
        'id': move['piece'].id,
        'positions': move['positions']
      } for move in game.get_available_moves() if move['piece'].gameUser.user == request.user],
      'lastUpdated': datetimeToEpoch(datetime.datetime.utcnow()),
      'currentturn_player_id': game.get_gameuser_current_turn().id,
      'winner_player_id': None,
    }

    winner = game.get_winner_gameuser()
    if winner:
      response['winner_player_id'] = winner.id

  return HttpResponse(json.dumps(response), content_type="application/json")
Example #2
0
def movePiece(request, game_id, piece_id, position):
  game = load_game_by_id(game_id)
  game.move_piece_to_position(int(piece_id), position)
  return HttpResponse(status = 200)