Beispiel #1
0
        static M()
        {
            // Interfaces
            Object                          = MetaObject.Instance;
            Cachable                        = MetaCachable.Instance;
            Deletable                       = MetaDeletable.Instance;
            Enumeration                     = MetaEnumeration.Instance;
            UniquelyIdentifiable            = MetaUniquelyIdentifiable.Instance;
            Version                         = MetaVersion.Instance;
            Versioned                       = MetaVersioned.Instance;
            Printable                       = MetaPrintable.Instance;
            Localised                       = MetaLocalised.Instance;
            AccessControlledObject          = MetaAccessControlledObject.Instance;
            DelegatedAccessControlledObject = MetaDelegatedAccessControlledObject.Instance;
            SecurityTokenOwner              = MetaSecurityTokenOwner.Instance;
            ObjectState                     = MetaObjectState.Instance;
            Task                = MetaTask.Instance;
            Transitional        = MetaTransitional.Instance;
            TransitionalVersion = MetaTransitionalVersion.Instance;
            User                = MetaUser.Instance;
            WorkItem            = MetaWorkItem.Instance;

            // Classes
            Employment       = MetaEmployment.Instance;
            Organisation     = MetaOrganisation.Instance;
            Person           = MetaPerson.Instance;
            Settings         = MetaSettings.Instance;
            Singleton        = MetaSingleton.Instance;
            Counter          = MetaCounter.Instance;
            Media            = MetaMedia.Instance;
            MediaContent     = MetaMediaContent.Instance;
            PrintDocument    = MetaPrintDocument.Instance;
            Template         = MetaTemplate.Instance;
            TemplateType     = MetaTemplateType.Instance;
            PreparedExtent   = MetaPreparedExtent.Instance;
            PreparedFetch    = MetaPreparedFetch.Instance;
            Country          = MetaCountry.Instance;
            Currency         = MetaCurrency.Instance;
            Language         = MetaLanguage.Instance;
            Locale           = MetaLocale.Instance;
            LocalisedText    = MetaLocalisedText.Instance;
            AccessControl    = MetaAccessControl.Instance;
            Login            = MetaLogin.Instance;
            Permission       = MetaPermission.Instance;
            Role             = MetaRole.Instance;
            SecurityToken    = MetaSecurityToken.Instance;
            AutomatedAgent   = MetaAutomatedAgent.Instance;
            EmailMessage     = MetaEmailMessage.Instance;
            Notification     = MetaNotification.Instance;
            NotificationList = MetaNotificationList.Instance;
            TaskAssignment   = MetaTaskAssignment.Instance;
            TaskList         = MetaTaskList.Instance;
            UserGroup        = MetaUserGroup.Instance;
        }
        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
            });
        }