示例#1
0
    /// <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);
        }
    }
示例#3
0
    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);
        //}
    }
示例#4
0
    /// <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("");
    }
示例#5
0
    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);
    }
示例#6
0
    /// <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
    }