From 456cb8617895b5ed336b0db80ac5402bab8365f0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=A9mi=20Vanicat?= Date: Wed, 12 Jul 2023 08:47:29 +0200 Subject: [PATCH 1/4] put texture in the path_or_texture argument The sprite class has a "path_or_texture" named argument, but the tiled parser used "texture" Fix #1832 --- arcade/tilemap/tilemap.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/arcade/tilemap/tilemap.py b/arcade/tilemap/tilemap.py index d4762a243..aa56e89c5 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, } From 3b8338518f7e75b7bd0499fd228bed67245ca830 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=A9mi=20Vanicat?= Date: Wed, 12 Jul 2023 08:49:31 +0200 Subject: [PATCH 2/4] Test to check correct loading of a tiled image layer --- tests/fixtures/tilemaps/image_layer.json | 68 ++++++++++++++++++++++++ tests/unit/tilemap/test_img_layer.py | 11 ++++ 2 files changed, 79 insertions(+) create mode 100644 tests/fixtures/tilemaps/image_layer.json create mode 100644 tests/unit/tilemap/test_img_layer.py diff --git a/tests/fixtures/tilemaps/image_layer.json b/tests/fixtures/tilemaps/image_layer.json new file mode 100644 index 000000000..f52602c04 --- /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 +} \ No newline at end of file diff --git a/tests/unit/tilemap/test_img_layer.py b/tests/unit/tilemap/test_img_layer.py new file mode 100644 index 000000000..9a4988c2f --- /dev/null +++ b/tests/unit/tilemap/test_img_layer.py @@ -0,0 +1,11 @@ +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 + From 4187ce5af273bd5f00ab1d146f777d6aa02402d5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=A9mi=20Vanicat?= Date: Wed, 12 Jul 2023 08:52:44 +0200 Subject: [PATCH 3/4] Correctly place sprite from tiled image layer Fix #1763 --- arcade/tilemap/tilemap.py | 4 ++- tests/unit/tilemap/test_img_layer.py | 39 ++++++++++++++++++++++++++++ 2 files changed, 42 insertions(+), 1 deletion(-) diff --git a/arcade/tilemap/tilemap.py b/arcade/tilemap/tilemap.py index aa56e89c5..dfa84ffd7 100644 --- a/arcade/tilemap/tilemap.py +++ b/arcade/tilemap/tilemap.py @@ -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/unit/tilemap/test_img_layer.py b/tests/unit/tilemap/test_img_layer.py index 9a4988c2f..7c6896ee5 100644 --- a/tests/unit/tilemap/test_img_layer.py +++ b/tests/unit/tilemap/test_img_layer.py @@ -9,3 +9,42 @@ def test_image_layer(): 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 From c52a875ddd25545436e4266c71ada489b03b9ac6 Mon Sep 17 00:00:00 2001 From: Einar Forselv Date: Mon, 11 Sep 2023 19:33:11 +0200 Subject: [PATCH 4/4] Update image_layer.json --- tests/fixtures/tilemaps/image_layer.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/fixtures/tilemaps/image_layer.json b/tests/fixtures/tilemaps/image_layer.json index f52602c04..c295c6b31 100644 --- a/tests/fixtures/tilemaps/image_layer.json +++ b/tests/fixtures/tilemaps/image_layer.json @@ -65,4 +65,4 @@ "type":"map", "version":"1.10", "width":20 -} \ No newline at end of file +}