public void CorrectlyRaisesCounterAttackEvent() { _humanFighter.AddStatus(_status); _logger.Subscribe(EventType.EnemyAttackCountered, _humanFighter); _humanFighter.SetDefense(_enemy.Strength); _humanFighter.SetMove(_doNothing, 1); _humanFighter.SetMove(_runawayMove); _enemy.SetMove(_basicAttackMove); _enemy.SetHealth(_humanFighter.Strength + 1); _chanceService.PushEventsOccur(true, false); //attack hits, not a crit _chanceService.PushEventsOccur(true, false); //counter hits, not a crit _battleManager.Battle(_humanTeam, _enemyTeam); List <EventLog> logs = _logger.Logs; Assert.AreEqual(1, logs.Count); EventLog log = logs[0]; Assert.AreEqual(EventType.EnemyAttackCountered, log.Type); Assert.AreEqual(_humanFighter, log.Sender); EnemyAttackCounteredEventArgs e = log.E as EnemyAttackCounteredEventArgs; Assert.NotNull(e); Assert.AreEqual(_humanFighter, e.Counterer); Assert.AreEqual(_enemy, e.Enemy); }
private void _logEnemyAttackCountered(object sender, EnemyAttackCounteredEventArgs e) { Logs.Add(new EventLog(EventType.EnemyAttackCountered, sender, e)); }
protected void PrintCounterAttackMessage(object sender, EnemyAttackCounteredEventArgs e) { _output.WriteLine($"{e.Counterer.DisplayName} counter attacks!"); }
public void OnEnemyAttackCountered(EnemyAttackCounteredEventArgs e) { EnemyAttackCountered?.Invoke(this, e); }