[lua] Make Sprite:newTileset(Rectangle) work (fix #4117)

This commit is contained in:
David Capello 2023-10-30 13:40:12 -03:00
parent 43079b226d
commit bb60da8c60
2 changed files with 15 additions and 3 deletions

View File

@ -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<gfx::Rect>(L, 2)) {
gfx::Rect rect = convert_args_into_rect(L, 2);
grid = Grid(rect.size());
grid.origin(rect.origin());

View File

@ -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)