[lua] Add Sprite{ fromFile="...", oneFrame=true } to load just one frame

This commit is contained in:
David Capello 2020-07-28 17:41:01 -03:00
parent 11324c207d
commit 7a534b0a4e
3 changed files with 8 additions and 2 deletions

View File

@ -68,7 +68,8 @@ int load_sprite_from_file(lua_State* L, const char* filename,
Commands::instance()->byId(CommandId::OpenFile());
Params params;
params.set("filename", absFn.c_str());
if (param == LoadSpriteFromFileParam::OneFrameAsImage)
if (param == LoadSpriteFromFileParam::OneFrameAsSprite ||
param == LoadSpriteFromFileParam::OneFrameAsImage)
params.set("oneframe", "true");
ctx->executeCommand(openCommand, params);

View File

@ -167,6 +167,7 @@ namespace app {
// Used by App.open(), Sprite{ fromFile }, and Image{ fromFile }
enum class LoadSpriteFromFileParam { FullAniAsSprite,
OneFrameAsSprite,
OneFrameAsImage };
int load_sprite_from_file(lua_State* L, const char* filename,
const LoadSpriteFromFileParam param);

View File

@ -78,9 +78,13 @@ int Sprite_new(lua_State* L)
if (const char* fromFile = lua_tostring(L, -1)) {
std::string fn = fromFile;
lua_pop(L, 1);
bool oneFrame = (lua_is_key_true(L, -1, "oneFrame"));
return load_sprite_from_file(
L, fn.c_str(),
LoadSpriteFromFileParam::FullAniAsSprite);
(oneFrame ? LoadSpriteFromFileParam::OneFrameAsSprite:
LoadSpriteFromFileParam::FullAniAsSprite));
}
}
lua_pop(L, 1);