protected sealed override void Load(LogicJSONObject jsonObject) { LogicJSONArray allianceRankingListArray = jsonObject.GetJSONArray(SeasonDocument.JSON_ATTRIBUTE_ALLIANCE_RANKINGS); LogicJSONArray avatarRankingArray = jsonObject.GetJSONArray(SeasonDocument.JSON_ATTRIBUTE_AVATAR_RANKINGS); LogicJSONArray avatarDuelRankingArray = jsonObject.GetJSONArray(SeasonDocument.JSON_ATTRIBUTE_AVATAR_DUEL_RANKINGS); for (int i = 0; i < 2; i++) { LogicJSONArray allianceRankingArray = allianceRankingListArray.GetJSONArray(i); LogicArrayList <AllianceRankingEntry> allianceRankingList = this.AllianceRankingList[i]; for (int j = 0; j < allianceRankingArray.Size(); j++) { AllianceRankingEntry allianceRankingEntry = new AllianceRankingEntry(); allianceRankingEntry.Load(allianceRankingArray.GetJSONObject(j)); allianceRankingList.Add(allianceRankingEntry); } } for (int i = 0; i < avatarRankingArray.Size(); i++) { AvatarRankingEntry avatarRankingEntry = new AvatarRankingEntry(); avatarRankingEntry.Load(avatarRankingArray.GetJSONObject(i)); this.AvatarRankingList.Add(avatarRankingEntry); } for (int i = 0; i < avatarDuelRankingArray.Size(); i++) { AvatarDuelRankingEntry avatarDuelRankingEntry = new AvatarDuelRankingEntry(); avatarDuelRankingEntry.Load(avatarDuelRankingArray.GetJSONObject(i)); this.AvatarDuelRankingList.Add(avatarDuelRankingEntry); } this.NextCheckTime = DateTime.Parse(jsonObject.GetJSONString(SeasonDocument.JSON_ATTRIBUTE_NEXT_CHECK_TIME).GetStringValue()); }
protected sealed override void Decode(ByteStream stream) { for (int i = 0; i < 2; i++) { LogicArrayList <AllianceRankingEntry> allianceRankingList = this.AllianceRankingList[i]; for (int j = stream.ReadVInt(); j > 0; j--) { AllianceRankingEntry allianceRankingEntry = new AllianceRankingEntry(); allianceRankingEntry.Decode(stream); allianceRankingList.Add(allianceRankingEntry); } } for (int j = stream.ReadVInt(); j > 0; j--) { AvatarRankingEntry avatarRankingEntry = new AvatarRankingEntry(); avatarRankingEntry.Decode(stream); this.AvatarRankingList.Add(avatarRankingEntry); } for (int j = stream.ReadVInt(); j > 0; j--) { AvatarDuelRankingEntry avatarDuelRankingEntry = new AvatarDuelRankingEntry(); avatarDuelRankingEntry.Decode(stream); this.AvatarDuelRankingList.Add(avatarDuelRankingEntry); } }
private async Task UpdateAvatarRankingList() { Dictionary <long, AvatarRankingEntry> prevAvatarRankingDictionary = this.m_avatarRankingList; Dictionary <long, AvatarRankingEntry> avatarRankingDictionary = new Dictionary <long, AvatarRankingEntry>(SeasonDocument.RANKING_LIST_SIZE); LogicArrayList <AvatarRankingEntry> avatarRankingList = this.AvatarRankingList; avatarRankingList.Clear(); IViewResult <JObject> result = await ServerScoring.GameDatabase.ExecuteCommand <JObject>(new ViewQuery().From("players", "leaderboard_0").Desc().Limit(SeasonDocument.RANKING_LIST_SIZE)); if (result.Success) { int orderCounter = 0; foreach (JObject value in result.Values) { AvatarRankingEntry avatarRankingEntry = new AvatarRankingEntry(); LogicLong id = new LogicLong((int)value["id_hi"], (int)value["id_lo"]); avatarRankingEntry.SetId(id); avatarRankingEntry.SetName((string)value["name"]); avatarRankingEntry.SetScore((int)value["score"]); avatarRankingEntry.SetExpLevel((int)value["xp_level"]); avatarRankingEntry.SetAttackWinCount((int)value["attackWin"]); avatarRankingEntry.SetAttackLoseCount((int)value["attackLose"]); avatarRankingEntry.SetDefenseWinCount((int)value["defenseWin"]); avatarRankingEntry.SetDefenseLoseCount((int)value["defenseLose"]); avatarRankingEntry.SetLeagueType((int)value["leagueType"]); avatarRankingEntry.SetCountry((string)value["country"]); avatarRankingEntry.SetHomeId(id); if (value.TryGetValue("allianceId_High", out JToken allianceIdHigh)) { avatarRankingEntry.SetAllianceId(new LogicLong((int)allianceIdHigh, (int)value["allianceId_Low"])); avatarRankingEntry.SetAllianceName((string)value["allianceName"]); avatarRankingEntry.SetAllianceBadgeId((int)value["badgeId"]); } avatarRankingEntry.SetOrder(++orderCounter); if (prevAvatarRankingDictionary != null && prevAvatarRankingDictionary.TryGetValue(id, out AvatarRankingEntry prevEntry)) { avatarRankingEntry.SetPreviousOrder(prevEntry.GetPreviousOrder()); } avatarRankingDictionary.Add(id, avatarRankingEntry); avatarRankingList.Add(avatarRankingEntry); } this.m_avatarRankingList = avatarRankingDictionary; } else { Logging.Warning("ScoringSeason.updateAvatarRankingList: view error: " + result.Error); } }
/// <summary> /// Decodes this instance. /// </summary> public override void Decode() { this.Entries = new AvatarRankingEntry[this.Stream.ReadVInt()]; for (int i = 0; i < this.Entries.Length; i++) { AvatarRankingEntry Entry = new AvatarRankingEntry(); Entry.Decode(this.Stream); this.Entries[i] = Entry; } this.LastSeasonEntries = new AvatarRankingEntry[this.Stream.ReadVInt()]; for (int i = 0; i < this.LastSeasonEntries.Length; i++) { AvatarRankingEntry Entry = new AvatarRankingEntry(); Entry.Decode(this.Stream); this.LastSeasonEntries[i] = Entry; } }