diff --git a/assets/scene/initial.lua b/assets/scene/initial.lua index b1a6f4c..3ea5f5b 100644 --- a/assets/scene/initial.lua +++ b/assets/scene/initial.lua @@ -7,6 +7,8 @@ module('screen') module('time') camera = cameraCreate(CAMERA_PROJECTION_TYPE_ORTHOGRAPHIC) +text = "Hello World" +screenSetBackground(colorBlack()) function sceneDispose() end @@ -14,7 +16,6 @@ end function sceneUpdate() end -text = "Hello World" function sceneRender() cameraPushMatrix(camera) diff --git a/src/display/display.c b/src/display/display.c index 1fb197e..84e78f5 100644 --- a/src/display/display.c +++ b/src/display/display.c @@ -120,7 +120,7 @@ errorret_t displayUpdate(void) { screenBind(); frameBufferClear( FRAMEBUFFER_CLEAR_COLOR | FRAMEBUFFER_CLEAR_DEPTH, - COLOR_CORNFLOWER_BLUE + SCREEN.background ); errorChain(sceneRender()); diff --git a/src/display/screen.c b/src/display/screen.c index 3b72c9e..8e154e5 100644 --- a/src/display/screen.c +++ b/src/display/screen.c @@ -15,6 +15,7 @@ screen_t SCREEN; void screenInit() { memoryZero(&SCREEN, sizeof(screen_t)); + SCREEN.background = COLOR_CORNFLOWER_BLUE; #if DISPLAY_SIZE_DYNAMIC == 1 SCREEN.mode = SCREEN_MODE_FIXED_VIEWPORT_HEIGHT; diff --git a/src/display/screen.h b/src/display/screen.h index b9f5f8b..5c7860a 100644 --- a/src/display/screen.h +++ b/src/display/screen.h @@ -10,6 +10,7 @@ #include "display/framebuffer.h" #include "display/camera/camera.h" #include "display/mesh/quad.h" +#include "display/color.h" #if DISPLAY_SIZE_DYNAMIC == 1 #ifndef DISPLAY_SCREEN_HEIGHT_DEFAULT @@ -44,6 +45,7 @@ typedef struct { int32_t width; int32_t height; float_t aspect; + color_t background; #if DISPLAY_SIZE_DYNAMIC == 1 framebuffer_t framebuffer; diff --git a/src/script/module/display/modulescreen.c b/src/script/module/display/modulescreen.c index 6bda4c5..fcd2e07 100644 --- a/src/script/module/display/modulescreen.c +++ b/src/script/module/display/modulescreen.c @@ -14,6 +14,7 @@ void moduleScreen(scriptcontext_t *context) { lua_register(context->luaState, "screenGetWidth", moduleScreenGetWidth); lua_register(context->luaState, "screenGetHeight", moduleScreenGetHeight); + lua_register(context->luaState, "screenSetBackground", moduleScreenSetBackground); } int moduleScreenGetWidth(lua_State *L) { @@ -26,4 +27,17 @@ int moduleScreenGetHeight(lua_State *L) { assertNotNull(L, "Lua state is null"); lua_pushinteger(L, SCREEN.height); return 1; +} + +int moduleScreenSetBackground(lua_State *L) { + assertNotNull(L, "Lua state is null"); + + if(!lua_isuserdata(L, 1)) { + luaL_error(L, "Screen background color must be a color struct"); + return 0; + } + + color_t *color = (color_t*)luaL_checkudata(L, 1, "color_mt"); + SCREEN.background = *color; + return 0; } \ No newline at end of file diff --git a/src/script/module/display/modulescreen.h b/src/script/module/display/modulescreen.h index 3375679..baa7e66 100644 --- a/src/script/module/display/modulescreen.h +++ b/src/script/module/display/modulescreen.h @@ -29,4 +29,12 @@ int moduleScreenGetWidth(lua_State *L); * @param L The Lua state. * @return Count of return values. */ -int moduleScreenGetHeight(lua_State *L); \ No newline at end of file +int moduleScreenGetHeight(lua_State *L); + +/** + * Sets the screen background color. + * + * @param L The Lua state. + * @return Count of return values. + */ +int moduleScreenSetBackground(lua_State *L); \ No newline at end of file