Пример #1
0
        public void ChoosesCorrectTarget()
        {
            ClosestOpponentTargeter targeter = new ClosestOpponentTargeter(new Distance(1.0));

            Hero attacker      = new Hero(new TeamId(0), _initialHp);
            Hero teammate      = new Hero(new TeamId(0), _initialHp);
            Hero deadOpponent  = new Hero(new TeamId(1), new HitPoints(0));
            Hero farOpponent   = new Hero(new TeamId(2), _initialHp);
            Hero closeOpponent = new Hero(new TeamId(3), _initialHp);

            HeroService  heroService  = new HeroService(new[] { attacker, teammate, deadOpponent, farOpponent, closeOpponent });
            SpaceService spaceService = new SpaceService();

            spaceService.SetHeroPosition(attacker, new Position(0.0, 0.0));
            spaceService.SetHeroPosition(teammate, new Position(0.1, 0.0));
            spaceService.SetHeroPosition(deadOpponent, new Position(0.0, 0.2));
            spaceService.SetHeroPosition(farOpponent, new Position(0.0, 0.9));
            spaceService.SetHeroPosition(closeOpponent, new Position(0.3, 0.4));

            GameContext context = new GameContext(heroService, new InputService(), new TimeService(), spaceService, new RandomService(new Random()));

            Hero[] targets = targeter.EnumerateTargets(attacker, context).ToArray();

            targets.Should().HaveCount(1);
            targets.Should().HaveElementAt(0, closeOpponent);
        }
Пример #2
0
        public void CanNotTargetOpponentWithNoHpLeft()
        {
            ClosestOpponentTargeter targeter = new ClosestOpponentTargeter(new Distance(1.0));

            Hero attacker     = new Hero(new TeamId(0), _initialHp);
            Hero deadOpponent = new Hero(new TeamId(1), new HitPoints(0));

            HeroService  heroService  = new HeroService(new[] { attacker, deadOpponent });
            SpaceService spaceService = new SpaceService();

            spaceService.SetHeroPosition(attacker, new Position(0.0, 0.0));
            spaceService.SetHeroPosition(deadOpponent, new Position(0.0, 0.5));

            GameContext context = new GameContext(heroService, new InputService(), new TimeService(), spaceService, new RandomService(new Random()));

            Hero[] targets = targeter.EnumerateTargets(attacker, context).ToArray();

            targets.Should().BeEmpty();
        }