aboutsummaryrefslogtreecommitdiff
path: root/src/lua/modules
diff options
context:
space:
mode:
Diffstat (limited to 'src/lua/modules')
-rw-r--r--src/lua/modules/audio/je_lua_audio.cpp14
-rw-r--r--src/lua/modules/graphics/je_lua_graphics.cpp31
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;
}