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); }
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); }
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; } }); }