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); }
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); } }
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); }
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)); }
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); }
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); }
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); }
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); } }
private void UpdateLog(BsActionResult result) { _logger.Log(result.Reason); }
public void ReleaseResult(BsActionResult res) { res.Reset(); _pool.Push(res); }
public void Leave(IBsActor actor, BsFaction faction, BsActionResult res) { _factioner.Leave(actor, faction, res); }
public void Join(IBsActor actor, BsFaction faction, BsActionResult res) { _factioner.Join(actor, faction, res); }