diff --git a/src/app/script/sprite_class.cpp b/src/app/script/sprite_class.cpp index 699b23aa6..580a67719 100644 --- a/src/app/script/sprite_class.cpp +++ b/src/app/script/sprite_class.cpp @@ -632,7 +632,8 @@ int Sprite_newTileset(lua_State* L) grid = *g; } // Convert Rectangle into a Grid - else if (lua_istable(L, 2)) { + else if (lua_istable(L, 2) || + may_get_obj(L, 2)) { gfx::Rect rect = convert_args_into_rect(L, 2); grid = Grid(rect.size()); grid.origin(rect.origin()); diff --git a/tests/scripts/tileset.lua b/tests/scripts/tileset.lua index dec9b0dcd..f75414326 100644 --- a/tests/scripts/tileset.lua +++ b/tests/scripts/tileset.lua @@ -89,7 +89,7 @@ do assert(#spr.tilesets == 1) -- Create a tileset passing a grid - local tileset2 = spr:newTileset(Grid{0, 0 ,32, 32}) + local tileset2 = spr:newTileset(Grid{0, 0, 32, 32}) tileset2.name = "Tileset 2" assert(#tileset2 == 1) assert(tileset2.grid.origin.x == 0) @@ -100,7 +100,7 @@ do assert(#spr.tilesets == 2) -- Create a tileset passing a table and a number of tiles - local tileset3 = spr:newTileset({0, 0 ,64, 64}, 5) + local tileset3 = spr:newTileset({0, 0, 64, 64}, 5) assert(#tileset3 == 5) assert(tileset3.grid.origin.x == 0) assert(tileset3.grid.origin.y == 0) @@ -124,6 +124,17 @@ do app.undo() assert(#spr.tilesets == 3) + -- Create a tileset with a rectangle + local tileset5 = spr:newTileset(Rectangle(0, 0, 32, 64), 4) + assert(#tileset5 == 4) + assert(tileset5.grid.origin.x == 0) + assert(tileset5.grid.origin.y == 0) + assert(tileset5.grid.tileSize.width == 32) + assert(tileset5.grid.tileSize.height == 64) + assert(#spr.tilesets == 4) + app.undo() + assert(#spr.tilesets == 3) + -- Delete tileset spr:deleteTileset(2) assert(#spr.tilesets == 2)