diff --git a/arcade/tilemap/tilemap.py b/arcade/tilemap/tilemap.py index d4762a243..dfa84ffd7 100644 --- a/arcade/tilemap/tilemap.py +++ b/arcade/tilemap/tilemap.py @@ -700,7 +700,7 @@ def _process_image_layer( args = { "filename": image_file, "scale": scaling, - "texture": my_texture, + "path_or_texture": my_texture, "hit_box_algorithm": hit_box_algorithm, } @@ -720,7 +720,9 @@ def _process_image_layer( my_sprite.center_x = ( (layer.offset[0] * scaling) + my_sprite.width / 2 ) + offset[0] - my_sprite.center_y = (layer.offset[1]) + offset[1] + my_sprite.top = ( + self.tiled_map.map_size.height * self.tiled_map.tile_size[1] + - layer.offset[1]) * scaling + offset[1] sprite_list.visible = layer.visible sprite_list.append(my_sprite) diff --git a/tests/fixtures/tilemaps/image_layer.json b/tests/fixtures/tilemaps/image_layer.json new file mode 100644 index 000000000..c295c6b31 --- /dev/null +++ b/tests/fixtures/tilemaps/image_layer.json @@ -0,0 +1,68 @@ +{ "compressionlevel":-1, + "height":15, + "infinite":false, + "layers":[ + { + "id":3, + "image":"..\/..\/..\/arcade\/resources\/assets\/images\/backgrounds\/abstract_1.jpg", + "name":"img-offset", + "offsetx":1280, + "offsety":512, + "opacity":1, + "type":"imagelayer", + "visible":true, + "x":0, + "y":0 + }, + { + "id":4, + "image":"..\/..\/..\/arcade\/resources\/assets\/images\/backgrounds\/abstract_1.jpg", + "name":"img", + "opacity":1, + "type":"imagelayer", + "visible":true, + "x":0, + "y":0 + }, + { + "data":[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], + "height":15, + "id":1, + "name":"Tile Layer 1", + "opacity":1, + "type":"tilelayer", + "visible":true, + "width":20, + "x":0, + "y":0 + }], + "nextlayerid":5, + "nextobjectid":21, + "orientation":"orthogonal", + "renderorder":"left-up", + "tiledversion":"1.10.1", + "tileheight":128, + "tilesets":[ + { + "firstgid":1, + "source":"..\/..\/..\/arcade\/resources\/assets\/tiled_maps\/standard_tileset.json" + }], + "tilewidth":128, + "type":"map", + "version":"1.10", + "width":20 +} diff --git a/tests/unit/tilemap/test_img_layer.py b/tests/unit/tilemap/test_img_layer.py new file mode 100644 index 000000000..7c6896ee5 --- /dev/null +++ b/tests/unit/tilemap/test_img_layer.py @@ -0,0 +1,50 @@ +import arcade + + +def test_image_layer(): + # Read in the tiled map + tile_map = arcade.load_tilemap(":fixtures:tilemaps/image_layer.json") + + # --- Platforms --- + assert "img" in tile_map.sprite_lists + assert len(tile_map.sprite_lists["img"]) == 1 + + image = tile_map.sprite_lists["img"][0] + + assert image.width == 1024 + assert image.height == 600 + assert image.left == 0 + assert image.top == 1920 + + assert "img-offset" in tile_map.sprite_lists + assert len(tile_map.sprite_lists["img-offset"]) == 1 + image = tile_map.sprite_lists["img-offset"][0] + + assert image.width == 1024 + assert image.height == 600 + assert image.left == 1280 + assert image.top == 1408 + + +def test_image_layer_with_scaling(): + # Read in the tiled map + tile_map = arcade.load_tilemap(":fixtures:tilemaps/image_layer.json", 0.5) + + # --- Platforms --- + assert "img" in tile_map.sprite_lists + assert len(tile_map.sprite_lists["img"]) == 1 + image = tile_map.sprite_lists["img"][0] + + assert image.width == 512 + assert image.height == 300 + assert image.left == 0 + assert image.top == 960 + + assert "img-offset" in tile_map.sprite_lists + assert len(tile_map.sprite_lists["img-offset"]) == 1 + image = tile_map.sprite_lists["img-offset"][0] + + assert image.width == 512 + assert image.height == 300 + assert image.left == 640 + assert image.top == 704 \ No newline at end of file