Example #1
0
 private static Gamer CreateGamerWithLevelAndPoints(int level, int points)
 {
     var gamer = new Gamer();
     gamer.CurrentLevel = new Level { LevelNumber = level };
     gamer.Points = points;
     return gamer;
 }
Example #2
0
 public void SetUp()
 {
     this.autoChangeLevelTrigger = new AutoChangeLevelTrigger();
     this.gamer = new Gamer();
     gamer.Project = new Project();
     gamer.Project.Levels.Add(new Level { LevelNumber = 1, NeededPoints = 0 }.WithId());
     gamer.Project.Levels.Add(new Level { LevelNumber = 2, NeededPoints = 100 }.WithId(2));
     gamer.Project.Levels.Add(new Level { LevelNumber = 3, NeededPoints = 200 }.WithId(3));
 }
Example #3
0
        public void CallOnGamer_WhenPointsOperationIsIncrease_ShouldIncreaseGamerPointsOnPointsValue()
        {
            pointsTrigger.Points = 10;
            pointsTrigger.PointsOperation = PointsOperation.Increase;
            var gamer = new Gamer();
            gamer.Points = 20;

            pointsTrigger.CallOnGamer(gamer);

            gamer.Points.Should().Be.EqualTo(30);
        }
Example #4
0
        public static Gamer CreateGamer(string gamerName, Project project)
        {
            if (gamerName.IsNullOrBlank())
                return null;

            var gamer = new Gamer();
            gamer.UniqueKey = gamerName;
            gamer.Project = project;
            if (project.Levels.IsNotEmpty())
            {
                gamer.CurrentLevel = project.Levels.Min();
            }

            return gamer;
        }
Example #5
0
        public void Clone_ShoulCopyAllGamerProperties()
        {
            var gamer = new Gamer();
            gamer.Project = new Project();
            gamer.Project.GameActions.Add(new GameAction());
            gamer.Project.NumericConstraints.Add(new PointsBasedConstraint());
            gamer.Project.Triggers.Add(new AchievementsTrigger());
            gamer.Project.CollectionConstraints.Add(new AchievementsConstraint());
            gamer.Achievements.Add(new Achievement());
            gamer.GamerStatuses.Add(new GamerStatus());
            gamer.CurrentLevel = new Level { LevelNumber = 10 };

            var clonedGamer = gamer.Clone();

            clonedGamer.Should().Not.Be.Null();
            Assert.That(ReferenceEquals(gamer, clonedGamer), Is.False);
            clonedGamer.Project.Should().Not.Be.Null();
            clonedGamer.Achievements.Should().Have.Count.EqualTo(1);
            clonedGamer.GamerStatuses.Should().Have.Count.EqualTo(1);
            clonedGamer.CurrentLevel.LevelNumber.Should().Be.EqualTo(10);
        }
Example #6
0
        public IEnumerable<ActionPerformError> PerformAction(Gamer gamer)
        {
            var errors = new List<ActionPerformError>();
            foreach (var constraint in QtyBasedConstraints)
            {
                var result = constraint.GetResult(gamer);
                if (!result)
                {
                    errors.Add(new ActionPerformError(constraint.Description));
                }
            }

            if (errors.IsEmpty())
            {
                foreach (var trigger in TriggersToCall)
                {
                    trigger.CallOnGamer(gamer);
                }
            }

            return errors;
        }
 public StringCollectionResultProvider(BaseStringCollectionConstraint stringCollectionConstraint, Gamer gamer)
     : base(gamer)
 {
     this.stringCollectionConstraint = stringCollectionConstraint;
 }
 public QuantityBasedResultsProvider(BaseNumericBasedConstraint numericBasedConstraint, Gamer gamer)
     : base(gamer)
 {
     this.numericBasedConstraint = numericBasedConstraint;
 }
Example #9
0
        private ActionResponse CreateResponse(Gamer oldGamer, Gamer newGamer)
        {
            var response = new ActionResponse();
            response.Success = true;
            response.AchievementChanges.Add(GetAchievementsDiff(oldGamer.Achievements, newGamer.Achievements, ChangeAction.Unassign));
            response.AchievementChanges.Add(GetAchievementsDiff(newGamer.Achievements, oldGamer.Achievements, ChangeAction.Assign));
            response.StatusChanges.Add(GetStatusDiff(oldGamer.GamerStatuses, newGamer.GamerStatuses, ChangeAction.Unassign));
            response.StatusChanges.Add(GetStatusDiff(newGamer.GamerStatuses, oldGamer.GamerStatuses, ChangeAction.Assign));

            if (oldGamer.CurrentLevel != newGamer.CurrentLevel)
            {
                var levelDiff = Math.Abs(oldGamer.CurrentLevel.LevelNumber - newGamer.CurrentLevel.LevelNumber);
                response.LevelChange = new NumericCharacteristicChange(levelDiff, oldGamer.CurrentLevel > newGamer.CurrentLevel ? NumberOperation.Decrease : NumberOperation.Increase);
            }

            if (oldGamer.Points != newGamer.Points)
            {
                var pointsDiff = Math.Abs(oldGamer.Points - newGamer.Points);
                response.PointsChange = new NumericCharacteristicChange(pointsDiff, oldGamer.Points > newGamer.Points ? NumberOperation.Decrease : NumberOperation.Increase);
            }

            return response;
        }
Example #10
0
 private static Gamer CreateGamer()
 {
     var gamer = new Gamer();
     gamer.Project = new Project();
     return gamer;
 }
 protected BaseGamerDependResultProvider(Gamer gamer)
 {
     this.Gamer = gamer;
 }