Example #1
0
        public void AttackHealTest()
        {
            var res = new BsActionResult();

            _stats.Setup(x => x.ResolveAttack(It.IsAny <IBsActor>(), It.IsAny <IBsActor>())).Returns(100);
            _stats.Setup(x => x.ResolveHeal(It.IsAny <IBsActor>(), It.IsAny <IBsActor>())).Returns(200);

            var health = new BsHealthModel(_actors.Object, _stats.Object);

            health.Attack(_actor1.Object, _actor2.Object, res);
            Assert.AreEqual(900, health.Health(_actor2.Object));
            Assert.IsTrue(res.Ok);
            Assert.AreEqual(-100, res.Value);

            health.Attack(_actor1.Object, _actor2.Object, res);
            Assert.AreEqual(800, health.Health(_actor2.Object));
            Assert.IsTrue(res.Ok);
            Assert.AreEqual(-100, res.Value);

            health.Attack(_actor1.Object, _actor2.Object, res);
            Assert.AreEqual(700, health.Health(_actor2.Object));
            Assert.IsTrue(res.Ok);
            Assert.AreEqual(-100, res.Value);

            health.Heal(_actor1.Object, _actor2.Object, res);
            Assert.AreEqual(900, health.Health(_actor2.Object));
            Assert.IsTrue(res.Ok);
            Assert.AreEqual(200, res.Value);
        }
Example #2
0
        public void RangedInRangeTest()
        {
            var rangeActorConfig = new Mock <IBsActorConfig>();

            rangeActorConfig.Setup(x => x.AttackType()).Returns(ActorAttackType.Range);

            _actor1.Setup(x => x.Config()).Returns(rangeActorConfig.Object);
            var model = new BsRange(_board.Object, _config.Object);

            for (int i = 1; i <= 20; i = i << 1)
            {
                var res = new BsActionResult();
                _board.Setup(x => x.Distance(It.IsAny <IBsActor>(), It.IsAny <IBsActor>())).Returns(i);
                model.CheckAttackDst(_actor1.Object, _actor2.Object, res);
                Assert.IsTrue(res.Ok);
            }

            for (int i = 21; i < 100; i = i << 1)
            {
                var res = new BsActionResult();
                _board.Setup(x => x.Distance(It.IsAny <IBsActor>(), It.IsAny <IBsActor>())).Returns(i);
                model.CheckAttackDst(_actor1.Object, _actor2.Object, res);
                Assert.IsFalse(res.Ok);
            }
        }
Example #3
0
 public void Heal(IBsActor source, IBsActor target, BsActionResult res)
 {
     if (!_factions.AreAllies(source, target))
     {
         res.Reason = "Cann't heal enemies";
         return;
     }
     _healer.Heal(source, target, res);
 }
Example #4
0
        public void IsDeadTest()
        {
            var res = new BsActionResult();

            _stats.Setup(x => x.ResolveAttack(It.IsAny <IBsActor>(), It.IsAny <IBsActor>())).Returns(9999);
            _stats.Setup(x => x.ResolveHeal(It.IsAny <IBsActor>(), It.IsAny <IBsActor>())).Returns(9999);

            var health = new BsHealthModel(_actors.Object, _stats.Object);

            Assert.IsFalse(health.IsDead(_actor2.Object));

            health.Attack(_actor1.Object, _actor2.Object, res);
            Assert.IsTrue(health.IsDead(_actor2.Object));
        }
Example #5
0
        public void JoinFactionTest()
        {
            var model = new BsFactions(_actors.Object);
            var res   = new BsActionResult();

            model.Join(_actor1.Object, BsFaction.Blue, res);
            Assert.IsTrue(model.Contains(_actor1.Object, BsFaction.Blue));
            Assert.IsTrue(res.Ok);

            res = new BsActionResult();
            model.Join(_actor1.Object, BsFaction.Blue, res);
            Assert.IsTrue(model.Contains(_actor1.Object, BsFaction.Blue));
            Assert.IsFalse(res.Ok);
        }
Example #6
0
        public void Attack(IBsActor source, IBsActor target, BsActionResult res)
        {
            if (_factions.AreAllies(source, target))
            {
                res.Reason = "Cann't attack aliies";
                return;
            }
            _range.CheckAttackDst(source, target, res);
            if (!res.Ok)
            {
                return;
            }

            _attacker.Attack(source, target, res);
        }
Example #7
0
        public void AddHealtTest()
        {
            var res    = new BsActionResult();
            var health = new BsHealthModel(_actors.Object, _stats.Object);

            health.Attack(_actor1.Object, _actor2.Object, res);
            Assert.AreEqual(1000, health.Health(_actor1.Object));
            Assert.AreEqual(999, health.Health(_actor2.Object));
            Assert.IsTrue(res.Ok);
            Assert.AreEqual(-1, res.Value);

            res = new BsActionResult();
            health.Heal(_actor1.Object, _actor2.Object, res);
            Assert.AreEqual(1000, health.Health(_actor1.Object));
            Assert.AreEqual(1000, health.Health(_actor2.Object));
            Assert.IsTrue(res.Ok);
            Assert.AreEqual(1, res.Value);
        }
Example #8
0
        public void MeleeInRangeTest()
        {
            var model = new BsRange(_board.Object, _config.Object);

            for (int i = 0; i <= 2; i++)
            {
                var res = new BsActionResult();
                _board.Setup(x => x.Distance(It.IsAny <IBsActor>(), It.IsAny <IBsActor>())).Returns(i);
                model.CheckAttackDst(_actor1.Object, _actor2.Object, res);
                Assert.IsTrue(res.Ok);
            }

            for (int i = 3; i < 25; i = i << 1)
            {
                var res = new BsActionResult();
                _board.Setup(x => x.Distance(It.IsAny <IBsActor>(), It.IsAny <IBsActor>())).Returns(i);
                model.CheckAttackDst(_actor1.Object, _actor2.Object, res);
                Assert.IsFalse(res.Ok);
            }
        }
Example #9
0
 private void UpdateLog(BsActionResult result)
 {
     _logger.Log(result.Reason);
 }
Example #10
0
 public void ReleaseResult(BsActionResult res)
 {
     res.Reset();
     _pool.Push(res);
 }
Example #11
0
 public void Leave(IBsActor actor, BsFaction faction, BsActionResult res)
 {
     _factioner.Leave(actor, faction, res);
 }
Example #12
0
 public void Join(IBsActor actor, BsFaction faction, BsActionResult res)
 {
     _factioner.Join(actor, faction, res);
 }