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)); } }
public void Add(CreatureModifier cm) { cm.creature = this.creature; if (this.next != null) { this.next.Add(cm); } else { this.next = cm; } }
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); }