Exemple #1
0
    def test_render_highlight(self):
        game_state = GameState()
        game_state.window_size = Vector(100, 100)
        was_called = []

        def dummy(*args):
            was_called.append(0)

        batch = pyglet.graphics.Batch()
        batch.add = dummy

        position = Vector()
        size = Vector(10, 10)
        tile_type = TileType.BUILDING_GROUND
        tile = Tile(position, size, tile_type)
        tile.render_highlight(game_state, batch)
        self.assertEqual(4, len(was_called))

        def dummy(*args):
            was_called.append(0)

        batch = pyglet.graphics.Batch()
        batch.add = dummy

        game_state = GameState()
        was_called.clear()
        position = Vector()
        size = Vector(10, 10)
        tile_type = TileType.BUILDING_GROUND
        tile = Tile(position, size, tile_type)
        tile.render_highlight(game_state, batch)
        self.assertEqual(0, len(was_called))
Exemple #2
0
    def test_update(self):
        was_called = []

        def shoot(*_):
            was_called.append(0)

        game_state = GameState()
        game_state.window_size = Vector(100, 100)
        game_state.building_manager.shoot = shoot

        # no enemy to shoot at
        building = Laser(Vector(), Vector(10, 10))
        building.cool_down = 0
        building.update(game_state)
        self.assertEqual(0, len(was_called))

        # on cool down
        building = Laser(Vector(), Vector(10, 10))
        building.cool_down = 100
        building.update(game_state)
        self.assertEqual(0, len(was_called))

        # shooting
        game_state.entity_manager.entities = [
            Entity(Vector(150, 0), Vector(10, 10), EntityType.LARGE_BOULDER)
        ]
        building = Laser(Vector(), Vector(10, 10))
        building.cool_down = 0
        building.update(game_state)
        self.assertEqual(1, len(was_called))
Exemple #3
0
    def test_closest_tile_angle(self):
        game_state = GameState()
        building = Drill(Vector(1, 1), Vector(10, 10))
        actual = building.closest_tile_angle(game_state)
        self.assertEqual(0, actual)

        game_state = GameState()
        game_state.tile_map.tiles[(1, 0)].tile_type = TileType.PATH
        actual = building.closest_tile_angle(game_state)
        self.assertEqual(0, actual)

        game_state = GameState()
        game_state.tile_map.tiles[(0, 1)].tile_type = TileType.PATH
        actual = building.closest_tile_angle(game_state)
        self.assertEqual(-90, actual)

        game_state = GameState()
        game_state.tile_map.tiles[(1, 2)].tile_type = TileType.PATH
        actual = building.closest_tile_angle(game_state)
        self.assertEqual(180, actual)

        game_state = GameState()
        game_state.tile_map.tiles[(2, 1)].tile_type = TileType.PATH
        actual = building.closest_tile_angle(game_state)
        self.assertEqual(90, actual)
Exemple #4
0
 def test_open(self):
     game_state = GameState()
     game_state.window_size = Vector(0, 500)
     dialog = Dialog(True)
     dialog.open(game_state)
     self.assertTrue(dialog.visible)
     self.assertEqual(300, dialog.position.y)
    def test_update_entities(self):
        game_state = GameState()
        was_called = []

        def update(*_):
            was_called.append(0)

        entity = Entity(Vector(), Vector(), EntityType.LARGE_BOULDER)
        entity.update = update

        entity_manager = EntityManager()
        entity_manager.entities = [entity]
        entity_manager.update_entities(game_state)

        self.assertEqual(1, len(was_called))

        before_health = game_state.player_health
        game_state.tile_map.tiles[(0, 0)].tile_type = TileType.FINISH
        entity_manager.entities = [entity]
        entity_manager.update_entities(game_state)
        self.assertEqual(0, len(entity_manager.entities))
        self.assertEqual(before_health - 1, game_state.player_health)

        game_state = GameState()
        entity.health = 0
        entity.entity_type = EntityType.SMALL_BOULDER
        entity_manager.entities = [entity]
        entity_manager.update_entities(game_state)
        self.assertEqual(0, len(entity_manager.entities))
    def test_clean_up(self):
        game_state = GameState()

        game_state.clean_up()

        self.assertEqual(0, len(game_state.mouse_clicks))
        self.assertEqual("", game_state.key_presses.text)
        self.assertEqual(False, game_state.key_presses.back_space)
Exemple #7
0
    def test_update_reset_animation_speed(self):
        game_state = GameState()
        game_state.window_size = Vector(100, 100)

        building = Drill(Vector(), Vector(10, 10))
        building.animation_speed = 5
        building.update(game_state)
        self.assertEqual(0, building.animation_speed)
    def test_update_key_event_bottom_right(self):
        game_state = GameState()
        game_state.key_presses.down = True
        game_state.key_presses.right = True
        game_state.window_size = Vector(1280, 720)
        game_state.update()

        actual = game_state.world_offset
        self.assertEqual(Vector(95, 105), actual)
    def test_update_key_event_top_left(self):
        game_state = GameState()
        game_state.key_presses.up = True
        game_state.key_presses.left = True
        game_state.window_size = Vector(1280, 720)
        game_state.update()

        actual = game_state.world_offset
        self.assertEqual(Vector(105, 95), actual)
    def test_index_to_world_space(self):
        game_state = GameState()
        actual = game_state.index_to_world_space((0, 0))
        self.assertEqual(Vector(0, 0), actual, str(actual))

        actual = game_state.index_to_world_space((1, 0))
        self.assertEqual(Vector(100, 0), actual, str(actual))

        actual = game_state.index_to_world_space(Vector(1, 0))
        self.assertEqual(Vector(100, 0), actual, str(actual))
    def test_tick(self):
        def dummy():
            return -1, -2

        window = Object()
        window.get_size = dummy
        game_state = GameState()
        # noinspection PyTypeChecker
        game_state.tick(window)
        self.assertEqual(Vector(-1, -2), game_state.window_size)
    def test_world_to_index_space(self):
        game_state = GameState()

        actual = game_state.world_to_index_space(Vector())
        self.assertEqual((0, 0), actual, str(actual))

        actual = game_state.world_to_index_space(Vector(100, 100))
        self.assertEqual((1, 1), actual, str(actual))

        actual = game_state.world_to_index_space(Vector(50, 50))
        self.assertEqual((0, 0), actual, str(actual))
    def test_update(self):
        game_state = GameState()
        game_state.tile_map.tiles[(0, 0)].tile_type = TileType.START
        game_state.tile_map.tiles[(1, 1)].tile_type = TileType.FINISH
        entity_manager = EditorEntityManager()
        entity_manager.spawn_timer = 0
        game_state.entity_manager = entity_manager

        entity_manager.update(game_state)
        self.assertEqual(0, len(entity_manager.entities))
        self.assertEqual(1, entity_manager.spawn_timer)
Exemple #14
0
    def test_render_no_label(self):
        game_state = GameState()
        game_state.window_size = Vector(100, 100)

        position = Vector(1, 1)
        size = Vector(10, 10)
        tile_type = TileType.BUILDING_GROUND
        tile = Tile(position, size, tile_type)

        batch = pyglet.graphics.Batch()
        tile.render_label(game_state, batch)
        self.assertEqual(0, len(batch.top_groups))
Exemple #15
0
    def test_process_clicks(self):
        game_state = GameState()
        game_state.mouse_clicks.append(MouseClick())

        def false_processor(game_state, mouse_click):
            return False

        process_clicks(game_state, false_processor)
        self.assertEqual(1, len(game_state.mouse_clicks))

        def offset_processor(game_state, mouse_click):
            self.assertEqual(Vector(-10, -10), mouse_click.position)
            return False

        process_clicks(game_state,
                       offset_processor,
                       map_to_world_space=False,
                       offset=Vector(10, 10))
        self.assertEqual(1, len(game_state.mouse_clicks))

        def true_processor(game_state, mouse_click):
            return True

        process_clicks(game_state, true_processor)
        self.assertEqual(0, len(game_state.mouse_clicks))
Exemple #16
0
    def test_spawn_building(self):
        game_state = GameState()
        tile_index = (1, 0)

        building_manager = BuildingManager()
        building_manager.spawn_building(game_state, tile_index,
                                        BuildingType.LASER)
        self.assertEqual(1, len(building_manager.buildings))
        self.assertEqual((1, 0), list(building_manager.buildings.keys())[0])

        building = building_manager.buildings[(1, 0)]
        self.assertEqual(Vector(1, 0), building.position)
        self.assertEqual(Laser, type(building))

        building_manager.spawn_building(game_state, tile_index,
                                        BuildingType.DRILL)
        self.assertEqual(Drill, type(building_manager.buildings[(1, 0)]))

        building_manager.spawn_building(game_state, tile_index,
                                        BuildingType.HAMMER)
        self.assertEqual(Hammer, type(building_manager.buildings[(1, 0)]))

        building_manager.spawn_building(game_state, tile_index, -1)
        self.assertEqual(Building, type(building_manager.buildings[(1, 0)]))

        building_manager = BuildingManager()
        building_manager.gold = 0
        building_manager.spawn_building(game_state, tile_index,
                                        BuildingType.HAMMER)
        self.assertEqual(0, len(building_manager.buildings.keys()))
Exemple #17
0
    def test_render(self):
        game_state = GameState()
        game_state.init("./tower_defense/res")
        game_state.window_size = Vector(100, 100)

        building = Hammer(Vector(), Vector(10, 10))
        batch = pyglet.graphics.Batch()
        building.render(game_state, batch)
        self.assertEqual(1, len(batch.top_groups))
        self.assertEqual(pyglet.graphics.TextureGroup,
                         type(batch.top_groups[0]))

        building = Hammer(Vector(20, 20), Vector(10, 10))
        batch = pyglet.graphics.Batch()
        building.render(game_state, batch)
        self.assertEqual(0, len(batch.top_groups))
 def test_update_split_large_boulder(self):
     game_state = GameState()
     entity = Entity(Vector(), Vector(), EntityType.LARGE_BOULDER)
     entity.health = 0
     entity_manager = EntityManager()
     entity_manager.entities = [entity]
     entity_manager.update_entities(game_state)
     self.assertEqual(2, len(entity_manager.entities))
    def test_render(self):
        game_state = GameState()
        game_state.init("./tower_defense/res")
        game_state.window_size = Vector(100, 100)

        entity = Entity(Vector(1, 1), Vector(10, 10), EntityType.LARGE_BOULDER)
        batch = pyglet.graphics.Batch()
        entity.render(game_state, batch)
        self.assertEqual(1, len(batch.top_groups))
        self.assertEqual(pyglet.graphics.TextureGroup,
                         type(batch.top_groups[0]))

        entity = Entity(Vector(10, 10), Vector(10, 10),
                        EntityType.LARGE_BOULDER)
        batch = pyglet.graphics.Batch()
        entity.render(game_state, batch)
        self.assertEqual(0, len(batch.top_groups))
 def test_update(self):
     game_state = GameState()
     game_state.tile_map.tiles[(0, 0)].tile_type = TileType.PATH
     game_state.tile_map.tiles[(0, 0)].directions = [(1, 0)]
     game_state.entity_manager.update(game_state)
     entity = Entity(Vector(1, 1), Vector(10, 10), EntityType.LARGE_BOULDER)
     entity.update(game_state)
     self.assertEqual((1, 0), entity.next_tile_index)
    def test_update_with_entity_hit(self):
        game_state = GameState()
        entity = Entity(Vector(0, 0), Vector(10, 10), EntityType.LARGE_BOULDER)
        game_state.entity_manager.entities = [entity]

        bullet = Bullet(Vector(), Vector(10, 10), Vector(1, 1))
        result = bullet.update(game_state)
        self.assertTrue(result)
    def test_spawn_random_entity(self):
        game_state = GameState()
        game_state.tile_map.tiles[(0, 0)].tile_type = TileType.START
        game_state.tile_map.tiles[(1, 0)].tile_type = TileType.FINISH

        entity_manager = EntityManager()
        entity_manager.spawn_entity(game_state, EntityType.LARGE_BOULDER)
        self.assertEqual(1, len(entity_manager.entities))
        self.assertEqual(Vector(50, 50), entity_manager.entities[0].position)
    def test_calculate_movement(self):
        game_state = GameState()

        entity = Entity(Vector(50, 50), Vector(10, 10),
                        EntityType.LARGE_BOULDER)
        entity.next_tile_index = (1, 0)
        entity.calculate_movement(game_state)
        self.assertEqual(Vector(2, 0), entity.velocity, str(entity.velocity))
        self.assertEqual(Vector(52, 50), entity.position, str(entity.position))
    def test_update_cancel():
        game_state = GameState()

        entity = Entity(Vector(-100, -100), Vector(10, 10),
                        EntityType.LARGE_BOULDER)
        entity.update(game_state)

        entity = Entity(Vector(1, 1), Vector(10, 10), EntityType.LARGE_BOULDER)
        entity.update(game_state)
Exemple #25
0
 def test_new(self):
     tile_map = TileMap()
     game_state = GameState()
     test_path = "new.map"
     size = Vector(5, 5)
     tile_map.new(game_state, test_path, size)
     self.assertEqual(25, len(tile_map.tiles))
     self.assertEqual(test_path, tile_map.path)
     self.assertEqual(size, tile_map.max_tiles)
     os.remove(test_path)
    def test_update(self):
        game_state = GameState()

        bullet = Bullet(Vector(), Vector(10, 10), Vector(1, 1))
        result = bullet.update(game_state)
        self.assertFalse(result)

        bullet = Bullet(Vector(), Vector(10, 10), Vector(-1, -1))
        result = bullet.update(game_state)
        self.assertTrue(result)
Exemple #27
0
    def test_render(self):
        game_state = GameState()
        was_called = []

        def dummy(*args):
            was_called.append(0)

        tile_map = EditorTileMap()
        tile_map.tiles[(0, 0)].render_arrow = dummy
        tile_map.render(game_state)
        self.assertEqual(1, len(was_called))
Exemple #28
0
    def test_open(self):
        game_state = GameState()
        was_called = []

        def dummy(*args):
            was_called.append(0)
            return 0, 0

        load_map_dialog = LoadMapDialog()
        load_map_dialog.refresh_maps = dummy
        load_map_dialog.open(game_state)
        self.assertEqual(1, len(was_called))
Exemple #29
0
 def test_update(self):
     game_state = GameState()
     game_state.key_presses.up = True
     game_state.key_presses.down = True
     game_state.key_presses.left = True
     game_state.key_presses.right = True
     dialog = Dialog(True)
     dialog.update(game_state)
     self.assertFalse(game_state.key_presses.up)
     self.assertFalse(game_state.key_presses.down)
     self.assertFalse(game_state.key_presses.left)
     self.assertFalse(game_state.key_presses.right)
Exemple #30
0
    def test_render(self):
        game_state = GameState()
        was_called = []

        def dummy(*args):
            was_called.append(0)

        tile_map = GameTileMap()
        tile_map.tiles[(0, 0)].render_highlight = dummy
        tile_map.tiles[(0, 0)].highlighted = True
        tile_map.render(game_state)
        self.assertEqual(1, len(was_called))