public void AddStatBonus(StatType stat, int bonus, bool isSecretBonus = false) { switch (stat) { case StatType.Strength: Strength += bonus; break; case StatType.Defense: Defense += bonus; break; case StatType.Speed: Speed += bonus; break; case StatType.Luck: Luck += bonus; break; } StatBonusAppliedEventArgs e = new StatBonusAppliedEventArgs(stat, bonus, isSecretBonus); OnStatBonusApplied(e); }
public void AddMagicBonus_DefaultParameters_NotSecretStatBoost() { _fighter.AddStatBonus(StatType.Strength, 1); EventLog log = _logger.Logs[0]; StatBonusAppliedEventArgs e = log.E as StatBonusAppliedEventArgs; Assert.NotNull(e); Assert.IsFalse(e.IsSecretStatBonus); }
public void CorrectlySuppressesMessage_StatBonusAdded_SecretStatBonus() { StatBonusAppliedEventArgs e = new StatBonusAppliedEventArgs(StatType.Defense, 2, true); _fighter.OnStatBonusApplied(e); MockOutputMessage[] outputs = _output.GetOutputs(); Assert.AreEqual(0, outputs.Length); }
private void PrintStatBoostMessage(object sender, StatBonusAppliedEventArgs e) { if (!e.IsSecretStatBonus) { IFighter senderAsFighter = sender as IFighter; if (senderAsFighter == null) { return; } _output.WriteLine($"{senderAsFighter.DisplayName} gained +{e.BonusAmount} {e.Stat.ToString().ToLower()}"); } }
public void CorrectlyPrintsMessage_StatBonusAdded([Values] StatType statType, [Values(1, 3)] int bonusAmount) { StatBonusAppliedEventArgs e = new StatBonusAppliedEventArgs(statType, bonusAmount, false); _fighter.OnStatBonusApplied(e); MockOutputMessage[] outputs = _output.GetOutputs(); Assert.AreEqual(1, outputs.Length); MockOutputMessage output = outputs[0]; Assert.AreEqual($"{_fighter.DisplayName} gained +{bonusAmount} {statType.ToString().ToLower()}\n", output.Message); }
public void AddStatBonus_AppropriatelyRasiesEvent([Values] StatType statType, [Values(1, 5)] int bonusAmount, [Values] bool isSecret) { _fighter.AddStatBonus(statType, bonusAmount, isSecret); List <EventLog> logs = _logger.Logs; Assert.AreEqual(1, logs.Count); EventLog log = logs[0]; Assert.AreEqual(EventType.StatBonusApplied, log.Type); StatBonusAppliedEventArgs e = log.E as StatBonusAppliedEventArgs; Assert.NotNull(e); Assert.AreEqual(statType, e.Stat); Assert.AreEqual(bonusAmount, e.BonusAmount); Assert.AreEqual(isSecret, e.IsSecretStatBonus); }
public void CorrectlySubscribesToMultipleFighters() { _output = new MockOutput(); EventHandlerPrinter printer = new EventHandlerPrinter(_output); HumanFighter fighter2 = (HumanFighter)FighterFactory.GetFighter(FighterType.HumanControlledPlayer, 1); HumanFighter fighter3 = (HumanFighter)FighterFactory.GetFighter(FighterType.HumanControlledPlayer, 1); printer.Subscribe(_fighter, fighter2, fighter3); StatBonusAppliedEventArgs e = new StatBonusAppliedEventArgs(StatType.Defense, 2, false); _fighter.OnStatBonusApplied(e); fighter2.OnStatBonusApplied(e); fighter3.OnStatBonusApplied(e); MockOutputMessage[] outputs = _output.GetOutputs(); Assert.AreEqual(3, outputs.Length); }
private void _logStatBonusApplied(object sender, StatBonusAppliedEventArgs e) { Logs.Add(new EventLog(EventType.StatBonusApplied, sender, e)); }
public void OnStatBonusApplied(StatBonusAppliedEventArgs e) { StatBonusApplied?.Invoke(this, e); }