/// <summary> /// if any state of the achievement is "unclaimed" we can get the reward /// </summary> /// <param name="itemUI"></param> void OpenReward(FMAchievementItemUI itemUI) { int achievementIndex = itemUI.CurrentIndex; string rewardKey = itemUI.Achievement.RewardKeys[achievementIndex]; FMRewardItem reward = FMPlayfabReward.GetRewardFromKey(rewardKey); if (!string.IsNullOrEmpty(reward.ItemKey)) { //TODO show item information //IVDialogDisplayer.DisplayNotice("you got " + reward.ItemKey, null); FMPlayfabUserAchievement.Instance.SetUserAchievementAsClaimedLocal(itemUI.Key, achievementIndex); return; } //spawming particles to currencies Debug.Log("reward type " + reward.RewardTypeValue); switch (reward.RewardTypeValue) { case "co": spawners[1].SpawnParticles(UICamera.mainCamera.ScreenToWorldPoint(Input.mousePosition)); break; case "pc": spawners[2].SpawnParticles(UICamera.mainCamera.ScreenToWorldPoint(Input.mousePosition)); break; case "item": spawners[0].SpawnParticles(UICamera.mainCamera.ScreenToWorldPoint(Input.mousePosition)); break; } //particleSpawner.SpawnParticles(UICamera.mainCamera.ScreenToWorldPoint(Input.mousePosition)); FMPlayfabUserAchievement.Instance.SetUserAchievementAsClaimedLocal(itemUI.Key, achievementIndex); }
public void FilterResult(ExecuteCloudScriptResult result) { Bonuses.Clear(); //Debug.Log(PlayFabSimpleJson.SerializeObject(result.FunctionResult)); JSONNode jsonResult = JSON.Parse(result.FunctionResult.ToString()); //Debug.Log(jsonResult); if ((jsonResult.Value.Equals("null") || result.Error != null)) { //status = FMRewardStatus.error; return; } //get logi_count statistic logCountStatistic = FMPlayfabUserStatistics.GetStatisticProgress("login_count"); RemainingHours = jsonResult["remainingHour"] == null ? 0 : jsonResult["remainingHour"].AsInt; int logCount = jsonResult["login_count"] == null ? logCountStatistic : jsonResult["login_count"].AsInt;; //if there's daily bonus string dailyRewardKey = jsonResult["daily_reward"]; if (!string.IsNullOrEmpty(dailyRewardKey)) { TodayReward = FMPlayfabReward.GetRewardFromKey(dailyRewardKey); } for (int i = 0; i < jsonResult["BonusResult"].AsArray.Count; i++) { string rewardKey = jsonResult["BonusResult"].AsArray[i]["reward_key"]; FMRewardItem reward = FMPlayfabReward.GetRewardFromKey(rewardKey); FMLoginBonusState state; if (logCount > i) { state = FMLoginBonusState.Claimed; } else if (logCount == i) { state = FMLoginBonusState.Today; } else { state = FMLoginBonusState.Unclaimed; } Bonuses.Add(new FMLoginBonusItem(i, reward, state)); //var ri = new FMRewardItem(rewardKey, rewardType, rewardValue, rewardValue); //ClaimedRewards.Add(ri); } }
void LoadPlayfabData(LoginResult logResult) { //getting user statistics //if (ClientSessionData.Instance.Statistics.Count == 0) //{ // PlayfabUtils.Instance.GetPlayerStatistics(null, (res) => // { // FMPlayfabUserStatistics.StoreItemsFromJson(res); // }, PlayFabError); //} //getting user achievements if any //if (ClientSessionData.Instance.UserAchievements.Count == 0) { PlayfabUtils.Instance.GetUserReadOnlyData(new List <string> { "fm_user_achievements" }, result => { FMPlayfabUserAchievement.Instance.StoreItemsFromJson(result); if (FMPlayfabUserAchievement.Items.Count != 0) { ClientSessionData.Instance.UserAchievements = FMPlayfabUserAchievement.Items; } //getting reward and achievement list PlayfabUtils.Instance.GetTitleData(new List <string>() { "fm_achievements", "fm_rewards" }, (res) => { FMPlayfabAchievements.Instance.StoreItemsFromJson(res); FMPlayfabReward.StoreItemsFromJson(res); //define OnGetAchievement to know what to do with the acheivements FMPlayfabAchievements.Instance.OnGetAchievement = DisplayAchievements; FMPlayfabUserAchievement.Instance.OnClaimReward = OnClaimedRewards; FMPlayfabAchievements.Instance.GetUserAchivements(); return; }, PlayFabError); }, PlayFabError); //} }
/// <summary> /// this could change depending on the game and the atlas used /// </summary> /// <param name="achivement"></param> /// <param name="index"></param> /// <returns></returns> string GetRewardIconName(FMAchievementItem achivement, int index) { FMRewardItem reward = FMPlayfabReward.GetRewardFromKey(achivement.RewardKeys[index]); //default if (index == -1 || reward == null) { Debug.Log("reward null en " + achivement.Key); return("achievement"); } switch (reward.RewardTypeValue) { case "co": case "pc": return("coin"); case "item": return("achievement"); } return(""); }
void OnLoginSuccess(LoginResult res) { //get display name PlayFabClientAPI.GetAccountInfo(new GetAccountInfoRequest() { PlayFabId = res.PlayFabId }, result => { ClientSessionData.Instance.UserName = result.AccountInfo.TitleInfo.DisplayName; labUser.text = result.AccountInfo.TitleInfo.DisplayName; }, error => { Debug.Log("error on get account info"); }); //get currency PlayFabClientAPI.GetUserInventory(new GetUserInventoryRequest(), resInventory => { int CO = 0; int PC = 0; resInventory.VirtualCurrency.TryGetValue("CO", out CO); resInventory.VirtualCurrency.TryGetValue("PC", out PC); labCurrencyCO.text = CO.ToString(); labCurrencyPC.text = PC.ToString(); ClientSessionData.Instance.currencyCO = CO; ClientSessionData.Instance.currencyPC = PC; } , error => { Debug.Log("error on get currency info"); }); //statistics PlayfabUtils.Instance.GetPlayerStatistics(null, statRes => { FMPlayfabUserStatistics.StoreItemsFromJson(statRes); ClientSessionData.Instance.Statistics = FMPlayfabUserStatistics.Items; }, error => { Debug.Log("error on getting statistics"); }); //getting reward and achievement list PlayfabUtils.Instance.GetTitleData(new List <string> { "fm_achievements", "fm_rewards" }, titleRes => { FMPlayfabAchievements.Instance.StoreItemsFromJson(titleRes); FMPlayfabReward.StoreItemsFromJson(titleRes); ClientSessionData.Instance.Achievements = FMPlayfabAchievements.Items; ClientSessionData.Instance.Rewads = FMPlayfabReward.Items; Debug.Log("got achievments " + ClientSessionData.Instance.Achievements.Count); Debug.Log("got rewards " + ClientSessionData.Instance.Rewads.Count); //LOGIN BONUS FMPlayfabLoginBonus.Instance.CheckLoginBonus(); }, error => { Debug.Log("error on get title info"); }); //get catalogItems PlayFabClientAPI.GetCatalogItems(new GetCatalogItemsRequest(), catalogRes => { ClientSessionData.Instance.CatalogItems = catalogRes.Catalog; //DisplayUserItems(catalogRes.Catalog); Debug.Log("got catalog" + ClientSessionData.Instance.CatalogItems.Count); } , error => { Debug.Log("error on get catalog info"); }); //get user Achievement //PlayfabUtils.Instance.GetUserReadOnlyData(new List<string> { "fm_user_achievements" }, result =>{ // FMPlayfabUserAchievement.Instance.StoreItemsFromJson(result); // ClientSessionData.Instance.UserAchievements = FMPlayfabUserAchievement.Items; // Debug.Log("got user achivements " + ClientSessionData.Instance.UserAchievements.Count); //}, error => { Debug.Log("error on getting read only data"); }); //var request = new GetUserDataRequest() //{ // Keys = new List<string>() { "fm_user_achievements"} //}; //PlayFabClientAPI.GetUserReadOnlyData(request, result => //{ // Debug.Log("los achievements " + result.ToJson().ToString()); // //ClientSessionData.Instance.UserAchievements = //}, OnLoginFailure); }
/// <summary> /// nesting so many callbacks is not that good practice, but for the sake of /// keeping it sinchronous, we'll do it just this one time /// </summary> /// <param name="logResult"></param> void OnLoginSuccess(LoginResult logResult) { List <ItemInstance> inventoryItems = new List <ItemInstance>(); //get display name PlayFabClientAPI.GetAccountInfo(new GetAccountInfoRequest() { PlayFabId = logResult.PlayFabId }, result => { ClientSessionData.Instance.PlayfabID = logResult.PlayFabId; ClientSessionData.Instance.UserName = result.AccountInfo.TitleInfo.DisplayName; labLoading.text = "... Loading user info ..."; progress += 0.20f; total += progress; //get currency PlayFabClientAPI.GetUserInventory(new GetUserInventoryRequest(), resInventory => { //currency int CO = 0; int PC = 0; resInventory.VirtualCurrency.TryGetValue("CO", out CO); resInventory.VirtualCurrency.TryGetValue("PC", out PC); ClientSessionData.Instance.currencyCO = CO; ClientSessionData.Instance.currencyPC = PC; //inventory inventoryItems = resInventory.Inventory; labLoading.text = "... Loading Inventory ..."; progress += 0.20f; //total += progress; //statistics PlayfabUtils.Instance.GetPlayerStatistics(null, statRes => { FMPlayfabUserStatistics.StoreItemsFromJson(statRes); ClientSessionData.Instance.Statistics = FMPlayfabUserStatistics.Items; labLoading.text = "... Loading User Statistics ..."; progress += 0.20f; total += progress; //get title Data PlayfabUtils.Instance.GetTitleData(new List <string> { "fm_achievements", "fm_rewards" }, titleRes => { FMPlayfabAchievements.Instance.StoreItemsFromJson(titleRes); FMPlayfabReward.StoreItemsFromJson(titleRes); ClientSessionData.Instance.Achievements = FMPlayfabAchievements.Items; ClientSessionData.Instance.Rewads = FMPlayfabReward.Items; labLoading.text = "... Loading Title Data ..."; progress += 0.20f; total += progress; //get catalogItems PlayFabClientAPI.GetCatalogItems(new GetCatalogItemsRequest(), catalogRes => { ClientSessionData.Instance.CatalogItems = catalogRes.Catalog; //crossing CatalogItem and ItemInstance items FMPlayFabInventory.StoreItemsFromPlayfab(catalogRes.Catalog, inventoryItems); ClientSessionData.Instance.InventoryItems = FMPlayFabInventory.Items; //TODO cross catalog and instance items; labLoading.text = "... Loading Catalog Items ..."; progress += 0.20f; total += progress; } , error => { Debug.Log("error on get catalog info"); }); //end catalog }, error => { Debug.Log("error on get title info"); }); //end get title }, error => { Debug.Log("error on getting statistics"); }); //end get Statistics } , error => { Debug.Log("error on get currency info"); }); //end get currency }, error => { Debug.Log("error on get account info"); }); //end get account info }