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 UpdateAvatarDuelRankingList() { Dictionary <long, AvatarDuelRankingEntry> prevAvatarDuelRankingDictionary = this.m_avatarDuelRankingList; Dictionary <long, AvatarDuelRankingEntry> avatarDuelRankingDictionary = new Dictionary <long, AvatarDuelRankingEntry>(SeasonDocument.RANKING_LIST_SIZE); LogicArrayList <AvatarDuelRankingEntry> avatarDuelRankingList = this.AvatarDuelRankingList; avatarDuelRankingList.Clear(); IViewResult <JObject> result = await ServerScoring.GameDatabase.ExecuteCommand <JObject>(new ViewQuery().From("players", "leaderboard_1").Desc().Limit(SeasonDocument.RANKING_LIST_SIZE)); if (result.Success) { int orderCounter = 0; foreach (JObject value in result.Values) { AvatarDuelRankingEntry avatarDuelRankingEntry = new AvatarDuelRankingEntry(); LogicLong id = new LogicLong((int)value["id_hi"], (int)value["id_lo"]); avatarDuelRankingEntry.SetId(id); avatarDuelRankingEntry.SetName((string)value["name"]); avatarDuelRankingEntry.SetScore((int)value["score"]); avatarDuelRankingEntry.SetExpLevel((int)value["xp_level"]); avatarDuelRankingEntry.SetDuelWinCount((int)value["duelWin"]); avatarDuelRankingEntry.SetDuelDrawCount((int)value["duelDraw"]); avatarDuelRankingEntry.SetDuelLoseCount((int)value["duelLose"]); avatarDuelRankingEntry.SetCountry((string)value["country"]); avatarDuelRankingEntry.SetHomeId(id); if (value.TryGetValue("allianceId_High", out JToken allianceIdHigh)) { avatarDuelRankingEntry.SetAllianceId(new LogicLong((int)allianceIdHigh, (int)value["allianceId_Low"])); avatarDuelRankingEntry.SetAllianceName((string)value["allianceName"]); avatarDuelRankingEntry.SetAllianceBadgeId((int)value["badgeId"]); } avatarDuelRankingEntry.SetOrder(++orderCounter); if (prevAvatarDuelRankingDictionary != null && prevAvatarDuelRankingDictionary.TryGetValue(id, out AvatarDuelRankingEntry prevEntry)) { avatarDuelRankingEntry.SetPreviousOrder(prevEntry.GetPreviousOrder()); } avatarDuelRankingDictionary.Add(id, avatarDuelRankingEntry); avatarDuelRankingList.Add(avatarDuelRankingEntry); } this.m_avatarDuelRankingList = avatarDuelRankingDictionary; } else { Logging.Warning("ScoringSeason.updateAvatarDuelRankingList: view error: " + result.Error); } }