Пример #1
0
        public void PlayerStatisticsApi(UUnitTestContext testContext)
        {
            var getRequest   = new GetPlayerStatisticsRequest();
            var getStatTask1 = clientApi.GetPlayerStatisticsAsync(getRequest, null, testTitleData.extraHeaders);

            ContinueWithContext(getStatTask1, testContext, PlayerStatisticsApiContinued1, true, "GetPlayerStatistics1 call failed", false);
        }
Пример #2
0
        private void PlayerStatisticsApiContinued2(PlayFabResult <UpdatePlayerStatisticsResult> updateResult, UUnitTestContext testContext, string failMessage)
        {
            var getRequest   = new GetPlayerStatisticsRequest();
            var getStatTask2 = clientApi.GetPlayerStatisticsAsync(getRequest, null, testTitleData.extraHeaders);

            ContinueWithContext(getStatTask2, testContext, PlayerStatisticsApiContinued3, true, "GetPlayerStatistics2 call failed", true);
        }
Пример #3
0
        public void GetHighScore()
        {
            GetPlayerStatisticsRequest request = new GetPlayerStatisticsRequest()
            {
                StatisticNames = new List <string> ()
                {
                    "Level"
                }
            };

            PlayFabClientAPI.GetPlayerStatistics(request, (result) => {
                if ((result.Statistics == null))
                {
                    Debug.Log("No user data available");
                }
                else
                {
                    // foreach (var item in result.Statistics) {
                    //  if (item.StatisticName == "Level")
                    //      //Callback (item.Value);
                    //  //Debug.Log("    " + item.StatisticName + " == " + item.Value);
                    // }
                }
            }, (error) => {
                Debug.Log(error.ErrorDetails);
            });
        }
Пример #4
0
        public void PlayerStatisticsApi(UUnitTestContext testContext)
        {
            var getRequest   = new GetPlayerStatisticsRequest();
            var getStatTask1 = PlayFabClientAPI.GetPlayerStatisticsAsync(getRequest);

            ContinueWithContext(getStatTask1, testContext, PlayerStatisticsApiContinued1, true, "GetPlayerStatistics1 call failed", false);
        }
Пример #5
0
    public void GetPlayerScore(Action <int> Callback)
    {
        GetPlayerStatisticsRequest request = new GetPlayerStatisticsRequest()
        {
            StatisticNames = new List <string> ()
            {
                "Level_" + LevelManager.THIS.currentLevel
            }
        };

        PlayFabClientAPI.GetPlayerStatistics(request, (result) => {
            if ((result.Statistics == null))
            {
                Debug.Log("No user data available");
            }
            else
            {
                foreach (var item in result.Statistics)
                {
                    if (item.StatisticName == "Level_" + LevelManager.THIS.currentLevel)
                    {
                        Callback(item.Value);
                    }
//					Debug.Log ("    " + item.StatisticName + " == " + item.Value);
                }
            }
        }, (error) => {
            Debug.Log(error.ErrorDetails);
        });
    }
Пример #6
0
    private void ReadStatScore()
    {
        playFabmanager.LoadingMessage("Loading Statistics...");

        var request = new GetPlayerStatisticsRequest();

        PlayFabClientAPI.GetPlayerStatistics(request, SuccessStat, FailedStat);
    }
Пример #7
0
        private void UpdatePlayerStatsCallback(UpdatePlayerStatisticsResult result)
        {
            var testContext = (UUnitTestContext)result.CustomData;

            var getRequest = new GetPlayerStatisticsRequest();

            clientInstance.GetPlayerStatistics(getRequest, PlayFabUUnitUtils.ApiActionWrapper <GetPlayerStatisticsResult>(testContext, GetPlayerStatsCallback2), PlayFabUUnitUtils.ApiActionWrapper <PlayFabError>(testContext, SharedErrorCallback), testContext);
        }
Пример #8
0
        /**
         * Initialises user statistics.
         */
        private void InitialiseStatistics()
        {
            Debug.Log("Initialising statistics");

            GetPlayerStatisticsRequest request = new GetPlayerStatisticsRequest();

            PlayFabClientAPI.GetPlayerStatistics(request, OnStatisticsSuccess, OnStatisticsFailure);
        }
Пример #9
0
    public void GetPlayerStatistics(List <string> statisticNames, Action <GetPlayerStatisticsResult> onCallBack, Action <PlayFabError> onError)
    {
        var request = new GetPlayerStatisticsRequest()
        {
            StatisticNames = statisticNames
        };

        PlayFabClientAPI.GetPlayerStatistics(request, onCallBack, onError);
    }
    void GetStatistics()
    {
        List <string> stat = new List <string>();

        stat.Add("Kills");
        var request = new GetPlayerStatisticsRequest {
            StatisticNames = stat
        };

        PlayFab.PlayFabClientAPI.GetPlayerStatistics(request, GetStatResult, OnPlayFabError);
    }
    public override void Execute()
    {
        if (_args is GetPlayerStatisticsCommandArgs getPlayerStatistics)
        {
            var request = new GetPlayerStatisticsRequest
            {
                StatisticNames = getPlayerStatistics.StatisticsNames
            };

            PlayFabClientAPI.GetPlayerStatistics(request, OnGotPlayerStatistics, OnHttpError);
        }
    }
Пример #12
0
    public void GetStats()
    {
        // Create a new request
        var request = new GetPlayerStatisticsRequest();

        request.StatisticNames = new List <string>()
        {
            "score"
        };
        // Passing to PlayFab API
        PlayFabClientAPI.GetPlayerStatistics(request, GetStatsSuccess, OnPlayFabError);
    }
Пример #13
0
        public void PlayerStatisticsApi(UUnitTestContext testContext)
        {
            if (!TITLE_CAN_UPDATE_SETTINGS)
            {
                testContext.EndTest(UUnitFinishState.SKIPPED, "This title cannot update statistics from the client");
                return;
            }

            var getRequest = new GetPlayerStatisticsRequest();

            PlayFabClientAPI.GetPlayerStatistics(getRequest, PlayFabUUnitUtils.ApiActionWrapper <GetPlayerStatisticsResult>(testContext, GetPlayerStatsCallback1), PlayFabUUnitUtils.ApiActionWrapper <PlayFabError>(testContext, SharedErrorCallback), testContext);
        }
Пример #14
0
    public void GetStats()
    {
        // Create new request
        var request = new GetPlayerStatisticsRequest();

        request.StatisticNames = new List <string>()
        {
            "Coins"
        };
        // Send request to PlayfabAPI
        PlayFabClientAPI.GetPlayerStatistics(request, GetStatsSuccess, OnPlayFabError);
    }
Пример #15
0
    public void GetScore(Leaderboard board, Action <GetPlayerStatisticsResult> cb, Action <PlayFabError> errorCb)
    {
        StatisticUpdate statisticUpdate = new StatisticUpdate();

        statisticUpdate.StatisticName = PlayFabLeaderboard.GetBoardName(board, false);
        GetPlayerStatisticsRequest request = new GetPlayerStatisticsRequest
        {
            StatisticNames = new List <string>
            {
                board.ToString()
            }
        };

        PlayFabClientAPI.GetPlayerStatistics(request, cb, errorCb, null, null);
    }
Пример #16
0
    public static Promise <int> GetStatistic(StatisticType statisticType)
    {
        var promise = new Promise <int>();
        var request = new GetPlayerStatisticsRequest {
            StatisticNames = new List <string> {
                statisticType.ToString().ToLower()
            }
        };

        PlayFabClientAPI.GetPlayerStatistics(request, (result) => {
            try {
                promise.Resolve(result.Statistics[(int)statisticType].Value);
                GetStatisticSuccessCallback(result);
            } catch (Exception ex) {
                promise.Reject(ex);
            }
        }, ErrorCallback);
        return(promise);
    }
Пример #17
0
    public void PlayersProgressInWorldAndCities(string whatToLookFor)
    {
        var getPlayerStatisticNames = new GetPlayerStatisticsRequest {
        };

        PlayFabClientAPI.GetPlayerStatistics(getPlayerStatisticNames, result =>
        {
            foreach (var stat in result.Statistics)
            {
                if (stat.StatisticName.Contains(" isPlace"))
                {
                    string place = stat.StatisticName.Replace(" isPlace", "");
                    StartCoroutine(PlayersProgressInWorldAndCitiesResults(stat.StatisticName, place, whatToLookFor));
                }
            }
        },
                                             error => Debug.LogError(error.GenerateErrorReport()));
        OnDataRetrieved();
    }
Пример #18
0
        public void PlayerStatisticsApi()
        {
            int testStatExpected = 0, testStatActual = Int32.MinValue;

            var getRequest   = new GetPlayerStatisticsRequest();
            var getStatTask1 = PlayFabClientAPI.GetPlayerStatisticsAsync(getRequest);

            WaitForResultSuccess(getStatTask1, "PlayerStatistics should have been retrieved from Api call");
            foreach (var eachStat in getStatTask1.Result.Result.Statistics)
            {
                if (eachStat.StatisticName == TEST_STAT_NAME)
                {
                    testStatExpected = eachStat.Value;
                }
            }
            testStatExpected = (testStatExpected + 1) % 100; // This test is about the expected value changing (incrementing through from TEST_STAT_BASE to TEST_STAT_BASE * 2 - 1)

            var updateRequest = new UpdatePlayerStatisticsRequest {
                Statistics = new List <StatisticUpdate> {
                    new StatisticUpdate {
                        StatisticName = TEST_STAT_NAME, Value = testStatExpected
                    }
                }
            };
            var updateTask = PlayFabClientAPI.UpdatePlayerStatisticsAsync(updateRequest);

            WaitForResultSuccess(updateTask, "UpdatePlayerStatistics failed");

            getRequest = new GetPlayerStatisticsRequest();
            var getStatTask2 = PlayFabClientAPI.GetPlayerStatisticsAsync(getRequest);

            WaitForResultSuccess(getStatTask2, "PlayerStatistics should have been retrieved from Api call");
            foreach (var eachStat in getStatTask2.Result.Result.Statistics)
            {
                if (eachStat.StatisticName == TEST_STAT_NAME)
                {
                    testStatActual = eachStat.Value;
                }
            }
            UUnitAssert.IntEquals(testStatExpected, testStatActual);
        }
Пример #19
0
    void GetYourHighScore()
    {
        if (!PlayFabClientAPI.IsClientLoggedIn())
        {
            Login(() => GetYourHighScore());
            return;
        }

        GetPlayerStatisticsRequest request = new GetPlayerStatisticsRequest()
        {
            StatisticNames = new List <string>()
            {
                "totalScore"
            }
        };

        PlayFabClientAPI.GetPlayerStatistics
        (
            request,
            result =>
        {
            if (result.Statistics is null)
            {
                return;
            }

            var data = result.Statistics
                       .FirstOrDefault(stat => stat.StatisticName == "totalScore");
            if (data is null)
            {
                return;
            }

            bestScore = data.Value;
            highScore.Set(data.Value);
        },
            error => print(error.GenerateErrorReport())
        );
    }
Пример #20
0
    public IEnumerator GetAllStats()
    {
        GetPlayerStatisticsRequest req = new GetPlayerStatisticsRequest {
        };
        Action <Action <GetPlayerStatisticsResult>, Action <PlayFabError> > apiCall = (onsuccess, onError) =>
        {
            PlayFabClientAPI.GetPlayerStatistics(req, onsuccess, onError);
        };

        yield return(ExecuteApiCallWithRetry(apiCall));

        var result = (GetPlayerStatisticsResult)LastResult;

        if (result != null)
        {
            foreach (var stat in result.Statistics)
            {
                CurrentStats[stat.StatisticName] = stat;
            }
            HasStatsFromServer = true;
        }
    }
Пример #21
0
    public static void RefreshUserStatistics(Action onSuccess)
    {
        var request = new GetPlayerStatisticsRequest();

        PlayFabClientAPI.GetPlayerStatistics(request,
                                             playerStats =>
        {
            Debug.Log("RefreshUserStatistics success");
            var highScore = HighScore;
            var score     = playerStats.Statistics.Find(s => s.StatisticName == HighScoreKey);
            if (score != null)
            {
                highScore = score.Value;
            }
            PlayerPrefs.SetInt(HighScoreKey, highScore);
            onSuccess();
        },
                                             error =>
        {
            Debug.LogWarning("Something went wrong with RefreshUserStatistics :(");
            Debug.LogError(error.GenerateErrorReport());
        }
                                             );
    }
Пример #22
0
        public void PlayerStatisticsApi(UUnitTestContext testContext)
        {
            var getRequest = new GetPlayerStatisticsRequest();

            PlayFabClientAPI.GetPlayerStatistics(getRequest, PlayFabUUnitUtils.ApiActionWrapper <GetPlayerStatisticsResult>(testContext, GetPlayerStatsCallback1), PlayFabUUnitUtils.ApiActionWrapper <PlayFabError>(testContext, SharedErrorCallback), testContext, testTitleData.extraHeaders);
        }
Пример #23
0
        public void PlayerStatisticsApi(UUnitTestContext testContext)
        {
            var getRequest = new GetPlayerStatisticsRequest();

            clientInstance.GetPlayerStatistics(getRequest, PlayFabUUnitUtils.ApiActionWrapper <GetPlayerStatisticsResult>(testContext, GetPlayerStatsCallback1), PlayFabUUnitUtils.ApiActionWrapper <PlayFabError>(testContext, SharedErrorCallback), testContext);
        }
Пример #24
0
    public static void GetUserStatistics()
    {
        GetPlayerStatisticsRequest request = new GetPlayerStatisticsRequest();

        PlayFabClientAPI.GetPlayerStatistics(request, OnGetUserStatisticsSuccess, OnGetUserStatisticsError);
    }
    public void GetStatistics()
    {
        var request = new GetPlayerStatisticsRequest();

        PlayFabClientAPI.GetPlayerStatistics(request, OnGetPlayerStatisticsSuccess, OnGetPlayerStatisticsFailure);
    }
Пример #26
0
 public static UnityTask <GetPlayerStatisticsResult> Do(GetPlayerStatisticsRequest request)
 {
     return(Do <GetPlayerStatisticsRequest, GetPlayerStatisticsResult>(request, PlayFabClientAPI.GetPlayerStatistics));
 }
Пример #27
0
        /// <summary>
        /// This is a helper function that verifies that the player's move wasn't made
        /// too quickly following their previous move, according to the rules of the game.
        /// If the move is valid, then it updates the player's statistics and profile data.
        /// This function is called from the "UpdatePlayerMove" handler above and also is
        /// triggered by the "RoomEventRaised" Photon room event in the Webhook handler
        /// below.
        ///
        /// For this example, the script defines the cooldown period (playerMoveCooldownInSeconds)
        /// as 15 seconds.A recommended approach for values like this would be to create them in Title
        /// Data, so that they can be queries in the script with a call to GetTitleData
        /// (https://api.playfab.com/Documentation/Server/method/GetTitleData). This would allow you to
        /// make adjustments to these values over time, without having to edit, test, and roll out an
        /// updated script.
        /// </summary>
        /// <param name="playerMove">The player's move object</param>
        /// <param name="currentPlayerId">The player's PlayFab ID</param>
        /// <param name="log">The logger object to log to</param>
        /// <returns>True if the player's move was valid, false otherwise</returns>
        private static async Task <bool> ProcessPlayerMove(PlayFabServerInstanceAPI serverApi, dynamic playerMove, string currentPlayerId, ILogger log)
        {
            var now = DateTime.Now;
            var playerMoveCooldownInSeconds = -15;

            var userInternalDataRequest = new GetUserDataRequest
            {
                PlayFabId = currentPlayerId,
                Keys      = new List <string>
                {
                    "last_move_timestamp"
                }
            };

            var playerDataResponse = await serverApi.GetUserInternalDataAsync(userInternalDataRequest);

            var playerData = playerDataResponse.Result.Data;
            var lastMoveTimeStampSetting = playerData["last_move_timestamp"];

            if (lastMoveTimeStampSetting != null)
            {
                var lastMoveTime = DateTime.Parse(lastMoveTimeStampSetting.Value);
                var timeSinceLastMoveInSeconds = (now - lastMoveTime) / 1000;
                log.LogDebug($"lastMoveTime: {lastMoveTime} now: {now} timeSinceLastMoveInSeconds: {timeSinceLastMoveInSeconds}");

                if (timeSinceLastMoveInSeconds.TotalSeconds < playerMoveCooldownInSeconds)
                {
                    log.LogError($"Invalid move - time since last move: {timeSinceLastMoveInSeconds}s less than minimum of {playerMoveCooldownInSeconds}s.");
                    return(false);
                }
            }

            var getStatsRequest = new GetPlayerStatisticsRequest
            {
                PlayFabId = currentPlayerId
            };

            var playerStats = (await serverApi.GetPlayerStatisticsAsync(getStatsRequest)).Result.Statistics;
            var movesMade   = 0;

            for (var i = 0; i < playerStats.Count; i++)
            {
                if (string.IsNullOrEmpty(playerStats[i].StatisticName))
                {
                    movesMade = playerStats[i].Value;
                }
            }
            movesMade += 1;
            var updateStatsRequest = new UpdatePlayerStatisticsRequest
            {
                PlayFabId  = currentPlayerId,
                Statistics = new List <StatisticUpdate>
                {
                    new StatisticUpdate
                    {
                        StatisticName = "movesMade",
                        Value         = movesMade
                    }
                }
            };

            await serverApi.UpdatePlayerStatisticsAsync(updateStatsRequest);

            await serverApi.UpdateUserInternalDataAsync(new UpdateUserInternalDataRequest
            {
                PlayFabId = currentPlayerId,
                Data      = new Dictionary <string, string>
                {
                    { "last_move_timestamp", DateTime.Now.ToUniversalTime().ToString() },
                    { "last_move", PlayFabSimpleJson.SerializeObject(playerMove) }
                }
            });

            return(true);
        }