diff --git a/src/app/script/app_object.cpp b/src/app/script/app_object.cpp index 8c7b29663..360810002 100644 --- a/src/app/script/app_object.cpp +++ b/src/app/script/app_object.cpp @@ -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); diff --git a/src/app/script/engine.h b/src/app/script/engine.h index 6fb5dc792..0c8717643 100644 --- a/src/app/script/engine.h +++ b/src/app/script/engine.h @@ -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); diff --git a/src/app/script/sprite_class.cpp b/src/app/script/sprite_class.cpp index b0897d799..070a7b5fb 100644 --- a/src/app/script/sprite_class.cpp +++ b/src/app/script/sprite_class.cpp @@ -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);