コード例 #1
0
        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());
        }
コード例 #2
0
        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);
            }
        }
コード例 #3
0
        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);
            }
        }