Пример #1
0
        public static IAchievementsInfo ReadInGameAchievementsProgressInfo([NotNull] HearthstoneImage image)
        {
            if (image == null)
            {
                throw new ArgumentNullException(nameof(image));
            }

            var manager = image.GetService("Hearthstone.Progression.AchievementManager");

            if (manager == null || manager["m_achievementInGameProgress"] == null)
            {
                return(null);
            }

            var progressInfo = manager["m_achievementInGameProgress"];
            var count        = progressInfo["count"];
            var keys         = progressInfo["keySlots"];
            var values       = progressInfo["valueSlots"];

            var achievements = new List <IAchievementInfo>();

            for (int i = 0; i < count; i++)
            {
                var achievementId   = keys[i];
                var progress        = values[i];
                var achievementInfo = new AchievementInfo()
                {
                    AchievementId = achievementId,
                    Progress      = progress,
                };
                achievements.Add(achievementInfo);
            }

            return(new AchievementsInfo()
            {
                Achievements = achievements,
            });
        }
Пример #2
0
        public static IAchievementsInfo ReadAchievementsInfo([NotNull] HearthstoneImage image)
        {
            if (image == null)
            {
                throw new ArgumentNullException(nameof(image));
            }

            var manager = image.GetService("Hearthstone.Progression.AchievementManager");

            if (manager == null || manager["m_playerState"] == null || manager["m_playerState"]["m_playerState"] == null)
            {
                return(null);
            }

            var playerState = manager["m_playerState"]["m_playerState"];
            var count       = playerState["count"];
            var values      = playerState["valueSlots"];

            var achievements = new List <IAchievementInfo>();

            for (int i = 0; i < count; i++)
            {
                var info            = values[i];
                var achievementInfo = new AchievementInfo()
                {
                    AchievementId = info["_AchievementId"],
                    Progress      = info["_Progress"],
                    Status        = info["_Status"],
                };
                achievements.Add(achievementInfo);
            }

            return(new AchievementsInfo()
            {
                Achievements = achievements,
            });
        }