/** * @brief Initializes the CLI environment. */ int cli_init (void) { /* Already loaded. */ if (cli_state != NULL) return 0; /* Set the height. */ cli_height = CLI_HEIGHT; /* Create the state. */ cli_state = nlua_newState(); nlua_loadStandard( cli_state, 0 ); nlua_loadCol( cli_state, 0 ); nlua_loadTex( cli_state, 0 ); nlua_loadBackground( cli_state, 0 ); nlua_loadCamera( cli_state, 0 ); nlua_loadTk( cli_state ); nlua_loadCLI( cli_state ); nlua_loadMusic( cli_state, 0 ); luaL_register( cli_state, "_G", cli_methods ); lua_settop( cli_state, 0 ); /* Mark as console. */ lua_pushboolean( cli_state, 1 ); lua_setglobal( cli_state, "__cli" ); /* Set the font. */ cli_font = malloc( sizeof(glFont) ); gl_fontInit( cli_font, "dat/mono.ttf", conf.font_size_console ); /* Clear the buffer. */ memset( cli_buffer, 0, sizeof(cli_buffer) ); return 0; }
/** * @brief Loads the graphics library. * * @param L State to load graphics library into. * @return 0 on success. */ int nlua_loadGFX( lua_State *L, int readonly ) { if (readonly) /* Nothing is read only */ return 0; /* Register the values */ luaL_register(L, "gfx", gfxL_methods); /* We also load the texture and colour modules as dependencies. */ nlua_loadTex( L, readonly ); nlua_loadCol( L, readonly ); return 0; }
/** * @brief Registers all the mission libraries. * * @param L Lua state. * @return 0 on success. */ int misn_loadLibs( lua_State *L ) { nlua_loadStandard(L,0); nlua_loadMisn(L); nlua_loadTk(L); nlua_loadHook(L); nlua_loadMusic(L,0); nlua_loadTex(L,0); nlua_loadBackground(L,0); nlua_loadCamera(L,0); if (player_isTut()) nlua_loadTut(L); return 0; }
/** * @brief Initializes the CLI environment. */ int cli_init (void) { /* Already loaded. */ if (cli_state != NULL) return 0; /* Calculate size. */ cli_width = SCREEN_W - 100; cli_height = SCREEN_H - 100; /* Create the state. */ cli_state = nlua_newState(); nlua_loadStandard( cli_state, 0 ); nlua_loadCol( cli_state, 0 ); nlua_loadTex( cli_state, 0 ); nlua_loadBackground( cli_state, 0 ); nlua_loadCamera( cli_state, 0 ); nlua_loadTk( cli_state ); nlua_loadCLI( cli_state ); nlua_loadMusic( cli_state, 0 ); luaL_register( cli_state, "_G", cli_methods ); lua_settop( cli_state, 0 ); /* Mark as console. */ lua_pushboolean( cli_state, 1 ); lua_setglobal( cli_state, "__cli" ); /* Set the font. */ cli_font = malloc( sizeof(glFont) ); gl_fontInit( cli_font, "dat/mono.ttf", CONSOLE_FONT_SIZE ); /* Clear the buffer. */ memset( cli_buffer, 0, sizeof(cli_buffer) ); /* Put a friendly message at first. */ cli_addMessage( "Welcome to the Lua console!" ); cli_addMessage( "" ); return 0; }
/** * @brief Creates a background Lua state from a script. */ static lua_State* background_create( const char *name ) { uint32_t bufsize; char path[PATH_MAX]; char *buf; lua_State *L; /* Create file name. */ snprintf( path, sizeof(path), "dat/bkg/%s.lua", name ); /* Create the Lua state. */ L = nlua_newState(); nlua_loadStandard(L,1); nlua_loadTex(L,0); nlua_loadCol(L,0); nlua_loadBackground(L,0); /* Open file. */ buf = ndata_read( path, &bufsize ); if (buf == NULL) { WARN("Default background script '%s' not found.", path); lua_close(L); return NULL; } /* Load file. */ if (luaL_dobuffer(L, buf, bufsize, path) != 0) { WARN("Error loading background file: %s\n" "%s\n" "Most likely Lua file has improper syntax, please check", path, lua_tostring(L,-1)); free(buf); lua_close(L); return NULL; } free(buf); return L; }
/** * @brief Creates an event. * * @param data Data to base event off of. * @param id ID to use (0 to generate). * @return 0 on success. */ static int event_create( int dataid, unsigned int *id ) { lua_State *L; uint32_t bufsize; char *buf; Event_t *ev; EventData_t *data; /* Create the event. */ event_nactive++; if (event_nactive > event_mactive) { event_mactive += EVENT_CHUNK; event_active = realloc( event_active, sizeof(Event_t) * event_mactive ); } ev = &event_active[ event_nactive-1 ]; memset( ev, 0, sizeof(Event_t) ); if ((id != NULL) && (*id != 0)) ev->id = *id; else ev->id = event_genID(); /* Add the data. */ ev->data = dataid; data = &event_data[dataid]; /* Open the new state. */ ev->L = nlua_newState(); L = ev->L; nlua_loadStandard(L,0); nlua_loadEvt(L); nlua_loadHook(L); nlua_loadTk(L); nlua_loadBackground(L,1); nlua_loadCamera(L,0); nlua_loadTex(L,0); nlua_loadMusic(L,0); if (player_isTut()) nlua_loadTut(L); /* Load file. */ buf = ndata_read( data->lua, &bufsize ); if (buf == NULL) { WARN("Event '%s' Lua script not found.", data->lua ); return -1; } if (luaL_dobuffer(L, buf, bufsize, data->lua) != 0) { WARN("Error loading event file: %s\n" "%s\n" "Most likely Lua file has improper syntax, please check", data->lua, lua_tostring(L,-1)); free(buf); return -1; } free(buf); /* Run Lua. */ if ((id==NULL) || (*id==0)) event_runLua( ev, "create" ); if (id != NULL) *id = ev->id; return 0; }