Beispiel #1
0
        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);
        }
Beispiel #2
0
        private WinCheckResult GetCurrentGameResult(GameState gameState)
        {
            var checkResult = new WinCheckResult
            {
                winner = GameWinnerType.NONE
            };

            if (gameState.boardState.Length > 0)
            {
                checkResult = WinCheckUtil.Check(gameState);
            }

            return(checkResult);
        }