public void Add(CreatureModifier cm)
 {
     if (next != null)
     {
         next.Add(cm);
     }
     else
     {
         next = cm;
     }
 }
            public GoblinKing(Game game) : base(game)
            {
                Attack  = 3;
                Defense = 3;

                for (int i = 0; i < game.Creatures.Count; i++)
                {
                    CreatureModifier.Add(new GoblinKingInGameModifier(game.Creatures[i]));
                    CreatureModifier.Add(new GoblinKingInGameModifier(this));
                }
            }
            public Goblin(Game game)
            {
                CreatureModifier = new CreatureModifier(this);
                Attack           = 1;
                Defense          = 1;

                for (int i = 0; i < game.Creatures.Count; i++)
                {
                    CreatureModifier.Add(new GoblinsInGameModifier(game.Creatures[i]));
                    CreatureModifier.Add(new GoblinsInGameModifier(this));
                }
            }
Esempio n. 4
0
 public void Add(CreatureModifier cm)
 {
     cm.creature = this.creature;
     if (this.next != null)
     {
         this.next.Add(cm);
     }
     else
     {
         this.next = cm;
     }
 }
Esempio n. 5
0
        public void Handle_AddSomeDoubleAttackModifiers_CheckIfApplied()
        {
            var creature = new Creature("Test", 100, 100);
            var cm       = new CreatureModifier(creature);

            cm.Add(new DoubleAttackModifier(creature));
            cm.Add(new DoubleAttackModifier(creature));
            cm.Handle();

            var attack = creature.Attack;

            Assert.That(attack, Is.EqualTo(400));
        }
Esempio n. 6
0
        public void Handle_AddNoBonusesModifier_CheckIfFurtherModifiersAreNotApplied()
        {
            var creature = new Creature("Test", 100, 100);
            var cm       = new CreatureModifier(creature);

            cm.Add(new DoubleAttackModifier(creature));
            cm.Add(new NoBonusesModifier(creature));
            cm.Add(new DoubleAttackModifier(creature));
            cm.Add(new DoubleAttackModifier(creature));
            cm.Handle();

            var attack = creature.Attack;

            Assert.That(attack, Is.EqualTo(200));
        }
Esempio n. 7
0
        public void Goblin_ShouldApplyMethodModificationChain()
        {
            var goblin = new Creature("Goblin", 2, 2);

            Assert.That(goblin.Attack, Is.EqualTo(2));
            Assert.That(goblin.Defense, Is.EqualTo(2));

            var root = new CreatureModifier(goblin);

            root.Add(new DoubleAttackModifier(goblin));
            root.Add(new IncreaseDefenseModifier(goblin));
            root.Handle();
            Assert.That(goblin.Attack, Is.EqualTo(4));
            Assert.That(goblin.Defense, Is.EqualTo(5));
        }
Esempio n. 8
0
        public void Run()
        {
            var goblin = new Creature("goblin", 2, 2);

            WriteLine(goblin);

            var root = new CreatureModifier(goblin);

            //breaks chain of responcibility
            //root.Add(new NoBonusesModifier(goblin));
            root.Add(new DoubleAttackModifier(goblin));
            root.Add(new IncreaseDefenceModifier(goblin));
            root.Handle();

            WriteLine(goblin);
        }
        public static void Run()
        {
            var goblin = new Creature("Goblin", 2, 2);

            Console.WriteLine(goblin);

            var root = new CreatureModifier(goblin);

            root.Add(new NoBonusModifier(goblin));

            Console.WriteLine("Let's double the goblin's attack");
            root.Add(new DoubleAttackModifier(goblin));
            Console.WriteLine("Let's increase goblin's defense");
            root.Add(new IncreaseDefenseModifier(goblin));

            root.Handle();

            Console.WriteLine(goblin);
        }
Esempio n. 10
0
        private static void MethodChain()
        {
            var goblin = new Creature("Goblin", 2, 2);

            WriteLine(goblin);

            var root = new CreatureModifier(goblin);

            //root.Add(new NoBonusesModifier(goblin));

            WriteLine("Let's double goblin's attack...");
            root.Add(new DoubleAttackModifier(goblin));

            WriteLine("Let's increase goblin's defense");
            root.Add(new IncreaseDefenseModifier(goblin));

            // eventually...
            root.Handle();
            WriteLine(goblin);
        }