diff options
Diffstat (limited to 'src/lua/modules')
-rw-r--r-- | src/lua/modules/audio/je_lua_audio.cpp | 14 | ||||
-rw-r--r-- | src/lua/modules/graphics/je_lua_graphics.cpp | 31 |
2 files changed, 32 insertions, 13 deletions
diff --git a/src/lua/modules/audio/je_lua_audio.cpp b/src/lua/modules/audio/je_lua_audio.cpp index c021ef1..8ffa794 100644 --- a/src/lua/modules/audio/je_lua_audio.cpp +++ b/src/lua/modules/audio/je_lua_audio.cpp @@ -14,12 +14,24 @@ namespace JinEngine typedef SDLAudio Audio; typedef SDLSource Source; + struct + { + bool initialized = false; + } context; + LUA_IMPLEMENT int l_init(lua_State* L) { + if (context.initialized) + { + // Already initialized. + luax_pushboolean(L, true); + return 1; + } Audio::Setting setting; setting.samplerate = 44100; setting.samples = 44100; - if (!Audio::get()->init(&setting)) + context.initialized = Audio::get()->init(&setting); + if (!context.initialized) { luax_error(L, "could not init audio"); luax_pushboolean(L, false); diff --git a/src/lua/modules/graphics/je_lua_graphics.cpp b/src/lua/modules/graphics/je_lua_graphics.cpp index 83ef40b..d59a67d 100644 --- a/src/lua/modules/graphics/je_lua_graphics.cpp +++ b/src/lua/modules/graphics/je_lua_graphics.cpp @@ -24,10 +24,17 @@ namespace JinEngine Color curClearColor; Font* curFont = nullptr; Font* defaultFont = nullptr; + bool initialized = false; } context; LUA_IMPLEMENT int l_init(lua_State* L) { + if (context.initialized) + { + luax_pushboolean(L, true); + return 1; + } + Window* wnd = Window::get(); Window::Setting setting; setting.width = luax_getfieldinteger(L, 1, "width"); @@ -36,21 +43,21 @@ namespace JinEngine setting.vsync = luax_getfieldbool(L, 1, "vsync"); setting.fullscreen = luax_getfieldbool(L, 1, "fullscreen"); setting.resizable = luax_getfieldbool(L, 1, "resizable"); - if (!wnd->init(&setting)) + context.initialized = wnd->init(&setting); + if (!context.initialized) { - luax_pushboolean(L, false); + luax_pushboolean(L, context.initialized); return 1; } - { - /* load default font */ - Bitmap* bitmap = Bitmap::createBitmap(default_font_bitmap, sizeof(default_font_bitmap)); - TextureFont* tf = TextureFont::createTextureFont(bitmap, Text(Encode::UTF8, default_charset), default_font_split, bitmap->getHeight()); - context.defaultFont = tf; - delete bitmap; - } - context.curFont = context.defaultFont; - - luax_pushboolean(L, true); + + /* load default font */ + Bitmap* bitmap = Bitmap::createBitmap(default_font_bitmap, sizeof(default_font_bitmap)); + TextureFont* tf = TextureFont::createTextureFont(bitmap, Text(Encode::UTF8, default_charset), default_font_split, bitmap->getHeight()); + delete bitmap; + context.defaultFont = tf; + context.curFont = tf; + + luax_pushboolean(L, context.initialized); return 1; } |