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)); }
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)); }
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)); }
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(); } } }
public void SetAppearance(SyntyAppearance appearance) { throw new NotSupportedException(); }
public void Add(SyntyAppearance entity) => Update(() => syntyAppearances.Add(entity));
//[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)); }