コード例 #1
0
ファイル: nlua_misn.c プロジェクト: Elderman/naev
/**
 * @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;
}
コード例 #2
0
ファイル: event.c プロジェクト: Arakash/naev
/**
 * @brief Creates an event.
 *
 *    @param data Data to base event off of.
 */
static int event_create( int dataid )
{
   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) );
   ev->id = ++event_genid; /* Create unique ID. */

   /* 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);

   /* 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));
      return -1;
   }
   free(buf);

   /* Run Lua. */
   event_runLua( ev, "create" );

   return 0;
}
コード例 #3
0
ファイル: event.c プロジェクト: naev/naev
/**
 * @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 )
{
   size_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->env = nlua_newEnv(1);
   nlua_loadStandard(ev->env);
   nlua_loadEvt(ev->env);
   nlua_loadHook(ev->env);
   nlua_loadCamera(ev->env);
   nlua_loadTex(ev->env);
   nlua_loadBackground(ev->env);
   nlua_loadMusic(ev->env);
   nlua_loadTk(ev->env);
   if (player_isTut())
      nlua_loadTut(ev->env);

   /* Load file. */
   buf = ndata_read( data->lua, &bufsize );
   if (buf == NULL) {
      WARN(_("Event '%s' Lua script not found."), data->lua );
      return -1;
   }
   if (nlua_dobufenv(ev->env, 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(naevL,-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;
}