void AddTradeToGroup(string tradeId)
        {
            ExecuteCloudScriptRequest executeRequest = new ExecuteCloudScriptRequest
            {
                FunctionName      = "AddNewTradeOffer",
                FunctionParameter = new { tradeID = tradeId }
            };

            PlayFabClientAPI.ExecuteCloudScript(executeRequest,
                                                result =>
            {
                Trade.instance.SetDisplayText("Trade Off Created.");
                Trade.instance.onRefreshUI?.Invoke();
            },
                                                error => Trade.instance.SetDisplayText(error.ErrorMessage)
                                                );
        }
Пример #2
0
    /// <summary>
    /// Starts the buy store item.
    /// </summary>
    /// <param name="item">Item.</param>
    /// <param name="storeID">Store I.</param>
    public static void StartBuyStoreItem(CatalogItem item, string storeID)
    {
        string characterId = null;//PF_PlayerData.activeCharacter == null ? null : PF_PlayerData.activeCharacter.characterDetails.CharacterId;
        var    vcKVP       = item.VirtualCurrencyPrices.First();

        if (characterId != null)
        {
            DialogCanvasController.RequestLoadingPrompt(PlayFabAPIMethods.MakePurchase);

            ExecuteCloudScriptRequest request = new ExecuteCloudScriptRequest();
            request.FunctionName = "PurchaseItem";
            //request.FunctionParameter = new { ItemPrice = (int)vcKVP.Value, CurrencyCode = vcKVP.Key, CharacterId = PF_PlayerData.activeCharacter.characterDetails.CharacterId, ItemId = item.ItemId };

            PlayFabClientAPI.ExecuteCloudScript(request, (ExecuteCloudScriptResult result) =>
            {
                if (!PF_Bridge.VerifyErrorFreeCloudScriptResult(result))
                {
                    return;
                }

                if ((bool)result.FunctionResult == true)
                {
                    PF_Bridge.RaiseCallbackSuccess(string.Empty, PlayFabAPIMethods.MakePurchase, MessageDisplayStyle.none);
                }
                else
                {
                    PF_Bridge.RaiseCallbackError("Could not process request due to insufficient VC.", PlayFabAPIMethods.MakePurchase, MessageDisplayStyle.error);
                }
            }, PF_Bridge.PlayFabErrorCallback);
        }
        else if (characterId == null)
        {
            // normal purchase item flow
            PurchaseItemRequest request = new PurchaseItemRequest();
            request.ItemId          = item.ItemId;
            request.VirtualCurrency = vcKVP.Key;
            request.Price           = (int)vcKVP.Value;
            request.StoreId         = storeID;
            DialogCanvasController.RequestLoadingPrompt(PlayFabAPIMethods.MakePurchase);
            PlayFabClientAPI.PurchaseItem(request, OnBuyStoreItemSuccess, PF_Bridge.PlayFabErrorCallback);
        }
        else
        {
            Debug.LogWarning("Store purchase failed: " + characterId);
        }
    }
Пример #3
0
        public async Task <bool> sendBid(int bidHeroID, int bidPrice)
        {
            var request = new ExecuteCloudScriptRequest()
            {
                RevisionSelection = CloudScriptRevisionOption.Live,
                FunctionName      = "auction",
                FunctionParameter = new { hid = bidHeroID, kid = kongID, name = username, bid = bidPrice }
            };
            var statusTask = await PlayFabClientAPI.ExecuteCloudScriptAsync(request);

            if (statusTask.Error != null)
            {
                logError(statusTask.Error.Error.ToString(), statusTask.Error.ErrorMessage);
                using (StreamWriter sw = new StreamWriter("ActionLog.txt", true))
                {
                    sw.WriteLine(DateTime.Now);
                    sw.WriteLine("\tFAILED Bid on hero " + (Constants.heroNames.Length > bidHeroID + 2 ? Constants.heroNames[bidHeroID + 2] : ("Unknown, ID: " + bidHeroID))
                                 + " for: " + bidPrice + "UM.");
                    sw.WriteLine(statusTask.Error.ErrorMessage);
                }
                return(false);
            }
            if (statusTask == null || statusTask.Result.FunctionResult == null || !statusTask.Result.FunctionResult.ToString().Contains("true"))
            {
                logError("Cloud Script Error: bid", statusTask);
                using (StreamWriter sw = new StreamWriter("ActionLog.txt", true))
                {
                    sw.WriteLine(DateTime.Now);
                    sw.WriteLine("\tFAILED Bid on hero " + (Constants.heroNames.Length > bidHeroID + 2 ? Constants.heroNames[bidHeroID + 2] : ("Unknown, ID: " + bidHeroID))
                                 + " for: " + bidPrice + "UM.");
                    sw.WriteLine(statusTask.Result.FunctionResult.ToString());
                }
                return(true);
            }
            else
            {
                using (StreamWriter sw = new StreamWriter("ActionLog.txt", true))
                {
                    sw.WriteLine(DateTime.Now);
                    sw.WriteLine("\tBid on hero " + (Constants.heroNames.Length > bidHeroID + 2 ? Constants.heroNames[bidHeroID + 2] : ("Unknown, ID: " + bidHeroID))
                                 + " for: " + bidPrice + "UM.");
                }
                return(true);
            }
        }
    public void UpdateTradeOffers()
    {
        DisableAllTradeOfferButtons();
        ExecuteCloudScriptRequest getTradeOffersRequest = new ExecuteCloudScriptRequest
        {
            FunctionName = "GetTradeIDs"
        };

        PlayFabClientAPI.ExecuteCloudScript(getTradeOffersRequest,
                                            result =>
        {
            string rawData = result.FunctionResult.ToString();
            tradeOfferInfo = JsonUtility.FromJson <TradeOfferInfo>(rawData);
            GetTradeInfo();
        },
                                            error => Trade.instance.SetDisplayText(error.ErrorMessage, true)
                                            );
    }
Пример #5
0
    public static void TransferItemToCharacter(string sourceId, string sourceType, string instanceId, string destId, Action callback = null)
    {
        ExecuteCloudScriptRequest request = new ExecuteCloudScriptRequest();

        request.FunctionName      = "TransferItemToCharacter";
        request.FunctionParameter = new { sourceId = sourceId, sourceType = sourceType, destId = destId, instanceId = instanceId };
        PlayFabClientAPI.ExecuteCloudScript(request, (ExecuteCloudScriptResult result) => {
            if (!PF_Bridge.VerifyErrorFreeCloudScriptResult(result))
            {
                return;
            }

            if (callback != null)
            {
                callback();
            }
        }, PF_Bridge.PlayFabErrorCallback);
    }
Пример #6
0
    public static void SubtractLifeFromPlayer()
    {
        DialogCanvasController.RequestLoadingPrompt(PlayFabAPIMethods.ExecuteCloudScript);
        var request = new ExecuteCloudScriptRequest
        {
            FunctionName      = "SubtractLife",
            FunctionParameter = new { CharacterId = activeCharacter.characterDetails.CharacterId }
        };

        PlayFabClientAPI.ExecuteCloudScript(request, result =>
        {
            if (!PF_Bridge.VerifyErrorFreeCloudScriptResult(result))
            {
                return;
            }
            PF_Bridge.RaiseCallbackSuccess("", PlayFabAPIMethods.ExecuteCloudScript, MessageDisplayStyle.none);
        }, PF_Bridge.PlayFabErrorCallback);
    }
Пример #7
0
        public bool ExecuteCloudScript <TIn, TOut>(string functionName, TIn functionParameter, Dictionary <string, string> extraHeaders, out TOut result, out string errorReport)
        {
            // Perform the request
            var request = new ExecuteCloudScriptRequest
            {
                FunctionName            = functionName,
                FunctionParameter       = functionParameter,
                GeneratePlayStreamEvent = true
            };
            var task = clientApi.ExecuteCloudScriptAsync(request, null, extraHeaders);

            task.Wait();
            errorReport = PlayFabUtil.GetCloudScriptErrorReport(task.Result);

            if (task.Result.Error != null)
            {
                Console.WriteLine("Execute Cloudscript failure: " + functionName + ":\n" + JsonWrapper.SerializeObject(functionParameter));
                Console.WriteLine(errorReport);
                result = default(TOut);
                return(false);
            }

            // Re-serialize as the target type
            var json = JsonWrapper.SerializeObject(task.Result.Result.FunctionResult);

            if (verbose)
            {
                Console.WriteLine("===== Verbose ExecuteCloudScript Json: =====");
                Console.WriteLine(json);
                Console.WriteLine("===== End =====");
            }
            try
            {
                result = JsonWrapper.DeserializeObject <TOut>(json);
            }
            catch (Exception)
            {
                Console.WriteLine("Could not serialize text: \"" + json + "\" as " + typeof(TOut).Name);
                result = default(TOut);
                return(false);
            }
            return(task.Result.Error == null && task.Result.Result.Error == null && (result != null || json == "null"));
        }
Пример #8
0
    void RemoveTradeOwnerFromGroup(string offeringPlayerId)
    {
        ExecuteCloudScriptRequest executeRequest = new ExecuteCloudScriptRequest
        {
            FunctionName      = "AcceptTrade",
            FunctionParameter = new { tradeOwnerId = offeringPlayerId }
        };

        PlayFabClientAPI.ExecuteCloudScript(executeRequest,
                                            result =>
        {
            if (Trade.instance.onRefreshUI != null)
            {
                Trade.instance.onRefreshUI.Invoke();
            }
        },
                                            error => Trade.instance.SetDisplayText(error.ErrorMessage, true)
                                            );
    }
Пример #9
0
        public virtual void Request()
        {
            if (CanRequest == false)
            {
                Debug.LogError("Can't Request New Player Reward At The Moment, Ignoring");
                return;
            }

            var request = new ExecuteCloudScriptRequest()
            {
                FunctionName = "WelcomeNewPlayer",

                FunctionParameter = new ParametersData(),

                GeneratePlayStreamEvent = true,
            };

            PlayFabClientAPI.ExecuteCloudScript(request, ResultCallback, ErrorCallback);
        }
Пример #10
0
    void AddTradeToGroup(string tradeId)
    {
        ExecuteCloudScriptRequest executeRequest = new ExecuteCloudScriptRequest
        {
            FunctionName      = "AddNewtradeOffer",
            FunctionParameter = new { tradeID = tradeId }
        };

        PlayFabClientAPI.ExecuteCloudScript(executeRequest,
                                            result =>
        {
            Debug.Log("Trade offer created.");
            if (Trade.instance.onRefreshUI != null)
            {
                Trade.instance.onRefreshUI.Invoke();
            }
        },
                                            error => Debug.Log(error.ErrorMessage)
                                            );
    }
Пример #11
0
    //“购买5次”按钮的响应事件,基本逻辑同上
    public void ClickMultipleBuyGoldButton()
    {
        processPanel.SetActive(true);
        if (int.Parse(diamondCurrencyCount.text) < int.Parse(multiplePaymentDiamondCost.text))
        {
            hintLabel.text = "钻石不足,无法购买";
            backButton.SetActive(true);
            return;
        }
        backButton.SetActive(false);
        hintLabel.text = "处 理 中...";
        ExecuteCloudScriptRequest request = new ExecuteCloudScriptRequest()
        {
            FunctionName            = "ExchangeGold",
            FunctionParameter       = new { DC = multiplePaymentDiamondCost.text, GC = multiplePaymentGoldGet.text },
            GeneratePlayStreamEvent = true
        };

        PlayFabClientAPI.ExecuteCloudScript(request, OnExecuteCloudScript, OnPlayFabError);
    }
    public void UpdateTradeOffers()
    {
        DisableAllTradeOfferButtons();

        ExecuteCloudScriptRequest getTradeOffersRequest = new ExecuteCloudScriptRequest
        {
            FunctionName = "GetTradeIDs"
        };

        PlayFabClientAPI.ExecuteCloudScript(getTradeOffersRequest,
                                            result =>
        {
            // Debug.Log("Resulted" + result);
            string rawData = result.FunctionResult.ToString();                    //Not receiving correct data
            tradeOfferInfo = JsonUtility.FromJson <TradeOfferInfo>(rawData);
            GetTradeInfo();
        },
                                            error => Debug.Log(error.ErrorMessage)
                                            );
    }
    public void SetLeaderboardEntry(int obstaclesHit)
    {
        Debug.Log("newscore is " + obstaclesHit);
        ExecuteCloudScriptRequest request = new ExecuteCloudScriptRequest
        {
            FunctionName      = "UpdateObstaclesLeaderboard",
            FunctionParameter = new { score = obstaclesHit }
        };

        PlayFabClientAPI.ExecuteCloudScript(request,
                                            result =>
        {
            Debug.Log(result.Error);
            Debug.Log(result.FunctionName);
            Debug.Log(result.FunctionResult);
            Debug.Log(result.FunctionResultTooLarge);
            DisplayLeaderboard();
        },
                                            error => Debug.Log(error.ErrorMessage)
                                            );
    }
    void AddTradeToGroup(string tradeId)
    {
        Debug.Log(tradeId);
        ExecuteCloudScriptRequest executeRequest = new ExecuteCloudScriptRequest
        {
            FunctionName      = "AddNewTradeOffer",
            FunctionParameter = new { tradeID = tradeId }
        };

        PlayFabClientAPI.ExecuteCloudScript(executeRequest,
                                            result =>
        {
            Trade.instance.SetDisplayText("Trade Offer Created", false);
            if (Trade.instance.onRefreshUI != null)
            {
                Trade.instance.onRefreshUI.Invoke();
            }
        },
                                            error => Trade.instance.SetDisplayText(error.ErrorMessage, true)
                                            );
    }
        private static void PostTestResultsToCloudScript(TestSuiteReport testReport)
        {
#if !DISABLE_PLAYFABCLIENT_API
            var request = new ExecuteCloudScriptRequest
            {
                FunctionName      = "SaveTestData",
                FunctionParameter = new Dictionary <string, object> {
                    { "customId", PlayFabSettings.BuildIdentifier }, { "testReport", new[] { testReport } }
                },
                GeneratePlayStreamEvent = true
            };
            var saveTask = PlayFabClientAPI.ExecuteCloudScriptAsync(request);
            saveTask.ContinueWith(task =>
            {
                if (_onComplete != null)
                {
                    _onComplete(task.Result);
                }
            }
                                  );
#endif
        }
Пример #16
0
        private void TimerProcessStacks_Elapsed()
        {
            if (isWorking)
            {
                //retry a bit faster if needed.
                timerProcessStackLastTime = DateTime.Now.AddMilliseconds(2500);
                return;
            }

            if (cloudScriptStackMethods == null)
            {
                cloudScriptStackMethods = new List <CloudScriptStackMethod>();
            }

            float callDelay = 0f;

            //UnityEngine.Debug.Log("--------PLAYFAB STACK TIMER GOOD ");
            if (cloudScriptStackMethods.Count > 0)
            {
                List <string> allStacks = cloudScriptStackMethods.Select(y => y.StackId).Distinct().ToList();

                foreach (string stackId in allStacks)
                {
                    List <CloudScriptMethod> allMethods = cloudScriptStackMethods.Where(y => y.StackId == stackId).Select(y => y.CloudScriptMethod).ToList();
                    allMethods.ForEach(y => y.Environement = BackOfficeEnvironement.ToString());

                    ExecuteCloudScriptRequest request = new ExecuteCloudScriptRequest()
                    {
                        FunctionName = "invokeBioIncBackOffice", FunctionParameter = allMethods
                    };

                    StartCoroutine(DelayedCall(callDelay, () => PlayFabClientAPI.ExecuteCloudScript(request, onStackCallback, (PlayFabError error) => stackResultCallBack(null))));
                    UnityEngine.Debug.Log("Stacked " + allMethods.Count + " methods for stack " + stackId);
                    callDelay += 0.5f;
                }
            }

            cloudScriptStackMethods.Clear();
        }
Пример #17
0
    public static Promise StartCloudTimer()
    {
        int timeStamp = (int)(DateTime.Now.ToUniversalTime() - new DateTime(1970, 1, 1)).TotalSeconds;
        var promise   = new Promise();
        var request   = new ExecuteCloudScriptRequest {
            FunctionName = "ReloadRupees", GeneratePlayStreamEvent = true
        };

        PlayFabClientAPI.ExecuteCloudScript(request, (result) => {
            if (result.Error != null)
            {
                Debug.Log("result.Error" + result.Error.Message);
            }
            else
            {
                promise.Resolve();
                result.Logs.ForEach(x => Debug.Log(x.Message));
                SuccessCallback(result);
            }
        }, ErrorCallback);
        return(promise);
    }
Пример #18
0
    private void DdnaPlayerConfig()
    {
        // Execute Cloud Script to get deltaDNA AB Test result
        // containing any parameter modifiers
        ExecuteCloudScriptRequest myRequest = new ExecuteCloudScriptRequest();

        myRequest.FunctionName      = "makeDdnaEngageRequest";
        myRequest.FunctionParameter = new
        {
            decisionPoint  = "playerConfig",
            platform       = DDNA.Instance.Platform,
            engageURL      = DDNA.Instance.EngageURL,
            environmentKey = DDNA.Instance.EnvironmentKey
        };
        myRequest.GeneratePlayStreamEvent = true;

        PlayFabClientAPI.ExecuteCloudScript(myRequest,
                                            result => {
            Debug.Log("CloudScript result " + result.FunctionResult.ToString());
            ReadyToLoad();

            /*---------------------------------------------------------------------------------------------------------------------------------------
             * // We have the results of the Engage AB Test on the client should we want to do anything with it,
             * // but we don't need to. The Statistics have been updated on the PlayFab server by the cloud script
             *
             * Dictionary<string, object> response = DeltaDNA.MiniJSON.Json.Deserialize(result.FunctionResult.ToString()) as Dictionary<string, object>;
             * if (response.ContainsKey("parameters"))
             * {
             *  Dictionary<string, object> parameters = response["parameters"] as Dictionary<string, object>;
             *  UpdatePlayerParameters(parameters);
             * }
             * //--------------------------------------------------------------------------------------------------------------------------------------*/
        },
                                            error => {
            Debug.Log("CloudScript error" + error.ErrorMessage);
            ReadyToLoad();
        });
    }
Пример #19
0
    public void OnLoginSuccess(LoginResult result)
    {
        if (result.NewlyCreated)
        {
            Debug.Log("Create new");
            ExecuteCloudScriptRequest request = new ExecuteCloudScriptRequest()
            {
                FunctionName            = "makeFirstCall",
                GeneratePlayStreamEvent = true
            };

            PlayFabClientAPI.ExecuteCloudScript(request, success => { }, error => { });
        }
        else
        {
            //SetUserDataStatic();
            Debug.Log("Logined");
        }
        //GameController.RequestRefeshData();

        canvas.LoadScreen();
        GameGUI.instance.PushPanel("");
    }
Пример #20
0
    public static void UpdateUserStatistics(Dictionary <string, int> updates)
    {
        var statistics = new List <StatisticUpdate>();

        foreach (var eachUpdate in updates) // Copy the stats from the inputs to the request
        {
            int eachStat;
            userStatistics.TryGetValue(eachUpdate.Key, out eachStat);
            statistics.Add(new StatisticUpdate {
                StatisticName = eachUpdate.Key, Value = eachUpdate.Value
            });                                                           // Send the value to the server
            userStatistics[eachUpdate.Key] = eachStat + eachUpdate.Value; // Update the local cache so that future updates are using correct values
        }

        var request = new ExecuteCloudScriptRequest
        {
            FunctionName            = "SetPlayerStats",
            FunctionParameter       = new { statistics = statistics },
            GeneratePlayStreamEvent = true
        };

        PlayFabClientAPI.ExecuteCloudScript(request, OnUpdateUserStatisticsSuccess, PF_Bridge.PlayFabErrorCallback);
    }
Пример #21
0
        public void GetHalloweenLevels()
        {
            getHalloween = new List <int[]>();
            var request = new ExecuteCloudScriptRequest()
            {
                RevisionSelection = CloudScriptRevisionOption.Live,
                FunctionName      = "status",
                FunctionParameter = new { token, kid = kongID }
            };
            var  statusTask = PlayFabClientAPI.ExecuteCloudScriptAsync(request);
            bool _running   = true;

            while (_running)
            {
                if (statusTask.IsCompleted)
                {
                    var apiError  = statusTask.Result.Error;
                    var apiResult = statusTask.Result.Result;

                    if (apiError != null)
                    {
                        return;
                    }
                    else if (apiResult.FunctionResult != null)
                    {
                        JObject json       = JObject.Parse(apiResult.FunctionResult.ToString());
                        string  levels     = json["data"]["city"]["halloween"]["hero"].ToString();
                        int[]   heroLevels = getArray(levels);
                        getHalloween.Add(heroLevels);
                        return;
                    }
                    _running = false;
                }
                Thread.Sleep(1);
            }
            return;
        }
Пример #22
0
        public void sendHalloweenSolution()
        {
            var request = new ExecuteCloudScriptRequest()
            {
                RevisionSelection = CloudScriptRevisionOption.Live,
                FunctionName      = "fightH",
                FunctionParameter = new { kid = kongID, setup = lineup }
            };
            var statusTask = PlayFabClientAPI.ExecuteCloudScriptAsync(request);

            Task.Run(() => sendLog("CQMC sendHalloweenSolution " + JsonConvert.SerializeObject(statusTask)));
            bool _running = true;

            while (_running)
            {
                if (statusTask.IsCompleted)
                {
                    var apiError  = statusTask.Result.Error;
                    var apiResult = statusTask.Result.Result;

                    if (apiError != null)
                    {
                        DQResult = false;
                        return;
                    }
                    else if (apiResult.FunctionResult != null && apiResult.FunctionResult.ToString().Contains("true"))
                    {
                        DQResult = true;
                        return;
                    }
                    _running = false;
                }
                Thread.Sleep(1);
            }
            DQResult = false;
            return;
        }
Пример #23
0
        /// <summary>
        /// Not implemented yet.
        /// </summary>
        public static void LoginAccountOther(string otherUser, string key)
        {
            ExecuteCloudScriptRequest cloudRequest = new ExecuteCloudScriptRequest()
            {
                FunctionName      = "getLink",
                FunctionParameter = new { playerId = otherUser, secretKey = key }
            };

            PlayFabClientAPI.ExecuteCloudScript(cloudRequest, (cloudResult) =>
            {
                JSONNode node = JSON.Parse(PlayFab.Json.JsonWrapper.SerializeObject(cloudResult.FunctionResult));
                Debug.Log("Is Link valid?: " + node["validLink"].Value);
                bool validLink = false;
                bool.TryParse(node["validLink"].Value, out validLink);

                if (!validLink)
                {
                    return;
                }

                linkSecretKey = key;
                LoginWithCustomIDRequest loginRequest = new LoginWithCustomIDRequest()
                {
                    TitleId               = PlayFabSettings.TitleId,
                    CreateAccount         = false,
                    CustomId              = otherUser + key,
                    InfoRequestParameters = instance.accountParams
                };

                PlayFabClientAPI.LoginWithCustomID(loginRequest, (loginResult) =>
                {
                    Debug.Log("Logged into other Player Account");
                    instance.loginResult = loginResult;
                    LinkDevice();
                }, OnLinkError);
            }, OnLinkError);
        }
Пример #24
0
        public void CloudScript()
        {
            var request = new ExecuteCloudScriptRequest();

            request.FunctionName = "helloWorld";
            var cloudTask = PlayFabClientAPI.ExecuteCloudScriptAsync(request);

            WaitForResultSuccess(cloudTask, "Failed to Execute CloudScript");

            // Get the helloWorld return message
            JObject jobj = cloudTask.Result.Result.FunctionResult as JObject;

            UUnitAssert.NotNull(jobj);
            JToken jtok;

            jobj.TryGetValue("messageValue", out jtok);
            UUnitAssert.NotNull(jtok);
            JValue jval = jtok as JValue;

            UUnitAssert.NotNull(jval);
            string actualMessage = jval.Value as string;

            UUnitAssert.StringEquals("Hello " + playFabId + "!", actualMessage);
        }
Пример #25
0
        public void sendWB()
        {
            var request = new ExecuteCloudScriptRequest()
            {
                RevisionSelection = CloudScriptRevisionOption.Specific,
                SpecificRevision  = 190,
                FunctionName      = "fightWB",
                FunctionParameter = new { setup = lineup, kid = kongID }
            };
            var  statusTask = PlayFabClientAPI.ExecuteCloudScriptAsync(request);
            bool _running   = true;

            while (_running)
            {
                if (statusTask.IsCompleted)
                {
                    var apiError  = statusTask.Result.Error;
                    var apiResult = statusTask.Result.Result;

                    if (apiError != null)
                    {
                        DQResult = false;
                        return;
                    }
                    else if (apiResult != null && apiResult.FunctionResult.ToString().Contains("true"))
                    {
                        DQResult = true;
                        return;
                    }
                    _running = false;
                }
                Thread.Sleep(1);
            }
            DQResult = false;
            return;
        }
Пример #26
0
 public static IEnumerator <ExecuteCloudScriptResult> Do(ExecuteCloudScriptRequest request)
 {
     return(Do <ExecuteCloudScriptRequest, ExecuteCloudScriptResult>(request, PlayFabClientAPI.ExecuteCloudScript));
 }
 public UnityTask <ExecuteCloudScriptResult> Do(ExecuteCloudScriptRequest request)
 {
     return(this.Do <ExecuteCloudScriptRequest, ExecuteCloudScriptResult>(request, PlayFabClientAPI.ExecuteCloudScriptAsync));
 }
Пример #28
0
    //更新选中的天赋技能描述
    void UpdateTalentSkill(Sprite skillSprite)
    {
        /* UpdateTalentSkill函数实现步骤:(天赋技能数据已经由MainControllerPanel脚本获取,保存在GameInfo.titleData中)
         * 1. 在游戏界面右侧的天赋技能详细信息面板显示天赋技能图标和名字
         * 2. 从GameInfo.titleData中获取天赋技能的详细信息(使用PlayFabSimpeJson.DeserializeObject解析Json数据)
         * 3. 根据选中的天赋技能,显示该天赋技能的描述
         * 4. 根据玩家天赋技能的等级(PlayFabUserData类保存了玩家的天赋技能等级),显示玩家天赋技能等级和对应的加成属性
         * 5. 根据玩家天赋技能的等级,显示天赋技能下一等级数据,以及天赋技能升级需要的金币(注意处理天赋技能满级的情况)
         * 6. 根据玩家天赋技能等级,为天赋技能提升按钮LevelUpButton绑定事件函数,以及按钮是否可以交互
         *      如果玩家天赋技鞥已满级:禁用按钮交互,按钮显示“已满级”
         *      如果玩家天赋技能未解锁,禁用按钮交互,按钮显示“未解锁”
         *      如果玩家可以提升天赋技能,启用按钮交互,按钮显示“提升”,为按钮动态绑定天赋技能提升相关的实现代码:
         *          第一步,启用levelUpPanel面板,用于提示玩家天赋技能的提升状况
         *          第二部,判断玩家金币数量是否足够:
         *          若金币不足,在levelUpPanel面板提示玩家“金币不足,提升失败”,结束函数执行。
         *          若金币足够,在levelUpPanel面板提示玩家"天赋提升中...",并使用ExecuteCloudScript函数,调用CloudScript的UpgradeTalentSkill函数,完成玩家天赋技能的提升。
         *         (UpgradeTalentSkill函数包含三个参数,skillName表示提升的天赋技能名称,skillLevel表示玩家当前天赋技能等级,upgradeCost表示玩家天赋技能提升消耗的金币数)。
         *          ExecuteCloudScript函数执行成功,调用OnExecuteCloudScript函数,获取函数执行的结果,更新玩家的天赋技能等级以及玩家当前金币数,最后使用GetUserData函数,重新获取玩家的自定义属性Player Data。
         *          GetUserData函数执行成功,调用OnGetUserData函数,将玩家自定义属性Player Data保存在PlayFabUserData类的userData字段中,在levelUpPanel面板提示玩家“天赋技能提升成功”,最后根据currentSkillName字段更新天赋技能面板的显示。
         *          ExecuteCloudScript函数或GetUserData函数执行失败,调用OnPlayFabError函数,在levelUpPanel面板提示玩家“天赋技能提升失败”,并将失败原因输出到控制台。
         */
        //1. 在游戏界面右侧的天赋技能详细信息面板显示天赋技能图标和名字
        skillImage.sprite = skillSprite;
        //2. 从GameInfo.titleData中获取天赋技能的详细信息(使用PlayFabSimpeJson.DeserializeObject解析Json数据)
        Dictionary <string, string> skillData = new Dictionary <string, string>();

        skillData      = PlayFabSimpleJson.DeserializeObject <Dictionary <string, string> >(GameInfo.titleData[currentSkillName]);
        skillName.text = skillData["Name"];
        int lv = 0;

        switch (currentSkillName)
        {
        case "ExpAndMoneySkill": lv = PlayFabUserData.expAndMoneySkillLV;    //Debug.Log("更新选中天赋等级,此时currentSkillName:" + currentSkillName);
            break;

        case "ShootingRangeSkill": lv = PlayFabUserData.shootingRangeSkillLV;
            break;

        case "ShootingIntervalSkill": lv = PlayFabUserData.shootingIntervalSkillLV;
            break;

        case "ShootingDamageSkill": lv = PlayFabUserData.shootingDamageSkillLV;
            break;
        }
        //3.根据选中的天赋技能,显示该天赋技能的描述
        skillLevel.text       = "LV." + lv.ToString();
        skillDescription.text = skillData["Description"];
        if (lv == 0)
        {
            currentLevel.text = "";
        }
        else
        {
            currentLevel.text = "当前等级 +" + skillData["Level" + lv.ToString()] + "%";
        }
        if (lv == int.Parse(skillData["LevelUpperLimit"]))
        {
            nextLevel.text = "";
        }
        else
        {
            nextLevel.text = "下一等级 +" + skillData["Level" + (lv + 1).ToString()] + "%";
        }

        goldCurrencyCost.text = skillData["LevelCost" + lv.ToString()];
        int cost;

        if (lv.ToString() == skillData["LevelUpperLimit"])
        {
            cost = 0;
        }
        else
        {
            cost = int.Parse(skillData["LevelCost" + lv.ToString()]);
        }
        //玩家天赋已满级
        if (lv == int.Parse(skillData["LevelUpperLimit"]))
        {
            levelUpButton.interactable = false;
            levelUpButton.GetComponentInChildren <Text>().text = "已满级";
        }
        //玩家天赋技能未解锁
        else if (PlayFabUserData.lv < int.Parse(skillData["LVLimit"]))
        {
            levelUpButton.interactable = false;
            levelUpButton.GetComponentInChildren <Text>().text = "未解锁";
        }
        else
        {
            levelUpButton.interactable = true;
            levelUpButton.GetComponentInChildren <Text>().text = "提升";
            //如果玩家可以提升天赋技能,启用按钮交互,按钮显示“提升”,为按钮动态绑定天赋技能提升相关的实现代码:
            levelUpButton.onClick.RemoveAllListeners();
            levelUpButton.onClick.AddListener(delegate()
            {
                //启用levelUpPanel面板,用于提示玩家天赋技能的提升状况
                levelUpPanel.SetActive(true);
                Text text = levelUpPanel.GetComponentInChildren <Text>();
                //判断玩家金币数量是否足够:
                if (int.Parse(goldCurrencyCount.text) < int.Parse(goldCurrencyCost.text))
                {
                    text.text = "金币不足,提升失败";//若金币不足,在levelUpPanel面板提示玩家“金币不足,提升失败”,结束函数执行。
                }
                else
                {
                    text.text = "天赋提升中...";//若金币足够,在levelUpPanel面板提示玩家"天赋提升中..."
                    levelUpPanelBackButton.SetActive(false);
                    //使用ExecuteCloudScript函数,调用CloudScript的UpgradeTalentSkill函数,完成玩家天赋技能的提升。
                    ExecuteCloudScriptRequest request = new ExecuteCloudScriptRequest()
                    {
                        FunctionName      = "UpgradeTalentSkill",
                        FunctionParameter = new {
                            skillName   = currentSkillName,
                            skillLevel  = lv,
                            upgradeCost = cost
                        },
                        GeneratePlayStreamEvent = true
                    };
                    PlayFabClientAPI.ExecuteCloudScript(request, OnExecuteCloudScript, OnPlayFabError);
                }
            });
        }
    }
Пример #29
0
        private IEnumerator AwardQuartersCall(int expectedAward, OnAwardQuartersSuccessDelegate OnSucess, OnAwardQuartersFailedDelegate OnFailed)
        {
            //pull user details if dont exist
            if (CurrentUser == null)
            {
                bool   isUserDetailsDone   = false;
                string getUserDetailsError = "";

                StartCoroutine(GetUserDetailsCall(delegate(User user) {
                    //user details loaded
                    isUserDetailsDone = true;
                }, delegate(string userDetailsError) {
                    OnFailed("Getting user details failed: " + userDetailsError);
                    isUserDetailsDone   = true;
                    getUserDetailsError = userDetailsError;
                }));

                while (!isUserDetailsDone)
                {
                    yield return(new WaitForEndOfFrame());
                }

                //error occured, break out of coroutine
                if (!string.IsNullOrEmpty(getUserDetailsError))
                {
                    yield break;
                }
            }


            ExecuteCloudScriptRequest request = new ExecuteCloudScriptRequest();

            request.FunctionName            = "AwardQuarters";
            request.GeneratePlayStreamEvent = true;
            request.FunctionParameter       = new {
                amount = expectedAward,
                userId = Quarters.Instance.CurrentUser.id
            };


            PlayFabClientAPI.ExecuteCloudScript(request, delegate(ExecuteCloudScriptResult result) {
                bool errorOccured = false;
                //catch Playfab and cloud script errors
                if (result.Error != null)
                {
                    Debug.LogError("Quarters PlayFab Error: " + result.Error.Error);
                    Debug.LogError("Quarters PlayFab Error: " + result.Error.Message);
                    Debug.LogError("Quarters PlayFab Error: " + result.Error.StackTrace);
                    OnFailed(result.Error.Message);
                    errorOccured = true;
                }


                foreach (LogStatement logStatement in result.Logs)
                {
                    if (logStatement.Level == "Error")
                    {
                        Debug.LogError("Quarters PlayFab Error: " + logStatement.Message);
                        OnFailed("Playfab error: " + logStatement);
                        errorOccured = true;
                    }
                    else
                    {
                        Debug.Log("Quarters PlayFab " + logStatement.Message);
                    }
                }

                if (!errorOccured)
                {
                    Hashtable ht = JsonConvert.DeserializeObject <Hashtable>(result.FunctionResult.ToString());

                    if (ht.ContainsKey("txId"))
                    {
                        OnSucess((string)ht["txId"]);
                    }
                    else
                    {
                        Debug.Log(JsonConvert.SerializeObject(result.FunctionResult));
                        OnFailed("Unknown error");
                    }
                }
            }, delegate(PlayFabError error) {
                Debug.LogError(JsonConvert.SerializeObject(error.ErrorMessage));
            });
        }
Пример #30
0
 public static UnityTask <ExecuteCloudScriptResult> Do(ExecuteCloudScriptRequest request)
 {
     return(Do <ExecuteCloudScriptRequest, ExecuteCloudScriptResult>(request, PlayFabClientAPI.ExecuteCloudScript));
 }