public static async Task <WinCheckResult> Run( [HttpTrigger(AuthorizationLevel.Function, "post", Route = null)] HttpRequestMessage entityRequest, HttpRequest httpRequest, ILogger log) { // Extract the context from the incoming request var context = await FunctionContext <PlayFabIdRequest> .Create(entityRequest); string playFabId = context.FunctionArgument.PlayFabId; Settings.TrySetSecretKey(context.ApiSettings); Settings.TrySetCloudName(context.ApiSettings); // Grab the current player's game state var state = await GameStateUtil.GetCurrentGameState(playFabId, context.ApiSettings, context.AuthenticationContext); var winCheckResult = WinCheckUtil.Check(state); if (winCheckResult.Winner != GameWinnerType.NONE) { // Update the leaderboard accordingly await LeaderboardUtils.UpdateLeaderboard(playFabId, winCheckResult.Winner); // Store the game history await GameStateUtil.AddGameStateHistory(state, playFabId, context.ApiSettings, context.AuthenticationContext); // Clear the current game state await GameStateUtil.UpdateCurrentGameState(new TicTacToeState(), playFabId, context.ApiSettings, context.AuthenticationContext); } return(winCheckResult); }
private WinCheckResult GetCurrentGameResult(GameState gameState) { var checkResult = new WinCheckResult { winner = GameWinnerType.NONE }; if (gameState.boardState.Length > 0) { checkResult = WinCheckUtil.Check(gameState); } return(checkResult); }