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);
            }
        }
Ejemplo n.º 3
0
        /// <summary>
        /// Decodes this instance.
        /// </summary>
        public override void Decode()
        {
            this.Entries = new AllianceRankingEntry[this.Stream.ReadVInt()];

            for (int i = 0; i < this.Entries.Length; i++)
            {
                AllianceRankingEntry Entry = new AllianceRankingEntry();
                Entry.Decode(this.Stream);
                this.Entries[i] = Entry;
            }
        }
Ejemplo n.º 4
0
        private async Task UpdateAllianceRankingList(int villageType)
        {
            Dictionary <long, AllianceRankingEntry> prevAllianceRankingDictionary = this.m_allianceRankingList[villageType];
            Dictionary <long, AllianceRankingEntry> allianceRankingDictionary     = new Dictionary <long, AllianceRankingEntry>(SeasonDocument.RANKING_LIST_SIZE);
            LogicArrayList <AllianceRankingEntry>   allianceRankingList           = this.AllianceRankingList[villageType];

            allianceRankingList.Clear();

            IViewResult <JObject> result =
                await ServerScoring.AllianceDatabase.ExecuteCommand <JObject>(new ViewQuery().From("alliances", "leaderboard_" + villageType).Desc().Limit(SeasonDocument.RANKING_LIST_SIZE));

            if (result.Success)
            {
                int orderCounter = 0;

                foreach (JObject value in result.Values)
                {
                    AllianceRankingEntry allianceRankingEntry = new AllianceRankingEntry();
                    LogicLong            id = new LogicLong((int)value["id_hi"], (int)value["id_lo"]);

                    allianceRankingEntry.SetId(id);
                    allianceRankingEntry.SetName((string)value["name"]);
                    allianceRankingEntry.SetScore((int)value["score"]);
                    allianceRankingEntry.SetAllianceBadgeId((int)value["badge_id"]);
                    allianceRankingEntry.SetAllianceLevel((int)value["xp_level"]);
                    allianceRankingEntry.SetMemberCount((int)value["member_count"]);

                    if (value.TryGetValue("origin", out JToken originToken))
                    {
                        allianceRankingEntry.SetOriginData(LogicDataTables.GetDataById((int)originToken));
                    }

                    allianceRankingEntry.SetOrder(++orderCounter);

                    if (prevAllianceRankingDictionary != null && prevAllianceRankingDictionary.TryGetValue(id, out AllianceRankingEntry prevEntry))
                    {
                        allianceRankingEntry.SetPreviousOrder(prevEntry.GetPreviousOrder());
                    }

                    allianceRankingDictionary.Add(id, allianceRankingEntry);
                    allianceRankingList.Add(allianceRankingEntry);
                }

                this.m_allianceRankingList[villageType] = allianceRankingDictionary;
            }
            else
            {
                Logging.Warning("ScoringSeason.updateAllianceRankingList: view error: " + result.Error);
            }
        }