public AchievementCollection GetAchievements()
        {
            if (IsSignedInToLive)
            {
                if (gamerAchievements == null)
                {
                    gamerAchievements = new AchievementCollection();
                }

                GKAchievementDescription.LoadAchievementDescriptions(delegate(GKAchievementDescription[] achievements, NSError error)
                {
                    if (achievements != null)
                    {
                        foreach (GKAchievementDescription a in achievements)
                        {
                            gamerAchievements.Add(new Achievement()
                            {
                                Name                = a.Title,
                                Key                 = a.Identifier,
                                Description         = a.AchievedDescription,
                                HowToEarn           = a.UnachievedDescription,
                                DisplayBeforeEarned = !a.Hidden
                            });
                        }
                    }
                });

                GKAchievement.LoadAchievements(delegate(GKAchievement[] achievements, NSError error)
                {
                    if (achievements != null)
                    {
                        foreach (GKAchievement a in achievements)
                        {
                            foreach (Achievement ac in gamerAchievements)
                            {
                                if (ac.Key == a.Identifier)
                                {
                                    ac.IsEarned       = a.Completed;
                                    ac.EarnedDateTime = a.LastReportedDate.NSDateToDateTime();
                                }
                            }
                        }
                    }
                });
            }
            return(gamerAchievements);
        }
Пример #2
0
        public AchievementsScreen(CGSize size) : base(size)
        {
            var title = new SKLabelNode("GillSans-Bold")
            {
                Text     = "Achievements",
                FontSize = 30,
                Position = new CGPoint(FrameMidX, FrameMidY + 190)
            };

            backButton = new SKLabelNode("GillSans-Bold")
            {
                Text      = "Back",
                FontSize  = 18,
                FontColor = ButtonColor,
                Position  = new CGPoint(FrameMidX, FrameMidY - 200)
            };

            var incompleteLabel = new SKLabelNode("GillSans-Bold")
            {
                Text     = "Incomplete",
                FontSize = 18,
                Position = new CGPoint(FrameMidX + 75, FrameMidY + 150)
            };

            var completeLabel = new SKLabelNode("GillSans-Bold")
            {
                Text     = "Complete",
                FontSize = 18,
                Position = new CGPoint(FrameMidX - 75, FrameMidY + 150)
            };

            if (GKLocalPlayer.LocalPlayer.Authenticated)
            {
                GKAchievementDescription.LoadAchievementDescriptions(LoadAchievementInfo);
            }

            AddChild(title);
            AddChild(incompleteLabel);
            AddChild(completeLabel);
            AddChild(backButton);
        }
Пример #3
0
		void LoadAchievementInfo (GKAchievementDescription[] descriptions, NSError error)
		{
			if (descriptions == null)
				return;

			GKAchievement.LoadAchievements (delegate (GKAchievement[] achievements, NSError err) {
				int completeOffset = 0;
				int incompleteOffset = 0;

				foreach (var description in descriptions) {
					bool completed = false;
					foreach (var achievement in achievements) {
						if (description.Identifier == achievement.Identifier)
							completed |= achievement.Completed;
					}

					int xOffset = completed ? -75 : 75;
					int yOffset = completed ? completeOffset : incompleteOffset;

					var achievementLabel = new SKLabelNode ("GillSans-Bold") {
						Text = description.Title,
						FontSize = 10,
						Position = new PointF (FrameMidX + xOffset, FrameMidY + 50 + yOffset + 25)
					};
					AddChild (achievementLabel);

					description.LoadImage (delegate (UIImage image, NSError imageError) {
						if (image == null)
							image = UIImage.FromFile ("Images/DefaultPlayerPhoto.png");
						var sprite = SKSpriteNode.FromTexture (SKTexture.FromImage (image), new SizeF (32, 32));
						sprite.Position = new PointF (FrameMidX + xOffset, FrameMidY + 50 + yOffset + 50);
						AddChild (sprite);
					});

					if (completed)
						completeOffset -= 50;
					else
						incompleteOffset -= 50;
				}
			});
		}