public MainWindow()
        {
            InitializeComponent();

            AchievementManager achievementManager = AchievementManager.GetInstance();

            AchievementCondition clickConditionOne = new AchievementCondition("ClickedOne", "Click1", 3);
            Achievement a1 = new Achievement("a1", "Clicked ONE", "You clicked on ONE", clickConditionOne, "/sebingel.sharpchievements;component/Images/award71.png");

            AchievementCondition clickConditionTwo = new AchievementCondition("ClickedTwo", "Click2", 1);
            Achievement a2 = new Achievement("a2", "Clicked TWO", "You clicked on TWO", clickConditionTwo);

            AchievementCondition clickConditionThree = new AchievementCondition("ClickedThree", "Click3", 1);
            Achievement a3 = new Achievement("a3", "Clicked THREE", "You clicked on THREE", clickConditionThree);

            AchievementCondition clickConditionFour = new AchievementCondition("SpecialOne", "Click1", 1);
            AchievementCondition clickConditionFive = new AchievementCondition("SpecialTwo", "Click2", 3);
            Achievement a4 = new Achievement("a4", "SPECIAL!!!", "You clicked on ONE", new List<AchievementCondition> { clickConditionFour, clickConditionFive });

            achievementManager.RegisterAchievement(a1);
            achievementManager.RegisterAchievement(a2);
            achievementManager.RegisterAchievement(a3);
            achievementManager.RegisterAchievement(a4);

            achievementManager.RegisterAchievementCondition(clickConditionOne);
            achievementManager.RegisterAchievementCondition(clickConditionTwo);
            achievementManager.RegisterAchievementCondition(clickConditionThree);
            achievementManager.RegisterAchievementCondition(clickConditionFour);
            achievementManager.RegisterAchievementCondition(clickConditionFive);

            achievementManager.AchievementCompleted += AchievementManagerAchievementCompleted;
        }
 private void AchievementManagerAchievementCompleted(Achievement achievement)
 {
     //new AchievementNotificationWindow(achievement).Show();
     //new AchievementNotificationWindow(achievement,Left, Top, ActualWidth, ActualHeight).Show();
     //new AchievementNotificationWindow(achievement, 100, 100).Show();
     new AchievementNotificationWindow(achievement, this).Show();
 }
        public void CheckUnlockStatus_EveryIAchievementConditionIsUnlocked_ShouldFireAchievementCompletedEvent()
        {
            // Arrange
            Mock<IAchievementCondition> achievementConditionMock1 = new Mock<IAchievementCondition>();
            achievementConditionMock1.SetupGet(x => x.Unlocked).Returns(true);
            achievementConditionMock1.SetupGet(x => x.UniqueId).Returns("ac1");

            Mock<IAchievementCondition> achievementConditionMock2 = new Mock<IAchievementCondition>();
            achievementConditionMock2.SetupGet(x => x.Unlocked).Returns(true);
            achievementConditionMock2.SetupGet(x => x.UniqueId).Returns("ac2");

            Mock<IAchievementCondition> achievementConditionMock3 = new Mock<IAchievementCondition>();
            achievementConditionMock3.SetupGet(x => x.Unlocked).Returns(true);
            achievementConditionMock3.SetupGet(x => x.UniqueId).Returns("ac3");

            List<IAchievementCondition> achievementConditions = new List<IAchievementCondition>
            {
                achievementConditionMock1.Object,
                achievementConditionMock2.Object,
                achievementConditionMock3.Object
            };
            Achievement achievement = new Achievement("uniqueId", "titel", "description", achievementConditions);

            Achievement reportedAchievement = null;
            achievement.AchievementCompleted += delegate(Achievement a) { reportedAchievement = a; };

            // Act
            achievement.CheckUnlockStatus();

            // Assert
            Assert.AreEqual(achievement, reportedAchievement);
            Assert.IsTrue(achievement.Unlocked);
        }
        public MainWindow()
        {
            InitializeComponent();

            am = new AchievementManager();

            AchievementCondition con1 = new AchievementCondition("con1", "con1", 1);
            AchievementCondition con2 = new AchievementCondition("con2", "con2", 2);
            AchievementCondition con3 = new AchievementCondition("con3", "con3", 1);
            Achievement a1 = new Achievement("a1", "a1", "a1Desc", con1) { ImagePath = "/sebingel.sharpchievements;component/Images/award71.png" };
            Achievement a2 = new Achievement("a2", "a2", "a2Desc\nWrap", con2) { ImagePath = "/sebingel.sharpchievements;component/Images/award71.png" };
            Achievement a3 = new Achievement("a3", "a3", "a2Desc\nWrap", con3) { ImagePath = "/sebingel.sharpchievements;component/Images/award71.png", Hidden = true };
            //Achievement a4 = new Achievement("a4", "a4", "a2Desc\nWrap", con1, "/sebingel.sharpchievements;component/Images/question30.png");
            //Achievement a5 = new Achievement("a5", "a5", "a2Desc\nWrap", con1, "/sebingel.sharpchievements;component/Images/award71.png");
            //Achievement a6 = new Achievement("a6", "a6", "a2Desc\nWrap", con1, "/sebingel.sharpchievements;component/Images/award71.png");
            //Achievement a7 = new Achievement("a7", "a7", "a2Desc\nWrap", con1, "/sebingel.sharpchievements;component/Images/award71.png");
            //Achievement a8 = new Achievement("a8", "a8", "a2Desc\nWrap", con1, "/sebingel.sharpchievements;component/Images/award71.png");
            //Achievement a9 = new Achievement("a9", "a9", "a2Desc\nWrap", con1, "/sebingel.sharpchievements;component/Images/award71.png");
            //Achievement a10 = new Achievement("a10", "a10", "a2Desc\nWrap", con1, "/sebingel.sharpchievements;component/Images/award71.png");
            //Achievement a11 = new Achievement("a11", "a11", "a2Desc\nWrap", con1, "/sebingel.sharpchievements;component/Images/award71.png");

            am.RegisterAchievementCondition(con1);
            am.RegisterAchievementCondition(con2);
            am.RegisterAchievementCondition(con3);
            am.RegisterAchievement(a1);
            am.RegisterAchievement(a2);
            am.RegisterAchievement(a3);
            //am.RegisterAchievement(a4);
            //am.RegisterAchievement(a5);
            //am.RegisterAchievement(a6);
            //am.RegisterAchievement(a7);
            //am.RegisterAchievement(a8);
            //am.RegisterAchievement(a9);
            //am.RegisterAchievement(a10);
            //am.RegisterAchievement(a11);

            am.AchievementCompleted += AmAchievementCompleted;

            AchievementOverviewControl.Refresh();
        }
        public void Constructor_GivenAllNecessaryParameters_CanCreateInstance()
        {
            // Arrange
            Achievement a;

            // Act
            a = new Achievement("uniqueId", "titel", "description", new Mock<IAchievementCondition>().Object);

            // Assert
            Assert.IsNotNull(a);
        }
        public void ConditionProgressChanged_GivenSomeProgress_CalculatesProgressAndFiresProgressChangedEvent(
            int conditionProgress, int expectedAchievementProgress)
        {
            // Arrange
            Mock<IAchievementCondition> achievementConditionMock1 = new Mock<IAchievementCondition>();
            achievementConditionMock1.SetupGet(x => x.UniqueId).Returns("ac1");
            achievementConditionMock1.SetupGet(x => x.Progress).Returns(0);

            Mock<IAchievementCondition> achievementConditionMock2 = new Mock<IAchievementCondition>();
            achievementConditionMock2.SetupGet(x => x.UniqueId).Returns("ac2");
            achievementConditionMock2.SetupGet(x => x.Progress).Returns(conditionProgress);

            IAchievementCondition ac1 = achievementConditionMock1.Object;
            IAchievementCondition ac2 = achievementConditionMock2.Object;
            List<IAchievementCondition> achievementConditions = new List<IAchievementCondition>
            {
                ac1,
                ac2
            };

            Achievement achievement = new Achievement("uniqueId", "titel", "description", achievementConditions);

            int reportedProgress = 0;
            Achievement reportedAchievement = null;
            achievement.ProgressChanged += delegate(Achievement a, AchievementProgressChangedArgs args)
            {
                reportedProgress = args.ProgressCount;
                reportedAchievement = a;
            };

            // Act
            achievementConditionMock2.Raise(x => x.ProgressChanged += null, ac1,
                new AchievementConditionProgressChangedArgs(conditionProgress));

            // Assert
            Assert.AreEqual(achievement, reportedAchievement);
            Assert.AreEqual(expectedAchievementProgress, achievement.Progress);
            Assert.AreEqual(expectedAchievementProgress, reportedProgress);
        }
        public void ConditionProgressChanged_GivenAlreadyUnlockedAchievementCondition_DoNothing()
        {
            // Arrange
            Mock<IAchievementCondition> achievementConditionMock1 = new Mock<IAchievementCondition>();
            achievementConditionMock1.SetupGet(x => x.UniqueId).Returns("ac1");
            achievementConditionMock1.SetupGet(x => x.Progress).Returns(0);

            Mock<IAchievementCondition> achievementConditionMock2 = new Mock<IAchievementCondition>();
            achievementConditionMock2.SetupGet(x => x.UniqueId).Returns("ac2");
            achievementConditionMock2.SetupGet(x => x.Progress).Returns(150);
            achievementConditionMock2.SetupGet(x => x.Unlocked).Returns(true);

            IAchievementCondition ac1 = achievementConditionMock1.Object;
            IAchievementCondition ac2 = achievementConditionMock2.Object;
            List<IAchievementCondition> achievementConditions = new List<IAchievementCondition>
            {
                ac1,
                ac2
            };

            Achievement achievement = new Achievement("uniqueId", "titel", "description", achievementConditions);

            int reportedProgress = 0;
            Achievement reportedAchievement = null;
            achievement.ProgressChanged += delegate(Achievement a, AchievementProgressChangedArgs args)
            {
                reportedProgress = args.ProgressCount;
                reportedAchievement = a;
            };

            // Act
            achievementConditionMock2.Raise(x => x.ProgressChanged += null, ac2,
                new AchievementConditionProgressChangedArgs(150));

            // Assert
            Assert.AreEqual(0, reportedProgress);
            Assert.IsNull(reportedAchievement);
        }
        public void ConditionCompleted_RaiseEventOnOnlyConditionAndConditionIsUnlocked_UnlockAchievement()
        {
            // Arrange
            Mock<IAchievementCondition> achievementConditionMock1 = new Mock<IAchievementCondition>();
            achievementConditionMock1.SetupGet(x => x.Unlocked).Returns(true);
            achievementConditionMock1.SetupGet(x => x.UniqueId).Returns("ac1");

            IAchievementCondition ac = achievementConditionMock1.Object;
            Achievement achievement = new Achievement("uniqueId", "titel", "description", ac);

            List<Achievement> reportedAchievements = new List<Achievement>();
            achievement.AchievementCompleted += delegate(Achievement a) { reportedAchievements.Add(a); };

            // Act
            achievementConditionMock1.Raise(x => x.ConditionCompleted += null, ac);

            // Assert
            Assert.AreEqual(1, reportedAchievements.Count);
            Assert.IsTrue(achievement.Unlocked);
        }
        public void ConditionCompleted_RaiseEventOnOneOfManyConditionsAndNotAllConditionsAreUnlocked_DoNotUnlockAchievement()
        {
            // Arrange
            Mock<IAchievementCondition> achievementConditionMock1 = new Mock<IAchievementCondition>();
            achievementConditionMock1.SetupGet(x => x.Unlocked).Returns(true);
            achievementConditionMock1.SetupGet(x => x.UniqueId).Returns("ac1");

            Mock<IAchievementCondition> achievementConditionMock2 = new Mock<IAchievementCondition>();
            achievementConditionMock2.SetupGet(x => x.Unlocked).Returns(false);
            achievementConditionMock2.SetupGet(x => x.UniqueId).Returns("ac2");

            Mock<IAchievementCondition> achievementConditionMock3 = new Mock<IAchievementCondition>();
            achievementConditionMock3.SetupGet(x => x.Unlocked).Returns(true);
            achievementConditionMock3.SetupGet(x => x.UniqueId).Returns("ac3");

            List<IAchievementCondition> achievementConditions = new List<IAchievementCondition>
            {
                achievementConditionMock1.Object,
                achievementConditionMock2.Object,
                achievementConditionMock3.Object
            };

            Achievement achievement = new Achievement("uniqueId", "titel", "description", achievementConditions);

            List<Achievement> reportedAchievements = new List<Achievement>();
            achievement.AchievementCompleted += delegate(Achievement a) { reportedAchievements.Add(a); };

            // Act
            achievementConditionMock1.Raise(x => x.ConditionCompleted += null, achievementConditions[0]);

            // Assert
            Assert.AreEqual(0, reportedAchievements.Count);
            Assert.IsFalse(achievement.Unlocked);
        }
        public void Clear_GivenAnAchievementWithSeveralConditions_ClearsTheAchievement()
        {
            // Arrange
            Mock<IAchievementCondition> achievementConditionMock1 = new Mock<IAchievementCondition>();
            achievementConditionMock1.SetupGet(x => x.UniqueId).Returns("ac1");
            achievementConditionMock1.SetupGet(x => x.Progress).Returns(0);

            Mock<IAchievementCondition> achievementConditionMock2 = new Mock<IAchievementCondition>();
            achievementConditionMock2.SetupGet(x => x.UniqueId).Returns("ac2");
            achievementConditionMock2.SetupGet(x => x.Progress).Returns(50);

            IAchievementCondition ac1 = achievementConditionMock1.Object;
            IAchievementCondition ac2 = achievementConditionMock2.Object;
            List<IAchievementCondition> achievementConditions = new List<IAchievementCondition>
            {
                ac1,
                ac2
            };

            Achievement achievement = new Achievement("uniqueId", "titel", "description", achievementConditions);

            int reportedProgress = 0;
            Achievement reportedAchievementProgressChanged = null;
            achievement.ProgressChanged += delegate(Achievement a, AchievementProgressChangedArgs args)
            {
                reportedProgress = args.ProgressCount;
                reportedAchievementProgressChanged = a;
            };
            Achievement reportedAchievementCompleted = null;
            achievement.AchievementCompleted += delegate(Achievement a) { reportedAchievementCompleted = a; };

            // Act
            achievement.Clear();
            achievementConditionMock2.Raise(x => x.ProgressChanged += null, ac2,
                new AchievementConditionProgressChangedArgs(50));
            achievementConditionMock2.Raise(x => x.ConditionCompleted += null, ac2);

            // Assert
            Assert.AreEqual(0, achievement.Conditions.Count());
            Assert.AreEqual(0, reportedProgress);
            Assert.AreEqual(null, reportedAchievementProgressChanged);
            Assert.AreEqual(null, reportedAchievementCompleted);
        }
        /// <summary>
        /// Register an Achievement
        /// </summary>
        /// <remarks>The AchievementCompleted event only fires for registered Achievements!</remarks>
        /// <param name="achievement">The Achievement that should be registered</param>
        public void RegisterAchievement(Achievement achievement)
        {
            if (registeredAchievements.All(x => x.UniqueId != achievement.UniqueId))
            {
                registeredAchievements.Add(achievement);
                achievement.AchievementCompleted += AchievementAchievementCompleted;

                InvokeAchievementsChanged();
                InvokeAchievementRegistered(achievement);
            }
        }
 private void InvokeAchievementRegistered(Achievement a)
 {
     if (AchievementRegistered != null)
         AchievementRegistered(a);
 }
 private void InvokeAchievementCompleted(Achievement achievement)
 {
     if (AchievementCompleted != null)
         AchievementCompleted(achievement);
 }
 /// <summary>
 /// Fires the AchievementCompleted event of the AchievementManager
 /// </summary>
 /// <param name="achievement">Achievement that fired the AchievementCompleted event</param>
 private void AchievementAchievementCompleted(Achievement achievement)
 {
     InvokeAchievementCompleted(achievement);
     InvokeAchievementsChanged();
 }
        public void Constructor_GivenMultipleAchievementConsitionsWithSameUniqueId_ShouldOnlyAddOne()
        {
            // Arrange
            Mock<IAchievementCondition> acMock1 = new Mock<IAchievementCondition>();
            acMock1.SetupGet(x => x.UniqueId).Returns("UID1");

            Mock<IAchievementCondition> acMock2 = new Mock<IAchievementCondition>();
            acMock2.SetupGet(x => x.UniqueId).Returns("UID1");

            Mock<IAchievementCondition> acMock3 = new Mock<IAchievementCondition>();
            acMock3.SetupGet(x => x.UniqueId).Returns("UID1");

            // Act
            Achievement achievement = new Achievement("uid", "title", "desc",
                new List<IAchievementCondition> { acMock1.Object, acMock2.Object, acMock3.Object });

            // Assert
            Assert.AreEqual(1, achievement.Conditions.Count());
        }
 private void AmAchievementCompleted(Achievement achievement)
 {
     new AchievementNotificationWindow(achievement, this).Show();
 }
Example #17
0
 /// <summary>
 /// Fires the AchievementCompleted event of the AchievementManager
 /// </summary>
 /// <param name="achievement">Achievement that fired the AchievementCompleted event</param>
 private void AchievementAchievementCompleted(Achievement achievement)
 {
     InvokeAchievementCompleted(achievement);
     InvokeAchievementsChanged();
 }