Пример #1
0
    public void SetAppearance(SyntyAppearance appearance)
    {
        var props = GetType().GetFields(BindingFlags.Public | BindingFlags.Instance).ToDictionary(x => x.Name, x => x);

        foreach (var prop in appearance
                 .GetType()
                 .GetProperties(BindingFlags.Public | BindingFlags.Instance))
        {
            if (props.TryGetValue(prop.Name, out var p))
            {
                var valueToSet = prop.GetValue(appearance);
                try
                {
                    if (p.FieldType == typeof(Color))
                    {
                        p.SetValue(this, GetColorFromHex(valueToSet?.ToString()));
                    }
                    else
                    {
                        p.SetValue(this, valueToSet);
                    }
                }
                catch (Exception exc)
                {
                    Debug.LogError(exc.ToString());
                }
            }
        }

        UpdateAppearance();
        Optimize();
    }
 public Task <bool> UpdateSyntyAppearanceAsync(string userId, SyntyAppearance appearance)
 {
     return(request.Create()
            .Identifier(userId)
            .Method("appearance")
            .AddParameter("values", appearance)
            .Build()
            .SendAsync <bool>(ApiRequestTarget.Players, ApiRequestType.Post));
 }
Пример #3
0
        public async Task <bool> UpdateSyntyAppearanceAsync(string userId, SyntyAppearance appearance)
        {
            userId = CleanupUserId(userId);
            var sessionId = HttpContext.GetSessionId();

            if (sessionInfoProvider.TryGet(sessionId, out var si) && si.ActiveCharacterId != null)
            {
                return(playerManager.UpdateAppearance(si.ActiveCharacterId.Value, appearance));
            }

            return(await UpdateSyntyAppearanceAsync(userId, "1", appearance));
        }
Пример #4
0
        public async Task <bool> UpdateSyntyAppearanceAsync(string userId, SyntyAppearance appearance)
        {
            userId = CleanupUserId(userId); // we get a weird input sent from the client. This shouldnt
                                            // be fixed here, but as a temporary bugfix
            var twitchUserSession = await sessionInfoProvider.GetTwitchUserAsync(HttpContext.Session);

            if (twitchUserSession != null)
            {
                return(playerManager.UpdateAppearance(userId, appearance));
            }

            var authToken = GetAuthToken();

            if (authToken != null)
            {
                return(playerManager.UpdateAppearance(authToken, userId, appearance));
            }

            return(playerManager.UpdateAppearance(AssertGetSessionToken(), userId, appearance));
        }
Пример #5
0
        private string[] BuildInsertQuery(
            QueryBuilder qb,
            Character character,
            IReadOnlyList <User> users,
            IReadOnlyList <MarketItem> marketplaceItems,
            IReadOnlyList <Skills> skills,
            IReadOnlyList <SyntyAppearance> syntyAppearances,
            IReadOnlyList <Appearance> appearances,
            IReadOnlyList <Resources> resources,
            IReadOnlyList <CharacterState> charStates,
            IReadOnlyList <Statistics> charStats,
            IReadOnlyList <InventoryItem> invItems,
            IReadOnlyList <Village> villages,
            IReadOnlyList <VillageHouse> villageHouses)
        {
            var queries = new List <string>();
            var query   = new StringBuilder();

            User user = users.FirstOrDefault(x => x.Id == character.UserId);

            if (user == null)
            {
                return(new string[0]);
            }

            if (importedUsers.Add(user.Id))
            {
                query.AppendLine(qb.Insert(user));
            }


            Skills skill = skills.FirstOrDefault(x => x.Id == character.SkillsId);

            if (skill != null)
            {
                query.AppendLine(qb.Insert(skill));
            }

            SyntyAppearance appearance = syntyAppearances.FirstOrDefault(x => x.Id == character.SyntyAppearanceId);

            if (appearance != null)
            {
                query.AppendLine(qb.Insert(appearance));
            }

            Appearance appearance_old = appearances.FirstOrDefault(x => x.Id == character.AppearanceId);

            if (appearance_old != null)
            {
                query.AppendLine(qb.Insert(appearance_old));
            }

            Resources resx = resources.FirstOrDefault(x => x.Id == character.ResourcesId);

            if (resx != null)
            {
                query.AppendLine(qb.Insert(resx));
            }

            CharacterState state = charStates.FirstOrDefault(x => x.Id == character.StateId);

            if (state != null)
            {
                query.AppendLine(qb.Insert(state));
            }

            Statistics statistics = charStats.FirstOrDefault(x => x.Id == character.StatisticsId);;

            if (statistics != null)
            {
                query.AppendLine(qb.Insert(statistics));
            }

            query.AppendLine(qb.Insert(character));

            queries.Add(query.ToString());
            query.Clear();


            InventoryItem[] inventoryItems = invItems.Where(x => x.CharacterId == character.Id).ToArray();
            if (inventoryItems.Length > 0)
            {
                if (inventoryItems.Length > 100)
                {
                    for (var i = 0; i < inventoryItems.Length;)
                    {
                        var take = inventoryItems.Skip(i * 100).Take(100).ToArray();

                        queries.Add(qb.InsertMany(take));

                        i += take.Length;
                    }
                }
                else
                {
                    queries.Add(qb.InsertMany(inventoryItems));
                }
            }

            MarketItem[] marketItems = marketplaceItems.Where(x => x.SellerCharacterId == character.Id).ToArray();
            if (marketItems.Length > 0)
            {
                foreach (var ma in marketItems)
                {
                    if (ma.Amount > 10_000_0000)
                    {
                        ma.Amount = 10_000_000;
                    }
                    if (ma.PricePerItem > 10_000_0000)
                    {
                        ma.PricePerItem = 10_000_000;
                    }
                }

                if (marketItems.Length > 100)
                {
                    for (var i = 0; i < marketItems.Length;)
                    {
                        var take = marketItems.Skip(i * 100).Take(100).ToArray();

                        queries.Add(qb.InsertMany(take));

                        i += take.Length;
                    }
                }
                else
                {
                    queries.Add(qb.InsertMany(marketItems));
                }
            }

            Village village = villages.FirstOrDefault(x => x.UserId == user.Id);

            if (village != null)
            {
                queries.Add(qb.Insert(village));
            }

            if (village != null)
            {
                VillageHouse[] villageHouse = villageHouses.Where(x => x.VillageId == village.Id).ToArray();
                if (villageHouse.Length > 0)
                {
                    if (villageHouse.Length > 100)
                    {
                        for (var i = 0; i < villageHouse.Length;)
                        {
                            var take = villageHouse.Skip(i * 100).Take(100).ToArray();

                            queries.Add(qb.InsertMany(take));

                            i += take.Length;
                        }
                    }
                    else
                    {
                        queries.Add(qb.InsertMany(villageHouse));
                    }
                }
            }

            return(queries.ToArray());
        }
    public void SetAppearance(SyntyAppearance appearance, Action onReady)
    {
        ResetAppearance();

        if (!logoManager)
        {
            logoManager = FindObjectOfType <PlayerLogoManager>();
        }
        if (!player)
        {
            player = GetComponent <PlayerController>();
        }

        var props = GetType().GetFields(BindingFlags.Public | BindingFlags.Instance).ToDictionary(x => x.Name, x => x);

        foreach (var prop in appearance
                 .GetType()
                 .GetProperties(BindingFlags.Public | BindingFlags.Instance))
        {
            if (props.TryGetValue(prop.Name, out var p))
            {
                var valueToSet = prop.GetValue(appearance);
                try
                {
                    if (p.FieldType == typeof(Color))
                    {
                        p.SetValue(this, GetColorFromHex(valueToSet?.ToString()));
                    }
                    else
                    {
                        p.SetValue(this, valueToSet);
                    }
                }
                catch (Exception exc)
                {
                    Debug.LogError(exc.ToString());
                }
            }
        }

        if (this.player.Clan.InClan)
        {
            logoManager.GetLogo(
                this.player.Clan.ClanInfo.Owner,
                this.player.Clan.Logo, logo =>
            {
                UpdateAppearance(logo);
                Optimize();
                if (onReady != null)
                {
                    onReady();
                }
            });
        }
        else
        {
            UpdateAppearance();
            Optimize();
            if (onReady != null)
            {
                onReady();
            }
        }
    }
Пример #7
0
 public void SetAppearance(SyntyAppearance appearance)
 {
     throw new NotSupportedException();
 }
Пример #8
0
 public void Add(SyntyAppearance entity) => Update(() => syntyAppearances.Add(entity));
Пример #9
0
 //[MethodDescriptor(
 //    Name = "Update player appearance",
 //    Description = "Update the target player with a new appearance. This requires a session token to update a target player.",
 //    RequiresSession = true)]
 public Task <bool> UpdateSyntyAppearanceAsync(string userId, SyntyAppearance appearance)
 {
     return(playerManager.UpdateSyntyAppearanceAsync(AssertGetSessionToken(), userId, appearance));
 }