Exemplo n.º 1
0
        public void TestCreatureModifier()
        {
            var goblin = new Creature("Goblin", 2, 2);

            Console.WriteLine(goblin);

            CreatureModifier root = new CreatureModifier(goblin);

            Console.WriteLine("Doubling Gblin's attacks");
            root.Add(new DoubleAttackModifier(goblin));
            root.Handle();
            Console.WriteLine(goblin);

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

            root.Add(new IncreaseDefenseModifier(goblin));
            root.Handle();
            Console.WriteLine(goblin);



            root.Add(new IncreaseDefenseModifier(goblin));
            root.Handle();
            Console.WriteLine(goblin);

            root.Add(new IncreaseDefenseModifier(goblin));
            root.Handle();
            Console.WriteLine(goblin);
        }
Exemplo n.º 2
0
        public static void Demo()
        {
            // new goblin with att 2 and def 2
            var goblin = new Creature("Goblin", 2, 2);

            WriteLine(goblin);

            var root = new CreatureModifier(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));

            WriteLine("Let's throw a blocking spell on goblin");
            root.Add(new SpellBlockModifier(goblin));

            WriteLine("Let's increase goblin's defense again - this spell should not make any effect");
            root.Add(new IncreaseDefenseModifier(goblin));

            WriteLine(Environment.NewLine + "Execution spell chain");
            root.Handle();
            WriteLine(goblin);
        }
        public static void Invoke()
        {
            var bison = new Creature("Bison", 2, 2);

            //Console.WriteLine(bison);

            //var dcm = new DoubleAttackModifier(bison);
            //dcm.Handle();
            //Console.WriteLine(bison);

            //var icm = new IncreaseDefenseModifier(bison);
            //icm.Handle();

            var root = new CreatureModifier(bison);
            var dcm  = new DoubleAttackModifier(bison);

            root.Add(dcm);
            Console.WriteLine(bison);

            var icm = new AddTwoDefensePointModifier(bison);

            root.Add(icm);

            var tcm = new AddThreeDefensePointModifier(bison);

            root.Add(tcm);

            var tpcm = new TripleAttackModifier(bison);

            root.Add(tpcm);

            root.Handle();

            Console.WriteLine(bison);
        }
Exemplo n.º 4
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));
        }
Exemplo n.º 5
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));
        }
Exemplo n.º 6
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));
        }
Exemplo n.º 7
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);
        }
Exemplo n.º 9
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);
        }
Exemplo n.º 10
0
 public virtual void Handle() => next?.Handle();