public override IEnumerator ExecuteRequest()
        {
            var request = new ExecuteFunctionRequest
            {
                FunctionName      = Constants.WIN_CHECK_FUNCTION_NAME,
                FunctionParameter = new PlayFabIdRequest
                {
                    PlayFabId = Player.PlayFabId
                },
                AuthenticationContext = new PlayFabAuthenticationContext
                {
                    EntityToken = Player.EntityToken
                }
            };

            PlayFabCloudScriptAPI.ExecuteFunction(request,
                                                  (result) =>
            {
                ExecutionCompleted = true;
                WinCheckResult     = PlayFabSimpleJson.DeserializeObject <WinCheckResult>(result.FunctionResult.ToString());
            },
                                                  (error) =>
            {
                throw new Exception($"WinCheck request failed. Message: ${error.ErrorMessage}, Code: ${error.HttpCode}");
            });

            yield return(WaitForExecution());
        }
Ejemplo n.º 2
0
        public static async Task <dynamic> MakeHTTPRequest(
            [HttpTrigger(AuthorizationLevel.Function, "post", Route = null)] HttpRequestMessage req, ILogger log)
        {
            /* Create the function execution's context through the request */
            var context = await FunctionContext <dynamic> .Create(req);

            var args = context.FunctionArgument;

            /* Prepare the body, headers, and url of the external HTTP request */
            dynamic body = new
            {
                input  = args,
                userId = context.CurrentPlayerId,
                mode   = "foobar"
            };
            var requestContent = new StringContent(PlayFabSimpleJson.SerializeObject(body));

            requestContent.Headers.Add("X-MyCustomHeader", "Some Value");
            requestContent.Headers.ContentType = new MediaTypeHeaderValue("application/json");
            var url = "http://httpbin.org/status/200";

            /* Execute the HTTP request using a simple HttpClient */
            using (var client = new HttpClient())
            {
                using (var httpResponseMessage =
                           await client.PostAsync(url, requestContent))
                {
                    using (var responseContent = httpResponseMessage.Content)
                    {
                        return(await responseContent.ReadAsAsync <dynamic>());
                    }
                }
            }
        }
Ejemplo n.º 3
0
        public static async Task <dynamic> UnlockHighSkillContent(
            [HttpTrigger(AuthorizationLevel.Function, "post", Route = null)] HttpRequestMessage req, ILogger log)
        {
            /* Create the function execution's context through the request */
            var context = await FunctionPlayerPlayStreamContext <dynamic> .Create(req);

            var args = context.FunctionArgument;

            var playerStatUpdatedEvent = PlayFabSimpleJson.DeserializeObject <dynamic>(context.PlayStreamEventEnvelope.EventData);

            var request = new UpdateUserInternalDataRequest
            {
                PlayFabId = context.CurrentPlayerId,
                Data      = new Dictionary <string, string>
                {
                    { "HighSkillContent", "true" },
                    { "XPAtHighSkillUnlock", playerStatUpdatedEvent["StatisticValue"].ToString() }
                }
            };

            /* Use the ApiSettings and AuthenticationContext provided to the function as context for making API calls. */
            var serverApi = new PlayFabServerInstanceAPI(context.ApiSettings, context.AuthenticationContext);

            /* Execute the Server API request */
            var updateUserDataResponse = await serverApi.UpdateUserInternalDataAsync(request);

            log.LogInformation($"Unlocked HighSkillContent for {context.PlayerProfile.DisplayName}");

            return(new
            {
                profile = context.PlayerProfile
            });
        }
Ejemplo n.º 4
0
    public void FilterResult(ExecuteCloudScriptResult result)
    {
        ClaimedRewards.Clear();
        JSONNode jsonResultPF = PlayFabSimpleJson.SerializeObject(result.FunctionResult);

        jsonResult = JSON.Parse(result.FunctionResult.ToString());

        Debug.Log("json result playfab " + jsonResultPF.ToString());
        Debug.Log("json result " + jsonResult.ToString());
        if ((jsonResult.Value.Equals("null") || result.Error != null))
        {
            status = FMRewardStatus.error;
            return;
        }

        /*{ "status":"success",
         * "rewards":
         * [{"achievement_key":"stages_created","reward_Key":"default_co_200","reward_type":"coins","amount":200}]
         * }
         */
        Debug.Log("function result  size" + jsonResult["rewards"].AsArray.Count);
        for (int i = 0; i < jsonResult["rewards"].AsArray.Count; i++)
        {
            string rewardKey  = jsonResult["rewards"].AsArray[i]["reward_Key"];
            string rewardType = jsonResult["rewards"].AsArray[i]["reward_type"];

            FMRewardType rewadType   = rewardType.Equals("item") ? FMRewardType.Item : FMRewardType.Currency;
            int          rewardValue = rewadType == FMRewardType.Currency ? jsonResult["rewards"].AsArray[i]["amount"].AsInt : 0;
            string       itemKey     = rewadType == FMRewardType.Item ? jsonResult["rewards"].AsArray[i]["item_key"].Value : "";

            //var ri = new FMRewardItem(rewardKey, rewardType, rewardValue, rewardValue);
            //ClaimedRewards.Add(ri);
        }
    }
Ejemplo n.º 5
0
        public static async Task <dynamic> Run(
            [HttpTrigger(AuthorizationLevel.Anonymous, "get", "post", Route = null)] HttpRequest req,
            ILogger log)
        {
            try{
                string body = await req.ReadAsStringAsync();

                var context = JsonConvert.DeserializeObject <FunctionExecutionContext <dynamic> >(body);
                var request = JsonConvert.DeserializeObject <FunctionExecutionContext <DevelopConsumeStaminaApiRequest> >(body).FunctionArgument;

                var stamina = await StaminaUtil.ConsumeAsync(context, request.consumeStamina);

                return(PlayFabSimpleJson.SerializeObject(new DevelopConsumeStaminaApiResponse()
                {
                    stamina = stamina
                }));
            }catch (PMApiException e) {
                // レスポンスの作成
                var response = new PMApiResponseBase()
                {
                    errorCode = e.errorCode,
                    message   = e.message
                };
                return(PlayFabSimpleJson.SerializeObject(response));
            }
        }
Ejemplo n.º 6
0
    // Use this for initialization
    void Start()
    {
//        damageRadius = 50;
//        damage = 20;
//        range = 500;
        v0 = 200;
        string name = gameObject.name.Split('(')[0];

        Debug.Log(gameObject.name);
        foreach (CatalogItem i in GameInfo.catalogItems)
        {
            //Debug.Log (i.ItemId.Split('-')[0]);
            //  把临时道具的时间信息去掉,比如'-1day'
            if (i.ItemId.Split('-')[0] == name)
            {
                Dictionary <string, string> data = PlayFabSimpleJson.DeserializeObject <Dictionary <string, string> > (i.CustomData);
                string rangeStr, damageStr, radiusStr;
                data.TryGetValue("炮弹射程", out rangeStr);
                data.TryGetValue("炮弹威力", out damageStr);
                data.TryGetValue("爆炸范围", out radiusStr);
                range        = float.Parse(rangeStr);
                damage       = int.Parse(damageStr);
                damageRadius = float.Parse(radiusStr);

                break;
            }
        }
        Debug.Log("炮弹射程" + range + " 炮弹威力" + damage + " 爆炸范围" + damageRadius + "。");
    }
        /// <summary>
        /// Creates a new <c>FunctionTaskContext</c> out of the incoming request to an Azure Function.
        /// </summary>
        /// <param name="request">The request incoming to an Azure Function from the PlayFab server</param>
        /// <returns>A new populated <c>FunctionTaskContext</c> instance</returns>
        public static async Task <FunctionTaskContext <TFunctionArgument> > Create(HttpRequestMessage request)
        {
            using (var content = request.Content)
            {
                var body = await content.ReadAsStringAsync();

                var contextInternal = PlayFabSimpleJson.DeserializeObject <FunctionTaskContextInternal>(body);
                var settings        = new PlayFabApiSettings
                {
                    TitleId            = contextInternal.TitleAuthenticationContext.Id,
                    DeveloperSecretKey = Environment.GetEnvironmentVariable("PLAYFAB_DEV_SECRET_KEY", EnvironmentVariableTarget.Process)
                };

                var authContext = new PlayFabAuthenticationContext
                {
                    EntityToken = contextInternal.TitleAuthenticationContext.EntityToken
                };

                return(new FunctionTaskContext <TFunctionArgument>()
                {
                    ApiSettings = settings,
                    AuthenticationContext = authContext,
                    ScheduledTaskNameId = contextInternal.ScheduledTaskNameId,
                    EventHistory = contextInternal.EventHistory,
                    FunctionArgument = contextInternal.FunctionArgument
                });
            }
        }
Ejemplo n.º 8
0
        private static async Task <object> ExtractFunctionResult(HttpContent content)
        {
            string responseContent = await content.ReadAsStringAsync();

            if (!string.IsNullOrWhiteSpace(responseContent))
            {
                // JSON object or array
                if (responseContent.StartsWith("{") || responseContent.StartsWith("["))
                {
                    return(PlayFabSimpleJson.DeserializeObject(responseContent));
                }
                // JSON number
                else if (float.TryParse(responseContent, out float f))
                {
                    return(f);
                }
                // JSON true or false
                else if (bool.TryParse(responseContent, out bool b))
                {
                    return(b);
                }
                else // JSON string
                {
                    return(responseContent);
                }
            }

            return(null);
        }
Ejemplo n.º 9
0
        public static async Task AddGameStateHistory(TicTacToeState gameState, string playFabId, PlayFabApiSettings apiSettings, PlayFabAuthenticationContext authenticationContext)
        {
            var gamesPlayed = await GameDataUtil.GetGamesPlayed(playFabId, apiSettings, authenticationContext);

            var key = $"{Constants.GAME_STATE_KEY}_{gamesPlayed + 1}";

            var serializedGameState = PlayFabSimpleJson.SerializeObject(gameState);

            var request = new UpdateUserDataRequest()
            {
                PlayFabId = playFabId,
                Data      = new Dictionary <string, string>()
                {
                    { key, serializedGameState }
                }
            };

            var serverApi = new PlayFabServerInstanceAPI(apiSettings, authenticationContext);

            var result = await serverApi.UpdateUserDataAsync(request);

            if (result.Error != null)
            {
                throw new Exception($"An error occured while updating the game state: Error: {result.Error.GenerateErrorReport()}");
            }

            await GameDataUtil.SetGamesPlayed(gamesPlayed + 1, playFabId, apiSettings, authenticationContext);
        }
        public static async Task <dynamic> Run(
            [HttpTrigger(AuthorizationLevel.Anonymous, "get", "post", Route = null)] HttpRequest req,
            ILogger log)
        {
            string body = await req.ReadAsStringAsync();

            var context = JsonConvert.DeserializeObject <FunctionExecutionContext <Dictionary <string, List <string> > > >(body);
            var args    = context.FunctionArgument;

            // 引数でテーブル名を渡す
            dynamic itemIdList = null;

            if (args != null && args["itemIdList"] != null)
            {
                itemIdList = args["itemIdList"];
            }

            // ドロップテーブルからアイテムを取得する
            var grantedItemList = await GrantItemsToUserTask(context, itemIdList);

            // レンポンスの作成
            var response = new GrantItemsToUserApiResponse()
            {
                itemInstanceList = grantedItemList,
            };

            return(PlayFabSimpleJson.SerializeObject(response));
        }
        public static TestTitleData VerifyTestTitleData()
        {
#if NET45 || NETCOREAPP2_0
            if (TestTitleData == null)
            {
                try
                {
                    var testTitleDataPath = Environment.GetEnvironmentVariable("PF_TEST_TITLE_DATA_JSON");
                    var jsonContent       = File.ReadAllText(testTitleDataPath + "/testTitleData.json");
                    TestTitleData = PlayFabSimpleJson.DeserializeObject <TestTitleData>(jsonContent);
                }
                catch (Exception)
                {
                }
            }
#endif
            // Fall back on hard coded testTitleData if necessary (Put your own data here)
            if (TestTitleData == null)
            {
                TestTitleData = new TestTitleData {
                    titleId = "6195", userEmail = "*****@*****.**"
                }
            }
            ;

            PlayFabSettings.staticSettings.TitleId = TestTitleData.titleId;

            return(TestTitleData);
        }
Ejemplo n.º 12
0
        public EventSignal <T> Send <T>(IConnection connection, string data)
        {
            string _url = connection.Url + "send";
            string _customQueryString = GetCustomQueryString(connection);

            _url += String.Format(
                c_sendQueryString,
                m_transport,
                Uri.EscapeDataString(connection.ConnectionToken),
                _customQueryString);

            var _postData = new Dictionary <string, string> {
                { "data", data },
            };

            var _returnSignal = new EventSignal <T>();
            var _postSignal   = m_httpClient.PostAsync(_url, connection.PrepareRequest, _postData);

            _postSignal.Finished += (sender, e) =>
            {
                string _raw = e.Result.ReadAsString();

                if (String.IsNullOrEmpty(_raw))
                {
                    _returnSignal.OnFinish(default(T));
                    return;
                }

                _returnSignal.OnFinish(PlayFabSimpleJson.DeserializeObject <T>(_raw));
            };
            return(_returnSignal);
        }
        public override IEnumerator ExecuteRequest()
        {
            // Create the move request
            var request = new ExecuteFunctionRequest
            {
                FunctionName      = Constants.PLAYER_MOVE_FUNCTION_NAME,
                FunctionParameter = new MakePlayerMoveRequest
                {
                    PlayFabId = Player.PlayFabId,
                    Move      = MoveToExecute
                },
                AuthenticationContext = new PlayFabAuthenticationContext
                {
                    EntityToken = Player.EntityToken
                }
            };

            // Execute the move request
            PlayFabCloudScriptAPI.ExecuteFunction(request,
                                                  (result) =>
            {
                ExecutionCompleted = true;
                MoveResult         = PlayFabSimpleJson.DeserializeObject <MakePlayerMoveResult>(result.FunctionResult.ToString());
            },
                                                  (error) =>
            {
                throw new Exception($"MakePlayerMove request failed. Message: {error.ErrorMessage}, Code: {error.HttpCode}");
            });

            yield return(WaitForExecution());
        }
Ejemplo n.º 14
0
    void UpdateTeam()
    {
        string jsonToUpdate = PlayFabSimpleJson.SerializeObject(PF_PlayerData.MyTeamsCharacterId);

        PF_PlayerData.UpdateUserData(new Dictionary <string, string>()
        {
            { "Teams", jsonToUpdate }
        }, "Public", (UpdateUserDataResult) => { Debug.Log(" teams updated"); });
    }
Ejemplo n.º 15
0
    //初始化
    void Start()
    {
        playerHealth = GetComponent <PlayerHealth> ();          //获取玩家PlayerHealth组件
        myCamera     = Camera.main;
        timer        = 0.0f;                                    //初始化玩家与上次射击的间隔
        if (photonView.isMine)
        {
            //根据本地玩家的天赋等级技能,设置玩家的射击参数
            Dictionary <string, string> gunData = null;
            foreach (CatalogItem i in GameInfo.catalogItems)
            {
                if (i.ItemClass == PlayFabUserData.equipedWeapon)
                {
                    gunData = PlayFabSimpleJson.DeserializeObject <Dictionary <string, string> >(i.CustomData);
                    break;
                }
            }
            Dictionary <string, string> skillData = null;
            float value;
            int   myShootingDamage = 0;
            float myShootingRange = 0.0f, myTimeBetweenShooting = 0.0f, myRecoilForce = 1.0f;
            foreach (KeyValuePair <string, string> kvp in gunData)
            {
                switch (kvp.Key)
                {
                //计算枪械威力
                case "枪械威力":
                    skillData        = PlayFabSimpleJson.DeserializeObject <Dictionary <string, string> >(GameInfo.titleData["ShootingDamageSkill"]);
                    value            = float.Parse(kvp.Value) * (1.0f + float.Parse(skillData["Level" + PlayFabUserData.shootingDamageSkillLV.ToString()]) / 100);
                    myShootingDamage = (int)value;
                    break;

                //计算枪械射程
                case "枪械射程":
                    skillData       = PlayFabSimpleJson.DeserializeObject <Dictionary <string, string> >(GameInfo.titleData["ShootingRangeSkill"]);
                    value           = float.Parse(kvp.Value) * (1.0f + float.Parse(skillData["Level" + PlayFabUserData.shootingRangeSkillLV.ToString()]) / 100);
                    myShootingRange = value;
                    break;

                //计算射击间隔
                case "射击间隔":
                    skillData             = PlayFabSimpleJson.DeserializeObject <Dictionary <string, string> >(GameInfo.titleData["ShootingIntervalSkill"]);
                    value                 = float.Parse(kvp.Value) * (1.0f - float.Parse(skillData["Level" + PlayFabUserData.shootingIntervalSkillLV.ToString()]) / 100);
                    myTimeBetweenShooting = value;
                    break;

                //计算后坐力(暂时不影响玩家射击)
                case "后坐力":
                    myRecoilForce = float.Parse(kvp.Value);
                    break;
                }
            }
            //初始化其他节点中,该玩家的射击参数
            photonView.RPC("Init", PhotonTargets.All, PlayFabUserData.equipedWeapon, myShootingDamage, myShootingRange, myTimeBetweenShooting, myRecoilForce);
        }
    }
Ejemplo n.º 16
0
    private void OnCloudHelloWorld(ExecuteCloudScriptResult result)
    {
        // CloudScript returns arbitrary results, so you have to evaluate them one step and one parameter at a time
        Debug.Log(PlayFabSimpleJson.SerializeObject(result.FunctionResult));
        JsonObject jsonResult = (JsonObject)result.FunctionResult;
        object     messageValue;

        jsonResult.TryGetValue("messageValue", out messageValue); // note how "messageValue" directly corresponds to the JSON values set in CloudScript
        Debug.Log((string)messageValue);
    }
Ejemplo n.º 17
0
        public void TestDeserializeToObject(UUnitTestContext testContext)
        {
            var testInt    = PlayFabSimpleJson.DeserializeObject <object>("1");
            var testString = PlayFabSimpleJson.DeserializeObject <object>("\"a string\"");

            testContext.IntEquals((int)(ulong)testInt, 1);
            testContext.StringEquals((string)testString, "a string");

            testContext.EndTest(UUnitFinishState.PASSED, null);
        }
        private string OnConnectionSending()
        {
            var _data = new List <HubRegistrationData>();

            foreach (var p in m_hubs)
            {
                _data.Add(new HubRegistrationData {
                    Name = p.Key
                });
            }
            return(PlayFabSimpleJson.SerializeObject(_data));
        }
Ejemplo n.º 19
0
    //显示成就奖励条目
    void ShowRewardItems()
    {
        int length = rewardItems.Length, i;
        Dictionary <string, string> myData;

        Text[] texts;
        Button button;

        //显示成就奖励条目
        for (i = 0; i < rewardKeys.Count; i++)
        {
            string rewardName = rewardKeys[i];
            texts  = rewardItems[i].GetComponentsInChildren <Text>();
            button = rewardItems[i].GetComponentInChildren <Button>();
            myData = PlayFabSimpleJson.DeserializeObject <Dictionary <string, string> >(rewardData[rewardName]);
            int rewardValue = int.Parse(myData["RewardValue"]);
            //成就奖励
            texts[1].text = myData["RewardValue"];
            //累计获得成就点和奖励目标成就点
            texts[2].text = "累计获得成就点" + PlayFabUserData.achievementPoints + "/" + myData["TargetPoints"];
            //如果成就奖励已领取
            if (PlayFabUserData.userData.ContainsKey(rewardName))
            {
                button.interactable = false;
                texts[3].text       = "已领取";
            }
            //如果成就奖励未领取,且成就奖励目标已达成
            else if (PlayFabUserData.achievementPoints >= int.Parse(myData["TargetPoints"]))
            {
                button.interactable = true;
                button.onClick.RemoveAllListeners();
                button.onClick.AddListener(delegate()
                {
                    GetReward(rewardName, rewardValue);
                });
                texts[3].text = "领取";
            }
            //如果成就奖励未完成
            else
            {
                button.interactable = false;
                texts[3].text       = "未完成";
            }
            rewardItems[i].SetActive(true);
        }
        for (; i < length; i++)
        {
            rewardItems[i].SetActive(false);
        }
    }
        public static string GetApiVersion(ApiCategory apiCategory)
        {
            var packageJson = (TextAsset)AssetDatabase.LoadAssetAtPath(Path.Combine(Strings.Package.BuildPath(apiCategory), "package.json"),
                                                                       typeof(TextAsset));

            if (packageJson != null)
            {
                return(PlayFabSimpleJson.DeserializeObject <Dictionary <string, string> >(packageJson.text)["version"]);
            }
            else
            {
                return(null);
            }
        }
        private static T Convert <T>(object obj)
        {
            if (obj == null)
            {
                return(default(T));
            }

            if (typeof(T).IsAssignableFrom(obj.GetType()))
            {
                return((T)obj);
            }

            return(PlayFabSimpleJson.DeserializeObject <T>(obj.ToString()));
        }
Ejemplo n.º 22
0
    //TODO put in a different result class
    void OnSoldItems(ExecuteCloudScriptResult result)
    {
        //for some weird reason, result is not retutning so we put the result in a log, wth
        Debug.Log("result " + PlayFabSimpleJson.SerializeObject(result));
        //JSONNode json = JSON.Parse(result.FunctionResult.ToString());
        JSONNode json = PlayFabSimpleJson.SerializeObject(result.FunctionResult);

        //if (json == null || json["status"].Equals("error")) {
        //    string msg = json["message"] != null ? json["message"].Value : "";
        //    Debug.Log("error selling the item, "+ msg);
        //}
        //ClientSessionData.Instance.currencyCO += json["sell_price"].AsInt;
        //labCO.text = ClientSessionData.Instance.currencyCO.ToString();

        string logResult = result.Logs.Count > 0 ? result.Logs[0].Message : "";

        if (string.IsNullOrEmpty(logResult))
        {
            Debug.Log("no result");
            return;
        }

        if (logResult.Contains("success"))
        {
            string sellPrice = logResult.Split(' ')[1];
            Debug.Log("sell price string " + sellPrice);
            ClientSessionData.Instance.currencyCO += int.Parse(sellPrice);
            labCO.text = ClientSessionData.Instance.currencyCO.ToString();
        }

        //remove item if amount is 0
        selectedItem.Item.Amount -= 1;
        labDetailAmount.text      = "x " + selectedItem.Item.Amount;

        if (selectedItem.Item.Amount <= 0)
        {
            string itemID = selectedItem.Item.InstanceID;
            ClientSessionData.Instance.InventoryItems.Remove(selectedItem.Item);

            //remove from grid
            Transform gridItem = grid.GetChildList().Find(x => x.gameObject.GetComponent <FMInventoryItemUI>().Item.InstanceID.Equals(itemID));
            if (gridItem != null)
            {
                Destroy(gridItem.gameObject);
            }
            grid.Reposition();
            HideDetailScreen();
        }
    }
Ejemplo n.º 23
0
    //添加经验值
    void AddUserExp(int resultWeight)
    {
        var playerCustomProperties = PhotonNetwork.player.customProperties;
        int expAmount = 20 + 50 * resultWeight + 10 * (int)playerCustomProperties["Score"] - 1 * (int)playerCustomProperties["Death"];
        Dictionary <string, string> skillData = PlayFabSimpleJson.DeserializeObject <Dictionary <string, string> >(GameInfo.titleData["ExpAndMoneySkill"]);

        expAmount = (int)((float)expAmount * (1.0f + float.Parse(skillData["Level" + PlayFabUserData.expAndMoneySkillLV.ToString()]) / 100));
        GMInstance.UIController.showExpReward(expAmount);
        PlayFabUserData.exp += expAmount;
        if (PlayFabUserData.exp >= GameInfo.levelExps[PlayFabUserData.lv] && GameInfo.levelExps[PlayFabUserData.lv] != -1)
        {
            PlayFabUserData.exp -= GameInfo.levelExps[PlayFabUserData.lv];
            PlayFabUserData.lv++;
        }
    }
Ejemplo n.º 24
0
        private static string GetHostRoutePrefix()
        {
            string hostFileContent = null;
            string currDir         = Directory.GetCurrentDirectory();
            string currDirHostFile = Path.Combine(currDir, "host.json");

            if (File.Exists(currDirHostFile))
            {
                hostFileContent = ReadAllFileText(currDirHostFile);
            }

            var hostModel = PlayFabSimpleJson.DeserializeObject <HostJsonModel>(hostFileContent);

            return(hostModel?.extensions?.http?.routePrefix ?? _defaultRoutePrefix);
        }
Ejemplo n.º 25
0
    //添加金币
    void AddUserCurrency(int resultWeight)
    {
        var playerCustomProperties            = PhotonNetwork.player.customProperties;
        int currencyAmount                    = 20 + 200 * resultWeight + 10 * (int)playerCustomProperties["Score"] - 1 * (int)playerCustomProperties["Death"];
        Dictionary <string, string> skillData = PlayFabSimpleJson.DeserializeObject <Dictionary <string, string> >(GameInfo.titleData["ExpAndMoneySkill"]);

        currencyAmount = (int)((float)currencyAmount * (1.0f + float.Parse(skillData["Level" + PlayFabUserData.expAndMoneySkillLV.ToString()]) / 100));
        GMInstance.UIController.showCurrencyReward(currencyAmount);
        AddUserVirtualCurrencyRequest request = new AddUserVirtualCurrencyRequest()
        {
            VirtualCurrency = "GC",
            Amount          = currencyAmount
        };

        PlayFabClientAPI.AddUserVirtualCurrency(request, (result) => {  }, (error) => { });
    }
Ejemplo n.º 26
0
 public static void OnDrawCharactersSuccess(ExecuteCloudScriptResult result)
 {
     if (!PF_Bridge.VerifyErrorFreeCloudScriptResult(result))
     {
         return;
     }
     if (result.FunctionResult.ToString() != "false")
     {
         List <string> grantedName = PlayFabSimpleJson.DeserializeObject <List <string> >(result.FunctionResult.ToString());
         PF_Bridge.RaiseCallbackSuccess(grantedName[0], PlayFabAPIMethods.DrawCharacterToUser, MessageDisplayStyle.none);
     }
     else
     {
         PF_Bridge.RaiseCallbackSuccess("you dont have enough money to draw", PlayFabAPIMethods.DrawCharacterToUser, MessageDisplayStyle.none);
     }
 }
Ejemplo n.º 27
0
    /// <summary>
    /// Raises the retrive quest items success event.
    /// </summary>
    /// <param name="result">Result.</param>
    public static void OnRetriveQuestItemsSuccess(ExecuteCloudScriptResult result)
    {
        if (!PF_Bridge.VerifyErrorFreeCloudScriptResult(result))
        {
            return;
        }

        Debug.Log(result.ToString());
        QuestProgress.ItemsGranted = PlayFabSimpleJson.DeserializeObject <List <ItemGrantResult> >(result.FunctionResult.ToString());

        PF_GamePlay.QuestProgress.areItemsAwarded = true;

        //PF_PlayerData.GetCharacterInventory(PF_PlayerData.activeCharacter.characterDetails.CharacterId);
        //PF_PlayerData.GetUserInventory();
        PF_Bridge.RaiseCallbackSuccess("Items granted", PlayFabAPIMethods.RetriveQuestItems, MessageDisplayStyle.none);
    }
Ejemplo n.º 28
0
        public EventSignal <T> Invoke <T>(string method, params object[] args)
        {
            if (method == null)
            {
                throw new ArgumentNullException("method");
            }

            var hubData = new HubInvocation
            {
                Hub        = m_hubName,
                Method     = method,
                Args       = args,
                State      = m_state,
                CallbackId = "1"
            };

            var _value     = PlayFabSimpleJson.SerializeObject(hubData);
            var _newSignal = new OptionalEventSignal <T>();
            var _signal    = m_connection.Send <HubResult <T> >(_value);

            _signal.Finished += (sender, e) =>
            {
                if (e.Result != null)
                {
                    if (e.Result.Error != null)
                    {
                        throw new InvalidOperationException(e.Result.Error);
                    }

                    HubResult <T> _hubResult = e.Result;
                    if (_hubResult.State != null)
                    {
                        foreach (var pair in _hubResult.State)
                        {
                            this[pair.Key] = pair.Value;
                        }
                    }

                    _newSignal.OnFinish(_hubResult.Result);
                }
                else
                {
                    _newSignal.OnFinish(default(T));
                }
            };
            return(_newSignal);
        }
        public static async Task <dynamic> Run(
            [HttpTrigger(AuthorizationLevel.Anonymous, "get", "post", Route = null)] HttpRequest req,
            ILogger log)
        {
            try{
                string body = await req.ReadAsStringAsync();

                var context = JsonConvert.DeserializeObject <FunctionExecutionContext <dynamic> >(body);
                var request = JsonConvert.DeserializeObject <FunctionExecutionContext <UpdateUserMonsterFormationApiRequest> >(body).FunctionArgument;

                var userData = await DataProcessor.GetUserDataAsync(context);

                var userMonsterPartyList = userData.userMonsterPartyList ?? new List <UserMonsterPartyInfo>();
                var index = userMonsterPartyList.FindIndex(u => u.partyId == request.partyId);
                if (index < 0)
                {
                    // 存在しない場合は新規作成して追加
                    var userMonsterParty = new UserMonsterPartyInfo()
                    {
                        id                = UserDataUtil.CreateUserDataId(),
                        partyId           = request.partyId,
                        userMonsterIdList = request.userMonsterIdList,
                    };
                    userMonsterPartyList.Add(userMonsterParty);
                }
                else
                {
                    // すでに存在する場合は更新
                    userMonsterPartyList[index].userMonsterIdList = request.userMonsterIdList;
                }
                await DataProcessor.UpdateUserDataAsync(context, new Dictionary <UserDataKey, object>() { { UserDataKey.userMonsterPartyList, userMonsterPartyList } });

                var response = new UpdateUserMonsterFormationApiResponse()
                {
                };
                return(PlayFabSimpleJson.SerializeObject(response));
            }catch (PMApiException e) {
                // レスポンスの作成
                var response = new PMApiResponseBase()
                {
                    errorCode = e.errorCode,
                    message   = e.message
                };
                return(PlayFabSimpleJson.SerializeObject(response));
            }
        }
Ejemplo n.º 30
0
        /// <summary>
        /// Fetch's an entity's profile from the PlayFab server
        /// </summary>
        /// <param name="callerEntityToken">The entity token of the entity profile being fetched</param>
        /// <returns>The entity's profile</returns>
        private static async Task <EntityProfileBody> GetEntityProfile(string callerEntityToken, EntityKey entity)
        {
            // Construct the PlayFabAPI URL for GetEntityProfile
            var getProfileUrl = GetServerApiUri("/Profile/GetProfile");

            // Create the get entity profile request
            var profileRequest = new GetEntityProfileRequest
            {
                Entity = entity
            };

            // Prepare the request headers
            var profileRequestContent = new StringContent(PlayFabSimpleJson.SerializeObject(profileRequest));

            profileRequestContent.Headers.Add("X-EntityToken", callerEntityToken);
            profileRequestContent.Headers.ContentType = new MediaTypeHeaderValue("application/json");

            PlayFabJsonSuccess <GetEntityProfileResponse> getProfileResponseSuccess = null;
            GetEntityProfileResponse getProfileResponse = null;

            // Execute the get entity profile request
            using (var profileResponseMessage =
                       await httpClient.PostAsync(getProfileUrl, profileRequestContent))
            {
                using (var profileResponseContent = profileResponseMessage.Content)
                {
                    string profileResponseString = await profileResponseContent.ReadAsStringAsync();

                    // Deserialize the http response
                    getProfileResponseSuccess =
                        PlayFabSimpleJson.DeserializeObject <PlayFabJsonSuccess <GetEntityProfileResponse> >(profileResponseString);

                    // Extract the actual get profile response from the deserialized http response
                    getProfileResponse = getProfileResponseSuccess?.data;
                }
            }

            // If response object was not filled it means there was an error
            if (getProfileResponseSuccess?.data == null || getProfileResponseSuccess?.code != 200)
            {
                throw new Exception($"Failed to get Entity Profile: code: {getProfileResponseSuccess?.code}");
            }

            return(getProfileResponse.Profile);
        }