示例#1
0
    def test_enemies_in_range_no_enemies(self):
        all_units = self.b_units
        for index, unit in enumerate(all_units):
            self.map.place_unit(unit, Point(index, index))
        test_unit = all_units[2]

        teams = [self.team_a, self.team_b]
        test = TargetFinder(self.map, teams)
        answer = test.enemies_in_range(test_unit)
        self.assertEqual(answer, {})
示例#2
0
    def test_enemies_in_range_by_weapon_range(self):
        origin = self.a_units[0]
        in_range, out_of_range = self.b_units[0:2]
        self.map.place_unit(origin, Point(0, 0))
        self.map.place_unit(in_range, Point(10, 0))
        self.map.place_unit(out_of_range, Point(11, 0))
        origin.equip_weapon(RangedWeapon(10, 10, 10, 10))
        tf = TargetFinder(self.map, [self.team_a, self.team_b])

        answer = tf.enemies_in_range(origin)
        expected = {
            in_range: (10, 0),
        }
        self.assertEqual(answer, expected)

        self.map.remove_unit(Point(10, 0))
        self.map.remove_unit(Point(11, 0))
        self.map.place_unit(in_range, Point(5, 5))
        self.map.place_unit(out_of_range, Point(5, 6))
        answer = tf.enemies_in_range(origin)
        self.assertEqual(answer, expected)
示例#3
0
    def test_enemies_in_range_answer_excludes_non_enemies(self):
        all_units = self.a_units + self.b_units
        for index, unit in enumerate(all_units):
            self.map.place_unit(unit, Point(index, index))
        test_unit = all_units[3]
        test_unit.equip_weapon(RangedWeapon(10, 10, 10, 10))

        teams = [self.team_a, self.team_b]
        test = TargetFinder(self.map, teams)
        answer = test.enemies_in_range(test_unit)
        expected = {
            self.a_units[0]: (6, 0),
            self.a_units[1]: (4, 0),
            self.a_units[2]: (2, 0)
        }
        self.assertEqual(answer, expected)
示例#4
0
    def test_enemies_in_range_by_obstructed_view(self):
        points_to_elevation = {Point(0, 0): 0, Point(1, 0): 1, Point(2, 0): 0}
        tiles = [
            Tile(elevation=elevation, point=point)
            for point, elevation in points_to_elevation.items()
        ]
        the_map = Map(3, 1, tiles)

        origin = self.a_units[0]
        in_range, out_of_range = self.b_units[0:2]
        the_map.place_unit(origin, Point(0, 0))
        the_map.place_unit(in_range, Point(1, 0))
        the_map.place_unit(out_of_range, Point(2, 0))
        origin.equip_weapon(RangedWeapon(10, 10, 1, 1))

        tf = TargetFinder(the_map, [self.team_a, self.team_b])

        answer = tf.enemies_in_range(origin)
        expected = {
            in_range: (1, -1),
        }
        self.assertEqual(answer, expected)
示例#5
0
 def _get_targets_in_range(self):
     tf = TargetFinder(self._map, self._teams)
     return tf.enemies_in_range(self._unit)