예제 #1
0
        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);
        }
예제 #2
0
 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!");
 }
예제 #4
0
 public void OnEnemyAttackCountered(EnemyAttackCounteredEventArgs e)
 {
     EnemyAttackCountered?.Invoke(this, e);
 }