コード例 #1
0
        public override async Task <CloudScriptResponse> ExecuteAsync(CloudScriptRequest request, string[] urlArguments)
        {
            DateTime benginRequest = DateTime.UtcNow;

            if (IsClientValidRequest(request))
            {
                var cloudData = new PlayFabFileDetails(MetaSettings.MetaDataStateFileName);

                if (await PlayFabApiHandler.GetPlayerTitleData(request.UserId, new List <PlayFabFileDetails>()
                {
                    cloudData
                }))
                {
                    MetaDataState metaDataState = MetaDataState.FromJson <MetaDataState>(cloudData.DataAsString);

                    if (metaDataState != null)
                    {
                        bool updatePlayerData = false;

                        if (AddEnergyToPlayer(metaDataState) > 0)
                        {
                            updatePlayerData = true;
                        }

                        if (metaDataState.SyncLoginCalendar())
                        {
                            updatePlayerData = true;
                        }

                        bool applyDailyReset = false;
                        if (DateTime.UtcNow > metaDataState.NextDailyReset)
                        {
                            metaDataState.ApplyDailyReset();
                            updatePlayerData = true;
                        }

                        if (updatePlayerData)
                        {
                            cloudData.DataAsString = metaDataState.ToJson();
                            await PlayFabApiHandler.UploadPlayerTitleData(request.UserId, new List <PlayFabFileDetails>() { cloudData });
                        }

                        CloudScriptResponse response = new CloudScriptResponse();
                        response.Method       = this.GetType().Name;
                        response.ResponseCode = ResponseCode.Success;
                        response.Params.Add("EnergyBalance", metaDataState.Consumables.GetConsumableAmount(Consumable.GetByName <Consumable>(MetaSettings.EnergyId)).ToString());
                        response.Params.Add("ApplyDailyReset", applyDailyReset.ToString());
                        response.Params.Add("UniqueId", metaDataState.UniqueId);
                        return(response);
                    }
                }
            }
            return(new CloudScriptResponse()
            {
                ResponseCode = ResponseCode.Error
            });
        }
コード例 #2
0
ファイル: Shop.cs プロジェクト: jfmitchell-git/3DFitMetaLoop
        public override async Task <CloudScriptResponse> ExecuteAsync(CloudScriptRequest request, string[] urlArguments)
        {
            DateTime benginRequest = DateTime.UtcNow;

            if (IsClientValidRequest(request))
            {
                var cloudData = new PlayFabFileDetails(MetaSettings.MetaDataStateFileName);

                if (await PlayFabApiHandler.GetPlayerTitleData(request.UserId, new List <PlayFabFileDetails>()
                {
                    cloudData
                }))
                {
                    MetaDataState state = MetaDataState.FromJson <MetaDataState>(cloudData.DataAsString);
                    cloudData.DataAsString = state.ToJson();

                    string methodName = urlArguments[0] + ServerMethodSuffix;

                    //Type shopManager = typeof(ShopManager);
                    //ShopRequestResult shopRequestResult = shopManager.GetMethod(methodName).Invoke(null, new object[] { state, request.CloudScriptMethod }) as ShopRequestResult;

                    cloudData.DataAsString = state.ToJson();

                    if (await PlayFabApiHandler.UploadPlayerTitleData(request.UserId, new List <PlayFabFileDetails>()
                    {
                        cloudData
                    }))
                    {
                        CloudScriptResponse response = new CloudScriptResponse()
                        {
                            ResponseCode = ResponseCode.Success, Method = this.GetType().Name
                        };
                        //response.Params.Add("ShopRequestResult", JsonConvert.SerializeObject(shopRequestResult));
                        return(response);
                    }
                }
            }

            return(new CloudScriptResponse()
            {
                ResponseCode = ResponseCode.Error
            });
        }
コード例 #3
0
        public override async Task <CloudScriptResponse> ExecuteAsync(CloudScriptRequest request, string[] urlArguments)
        {
            DateTime benginRequest = DateTime.UtcNow;

            if (IsClientValidRequest(request))
            {
                var cloudData = new PlayFabFileDetails(MetaSettings.MetaDataStateFileName);

                if (await PlayFabApiHandler.GetPlayerTitleData(request.UserId, new List <PlayFabFileDetails>()
                {
                    cloudData
                }))
                {
                    MetaDataState metaDataState = MetaDataState.FromJson <MetaDataState>(cloudData.DataAsString);

                    DailyObjectiveType type = (DailyObjectiveType)Enum.Parse(typeof(DailyObjectiveType), request.CloudScriptMethod.Params["type"]);

                    //bool result = MissionManager.ClaimDailyObjective(metaDataState, type);
                    bool result = true;

                    cloudData.DataAsString = metaDataState.ToJson();

                    if (result && await PlayFabApiHandler.UploadPlayerTitleData(request.UserId, new List <PlayFabFileDetails>()
                    {
                        cloudData
                    }))
                    {
                        var response = new CloudScriptResponse()
                        {
                            ResponseCode = ResponseCode.Success
                        };
                        return(response);
                    }
                }
            }

            return(new CloudScriptResponse()
            {
                ResponseCode = ResponseCode.Error
            });
        }
コード例 #4
0
        public override async Task <CloudScriptResponse> ExecuteAsync(CloudScriptRequest request, string[] urlArguments)
        {
            DateTime benginRequest = DateTime.UtcNow;

            string playFabId   = urlArguments[0];
            string placementId = urlArguments[1];
            string eventId     = urlArguments[2];

            var cloudData = new PlayFabFileDetails(MetaSettings.MetaDataStateFileName);

            if (await PlayFabApiHandler.GetPlayerTitleData(playFabId, new List <PlayFabFileDetails>()
            {
                cloudData
            }))
            {
                MetaDataState state = MetaDataStateBase.FromJson <MetaDataState>(cloudData.DataAsString);

                AdPlacementType adPlacementType = (AdPlacementType)(Enum.Parse(typeof(AdPlacementType), placementId));
                //state.AdState.RegisterAdWatch(adPlacementType, state, () => AdData.GetAdRewardForTypeMethod(adPlacementType, state));

                cloudData.DataAsString = state.ToJson();

                if (await PlayFabApiHandler.UploadPlayerTitleData(playFabId, new List <PlayFabFileDetails>()
                {
                    cloudData
                }))
                {
                    CloudScriptResponse cloudScriptResponse = new CloudScriptResponse()
                    {
                        ResponseCode = ResponseCode.Success, Method = this.GetType().Name
                    };
                    cloudScriptResponse.Params.Add("status", eventId + ":OK");
                    return(cloudScriptResponse);
                }
            }

            return(new CloudScriptResponse()
            {
                ResponseCode = ResponseCode.Error
            });
        }
コード例 #5
0
        public override async Task <CloudScriptResponse> ExecuteAsync(CloudScriptRequest request, string[] urlArguments)
        {
            DateTime benginRequest = DateTime.UtcNow;

            if (IsClientValidRequest(request))
            {
                var cloudData = new PlayFabFileDetails(MetaSettings.MetaDataStateFileName);

                if (await PlayFabApiHandler.GetPlayerTitleData(request.UserId, new List <PlayFabFileDetails>()
                {
                    cloudData
                }))
                {
                    MetaDataState metaDataState = MetaDataState.FromJson <MetaDataState>(cloudData.DataAsString);



                    cloudData.DataAsString = metaDataState.ToJson();

                    if (await PlayFabApiHandler.UploadPlayerTitleData(request.UserId, new List <PlayFabFileDetails>()
                    {
                        cloudData
                    }))
                    {
                        var response = new CloudScriptResponse()
                        {
                            ResponseCode = ResponseCode.Success
                        };
                        return(response);
                    }
                }
            }

            return(new CloudScriptResponse()
            {
                ResponseCode = ResponseCode.Error
            });
        }
コード例 #6
0
        public override async Task <CloudScriptResponse> ExecuteAsync(CloudScriptRequest request, string[] urlArguments)
        {
            DateTime benginRequest = DateTime.UtcNow;

            if (IsClientValidRequest(request))
            {
                var cloudData = new PlayFabFileDetails(MetaSettings.MetaDataStateFileName);

                if (await PlayFabApiHandler.GetPlayerTitleData(request.UserId, new List <PlayFabFileDetails>()
                {
                    cloudData
                }))
                {
                    MetaDataState metaDataState = null;

                    //if file does not exist yet, create default for content, otherwise perfom Login Activies.
                    if (cloudData.ExistOnServer)
                    {
                        metaDataState = MetaDataState.FromJson <MetaDataState>(cloudData.DataAsString);
                    }
                    else
                    {
                        metaDataState = new MetaDataState();

                        metaDataState.Consumables.AddConsumable(Consumable.GetByName <Consumable>(MetaSettings.HardCurrencyId), 100);
                        metaDataState.Consumables.AddConsumable(Consumable.GetByName <Consumable>(MetaSettings.SoftCurrencyId), 3000);
                        metaDataState.Consumables.AddConsumable(Consumable.GetByName <Consumable>(MetaSettings.EnergyId), 72);

                        metaDataState.CreationDate = DateTime.UtcNow;



                        var playerProfile = await PlayFabApiHandler.GetPlayerProfileInfo(request.UserId);

                        if (playerProfile != null && playerProfile.Locations != null && playerProfile.Locations.LastOrDefault() != null)
                        {
                            switch (playerProfile.Locations.LastOrDefault().ContinentCode)
                            {
                            case PlayFab.ServerModels.ContinentCode.AF:
                            case PlayFab.ServerModels.ContinentCode.AN:
                            case PlayFab.ServerModels.ContinentCode.EU:
                                metaDataState.MetaTimeZone = MetaTimeZone.EU;
                                break;

                            case PlayFab.ServerModels.ContinentCode.NA:
                            case PlayFab.ServerModels.ContinentCode.SA:
                                metaDataState.MetaTimeZone = MetaTimeZone.NA;
                                break;

                            case PlayFab.ServerModels.ContinentCode.AS:
                            case PlayFab.ServerModels.ContinentCode.OC:
                                metaDataState.MetaTimeZone = MetaTimeZone.ASIA;
                                break;
                            }
                            metaDataState.CountryCode = playerProfile.Locations.LastOrDefault().CountryCode.ToString();
                        }
                        metaDataState.ApplyDailyReset();
                    }

                    if (metaDataState.NextDailyReset == DateTime.MinValue)
                    {
                        metaDataState.NextDailyReset = MetaSettings.GetNextDailyReset(metaDataState.MetaTimeZone, DateTime.UtcNow);
                    }

                    metaDataState.SyncLoginCalendar();
                    metaDataState.ServerDateTime = DateTime.UtcNow;

                    PlayerStatus.AddEnergyToPlayer(metaDataState);

                    if (DateTime.UtcNow > metaDataState.NextDailyReset)
                    {
                        metaDataState.ApplyDailyReset();
                    }

                    if (request.CloudScriptMethod.Params.ContainsKey("DisplayName"))
                    {
                        metaDataState.ProfileName = request.CloudScriptMethod.Params["DisplayName"].ToString();
                    }

                    cloudData.DataAsString = metaDataState.ToJson();

                    if (metaDataState.CountryCode == "CN")
                    {
                        return(new CloudScriptResponse()
                        {
                            ResponseCode = ResponseCode.Error
                        });
                    }

                    if (await PlayFabApiHandler.UploadPlayerTitleData(request.UserId, new List <PlayFabFileDetails>()
                    {
                        cloudData
                    }))
                    {
                        var response = new CloudScriptResponse()
                        {
                            ResponseCode = ResponseCode.Success
                        };
                        return(response);
                    }
                }
            }

            return(new CloudScriptResponse()
            {
                ResponseCode = ResponseCode.Error
            });
        }
コード例 #7
0
 public virtual CloudScriptResponse Execute(CloudScriptRequest request, string[] urlArguments)
 {
     throw new NotImplementedException();
 }
コード例 #8
0
 public virtual async Task <CloudScriptResponse> ExecuteAsync(CloudScriptRequest request, string[] urlArguments)
 {
     throw new NotImplementedException();
 }
コード例 #9
0
 public bool IsClientValidRequest(CloudScriptRequest r)
 {
     return(!string.IsNullOrEmpty(r.UserId) || !string.IsNullOrEmpty(r.EntityId));
 }
コード例 #10
0
 //public static ShopRequestResult OfferMarkAsShown_Server(MetaDataState metaDataState, CloudScriptMethod cloudScriptMethod)
 //{
 //    string offerId = cloudScriptMethod.Params["offerId"].ToString();
 //    ShopOfferPlacementType placementType = (ShopOfferPlacementType)Enum.Parse(typeof(ShopOfferPlacementType), cloudScriptMethod.Params["placement"].ToString());
 //    bool popup = Convert.ToBoolean(cloudScriptMethod.Params["popup"].ToString());
 //    ShopOffer item = DataLayer.Instance.GetTable<ShopOffer>().Where(y => y.InternalId == offerId).FirstOrDefault();
 //    metaDataState.OfferDataState.MarkAsShown(offerId, placementType, item, popup);
 //    return null;
 //}
 public override async Task <CloudScriptResponse> ExecuteAsync(CloudScriptRequest request, string[] urlArguments)
 {
     return(null);
 }
コード例 #11
0
        public async Task <string> Get(string method, string param1, string param2, string param3, string param4)
        {
            //await PlayFabApiHandler.ValidateEntityToken();

            //Response.ContentType = "application/json; charset=utf-8";

            string result = string.Empty;

            bool isStackCall = param1 != null && param1.ToLower() == "stack";

            switch (method)
            {
            case "":
            case "Status":

                CloudScriptResponse statusResponse = new CloudScriptResponse()
                {
                    ResponseCode = ResponseCode.Success, Method = method
                };
                statusResponse.Params.Add("DataVersion", DataLayer.Instance.GetTable <DataVersion>().First().Version.ToString());
                statusResponse.Params.Add("Environment", PlayFabSettings.PlayFabEnvironment);
                statusResponse.Params.Add("UptimeMinutes", Convert.ToUInt32((DateTime.UtcNow - Startup.UpTimeStart).TotalMinutes).ToString());
                statusResponse.Params.Add("InstanceId", Startup.InstanceId);
                return(JsonConvert.SerializeObject(statusResponse));

            case "ResetPlayerData":

                CloudScriptResponse resetDataResponse;

                //TODO: Implement ResetPlayerData

                resetDataResponse = new CloudScriptResponse()
                {
                    ResponseCode = ResponseCode.Error, ErrorMessage = string.Format("Reset data for user {0} failed.", param1), Method = method
                };

                result = JsonConvert.SerializeObject(resetDataResponse);

                break;

            case "AppVersion":

                result = Startup.AppVersion;

                break;

            case "Debug":

                result = JsonConvert.SerializeObject(Startup.ApiErrors);

                break;


            default:

                CloudScriptResponse response = null;

                if (ApiController.ApiMethods.ContainsKey(method))
                {
                    var apiMethod = ApiController.ApiMethods[method];

                    string jsonRequest;
                    using (StreamReader reader = new StreamReader(Request.Body, Encoding.UTF8))
                    {
                        jsonRequest = await reader.ReadToEndAsync();
                    }

                    if (isStackCall)
                    {
                        CloudScriptRequestStack requests = JsonConvert.DeserializeObject <CloudScriptRequestStack>(jsonRequest);
                        response = await apiMethod.ExecuteStackAsync(requests);
                    }
                    else
                    {
                        CloudScriptRequest request = JsonConvert.DeserializeObject <CloudScriptRequest>(jsonRequest);
                        response = await apiMethod.ExecuteAsync(request, new string[] { param1, param2, param3, param4 });
                    }
                }
                else
                {
                    response = new CloudScriptResponse()
                    {
                        ResponseCode = ResponseCode.ProtocolError, ErrorMessage = "Invalid method.", Method = method
                    };
                }

                result = JsonConvert.SerializeObject(response);

                break;
            }

            return(result);
        }