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); }
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); }
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)); }
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)); }
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)); }
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); }
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); }
public virtual void Handle() => next?.Handle();