int main() { lua_State *lua = luaL_newstate(); luaL_openlibs(lua); motor_Config config; l_motor_register(lua); l_audio_register(lua); l_graphics_register(lua); l_image_register(lua); l_keyboard_register(lua); l_mouse_register(lua); l_filesystem_register(lua); l_timer_register(lua); l_math_register(lua); l_event_register(lua); l_joystick_register(lua); chdir("/love"); l_boot(lua, &config); if(config.identity) { filesystem_setIdentity(config.identity, false); } image_init(); joystick_init(); keyboard_init(); graphics_init(config.window.width, config.window.height); audio_init(); math_init(); if(luaL_dofile(lua, "main.lua")) { printf("Error: %s\n", lua_tostring(lua, -1)); } lua_pushcfunction(lua, errorhandler); lua_getglobal(lua, "love"); lua_pushstring(lua, "load"); lua_rawget(lua, -2); /*if(lua_pcall(lua, 0, 0, 1)) { printf("Error in love.load: %s\n", lua_tostring(lua, -1)); } */ pcall(lua, 0); lua_pop(lua, 1); lua_pushcfunction(lua, errorhandler); mainLoopData.luaState = lua; mainLoopData.errhand = luaL_ref(lua, LUA_REGISTRYINDEX); timer_init(); #ifdef EMSCRIPTEN emscripten_set_main_loop_arg(main_loop, &mainLoopData, 0, 1); #else for(;;) { main_loop(&mainLoopData); } #endif }
int main(int argc, char* argv[]) { lua_State *lua = luaL_newstate(); luaL_openlibs(lua); love_Config config; l_love_register(lua); l_audio_register(lua); l_event_register(lua); l_graphics_register(lua); l_image_register(lua); l_keyboard_register(lua); l_mouse_register(lua); l_filesystem_register(lua); l_timer_register(lua); l_math_register(lua); l_system_register(lua); l_physics_register(lua); l_boot(lua, &config); keyboard_init(); graphics_init(config.window.width, config.window.height); audio_init(); if(luaL_dofile(lua, "main.lua")){ printf("Error: %s\n", lua_tostring(lua, -1)); l_no_game(lua,&config); } love_Version const * version = love_getVersion(); printf("%s %s %i %i %i \n", "Love code name: ",version->codename,version->major,version->minor,version->revision); lua_pushcfunction(lua, lua_errorhandler); lua_getglobal(lua, "love"); lua_pushstring(lua, "load"); lua_rawget(lua, -2); if(lua_pcall(lua, 0, 0, 1)) { printf("Error in love.load: %s\n", lua_tostring(lua, -1)); } lua_pop(lua, 1); lua_pushcfunction(lua, lua_errorhandler); MainLoopData mainLoopData = { .luaState = lua, .errhand = luaL_ref(lua, LUA_REGISTRYINDEX) }; timer_init(); #ifdef EMSCRIPTEN //TODO find a way to quit(love.event.quit) love on web? emscripten_set_main_loop_arg(main_loop, &mainLoopData, 0, 1); #else while(l_event_running()) { main_loop(&mainLoopData); } if(!l_event_running()) quit_function(lua); #endif audio_close (); lua_close(lua); return 0; }