static public void OnAchievementSnapshotReady(AchievementsResult achievements, GetObjectAsyncOp <AchievementsResult> op)
    {
        achievsRead = false;
        //
        // We used the UI to take a snapshot, now we can do something with these achievements!
        if (!op.Success || achievements == null || achievements.Items == null)
        {
            DebugLog("\nAchievement snapshot failed HRESULT: 0x" + op.Result.ToString("X8"));
            //OnScreenLog.Add("Achievement snapshot failed HRESULT: 0x" + op.Result.ToString("X8"));
            if (SceneManager.GetActiveScene().buildIndex == 0)
            {
                achievsRead = true;
            }
            return;
        }

        StringBuilder sb = new StringBuilder();

        sb.Append("\nAchievements\n---------------------------\n\n");
        for (int i = 0; i < achievements.Items.Length; ++i)
        {
            var  a  = achievements.Items[i];
            bool ok = a.ProgressState == AchievementProgressState.Achieved;
            sb.Append(string.Format("[{0}] {1} - {2}\n", (ok ? "x" : "  "), a.Name.PadRight(20), (ok ? a.UnlockedDescription : a.LockedDescription)));
        }

        DebugLog("\n" + sb.ToString());
        //
        if (SceneManager.GetActiveScene().buildIndex == 0)
        {
            achievsRead = true;
        }
    }
예제 #2
0
        public static async Task <IList <AchievementData> > GetAchievementsAsync()
        {
            List <AchievementData> list = new List <AchievementData>();

            AchievementsResult ar = await _context.AchievementService.GetAchievementsForTitleIdAsync(_context.User.XboxUserId, TitleId, AchievementType.All, false, AchievementOrderBy.Default, 0, 10);

            foreach (Achievement achievement in ar.Items)
            {
                AchievementData ad = new AchievementData
                {
                    Name        = achievement.Name,
                    Description = achievement.LockedDescription,
                    Score       = achievement.Rewards[0].Data,
                    IsAchieved  = achievement.ProgressState == AchievementProgressState.Achieved,
                    Image       = await GetTexture2dFromUriAsync(new Uri(achievement.MediaAssets[0].Url))
                };
                list.Add(ad);
            }
            return(list);
        }
예제 #3
0
        private async void ProcessAchievements(AchievementsResult result)
        {
            if (result != null)
            {
#if DEBUG
                foreach (var achievement in result.Items)
                {
                    PrintAchievement(achievement);
                }
#endif
                if (result.Items.Count > 0)
                {
                    GenerateItems(result.Items);
                }

                // Keep processing if there are more Achievements.
                if (result.HasNext)
                {
                    var _result = await result.GetNextAsync(maxAchievements);

                    ProcessAchievements(_result);
                }
            }
        }