summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--API.md2
-rw-r--r--doc_parser.lua2
-rw-r--r--examples/platformer/main.lua6
-rw-r--r--src/lua_core.c24
4 files changed, 22 insertions, 12 deletions
diff --git a/API.md b/API.md
index 958e2d3..0312aae 100644
--- a/API.md
+++ b/API.md
@@ -25,7 +25,7 @@ You can still use RL_BeginDrawing() and RL_EndDrawing() manually from anywhere.
---
-> function log( message )
+> function log( logLevel, message )
This function can be used for custom log message handling.
diff --git a/doc_parser.lua b/doc_parser.lua
index 41bf5cd..5a58cee 100644
--- a/doc_parser.lua
+++ b/doc_parser.lua
@@ -32,7 +32,7 @@ apiFile:write( "\n> function draw()\n\
This function will be called every frame after process and it should have all rendering related functions.\
Note: Engine will call Raylib functions 'BeginDrawing()' before this function call and 'EndDrawing()' after it.\
You can still use RL_BeginDrawing() and RL_EndDrawing() manually from anywhere.\n\n---\n" )
-apiFile:write( "\n> function log( message )\n\
+apiFile:write( "\n> function log( logLevel, message )\n\
This function can be used for custom log message handling.\n\n---\n" )
-- Globals.
diff --git a/examples/platformer/main.lua b/examples/platformer/main.lua
index d1160e1..2c954be 100644
--- a/examples/platformer/main.lua
+++ b/examples/platformer/main.lua
@@ -80,6 +80,12 @@ local function createMap()
tilemap.tiles[1][8] = 6
end
+function log( logLevel, message )
+ if logLevel == LOG_WARNING then
+ error( "Terminated because of warning" )
+ end
+end
+
function init()
local monitorPos = Vec2:new( RL_GetMonitorPosition( monitor ) )
local monitorSize = Vec2:new( RL_GetMonitorSize( monitor ) )
diff --git a/src/lua_core.c b/src/lua_core.c
index e2b1631..f17872e 100644
--- a/src/lua_core.c
+++ b/src/lua_core.c
@@ -476,13 +476,13 @@ void defineGlobals() {
}
// Custom logging funtion
-void LogCustom( int msgType, const char *text, va_list args ) {
+void LogCustom( int logLevel, const char *text, va_list args ) {
char string[ STRING_LEN ] = {'\0'};
char msg[ STRING_LEN ] = {'\0'};
vsprintf( string, text, args );
- switch ( msgType ) {
+ switch ( logLevel ) {
case LOG_ALL: sprintf( msg, "ALL: %s", string ); break;
case LOG_TRACE: sprintf( msg, "TRACE: %s", string ); break;
case LOG_DEBUG: sprintf( msg, "DEBUG: %s", string ); break;
@@ -499,14 +499,17 @@ void LogCustom( int msgType, const char *text, va_list args ) {
lua_pushcfunction( L, luaTraceback );
int tracebackidx = lua_gettop( L );
+
lua_getglobal( L, "log" );
if ( lua_isfunction( L, -1 ) ) {
+ lua_pushinteger( L, logLevel );
lua_pushstring( L, msg );
- if ( lua_pcall( L, 1, 0, tracebackidx ) != 0 ) {
- TraceLog( LOG_WARNING, "Lua error: %s", lua_tostring( L, -1 ) );
+ if ( lua_pcall( L, 2, 0, tracebackidx ) != 0 ) {
+ TraceLog( LOG_ERROR, "Lua error: %s", lua_tostring( L, -1 ) );
state->run = false;
+ lua_pop( L, -1 );
return;
}
}
@@ -575,7 +578,7 @@ bool luaCallMain() {
/* Check errors in main.lua */
if ( lua_tostring( state->luaState, -1 ) ) {
- TraceLog( LOG_WARNING, "Lua error: %s\n", lua_tostring( state->luaState, -1 ) );
+ TraceLog( LOG_ERROR, "Lua error: %s\n", lua_tostring( state->luaState, -1 ) );
}
lua_pushcfunction( L, luaTraceback );
@@ -585,12 +588,12 @@ bool luaCallMain() {
if ( lua_isfunction( L, -1 ) ) {
if ( lua_pcall( L, 0, 0, tracebackidx ) != 0 ) {
- TraceLog( LOG_WARNING, "Lua error: %s", lua_tostring( L, -1 ) );
+ TraceLog( LOG_ERROR, "Lua error: %s", lua_tostring( L, -1 ) );
return false;
}
}
else {
- TraceLog( LOG_WARNING, "%s", "No Lua main found!" );
+ TraceLog( LOG_ERROR, "%s", "No Lua main found!" );
return false;
}
/* Apply custom callback here. */
@@ -611,8 +614,9 @@ void luaCallProcess() {
lua_pushnumber( L, GetFrameTime() );
if ( lua_pcall( L, 1, 0, tracebackidx ) != 0 ) {
- TraceLog( LOG_WARNING, "Lua error: %s", lua_tostring( L, -1 ) );
+ TraceLog( LOG_ERROR, "Lua error: %s", lua_tostring( L, -1 ) );
state->run = false;
+ lua_pop( L, -1 );
return;
}
}
@@ -635,8 +639,8 @@ void luaCallDraw() {
BeginDrawing();
if ( lua_pcall( L, 0, 0, tracebackidx ) != 0 ) {
- TraceLog( LOG_WARNING, "Lua error: %s", lua_tostring( L, -1 ) );
- // state->run = false;
+ TraceLog( LOG_ERROR, "Lua error: %s", lua_tostring( L, -1 ) );
+ state->run = false;
return;
}