Ejemplo n.º 1
0
Archivo: event.c Proyecto: nocrew/ostis
int event_main()
{
  SDL_Event ev;
  
  if(!SDL_PollEvent(&ev)) {
    return EVENT_NONE;
  }

  if(ev.window.windowID == screen_window_id) {
    if(!debugger || (debugger && !debug_update_win)) {
      return event_parse(ev);
    } else {
      return EVENT_NONE;
    }
  } else if(debugger && ev.window.windowID == debug_window_id) {
    return debug_event_parse(ev);
  } else {
    switch(ev.type) {
    case SDL_JOYAXISMOTION:
    case SDL_JOYBUTTONDOWN:
    case SDL_JOYBUTTONUP:
      return event_parse(ev);
    case SDL_QUIT:
      if(debugger && !debug_update_win) {
        return EVENT_DEBUG;
      } else {
        SDL_Quit();
        exit(0);
      }
    }
  }

  return EVENT_NONE;
}
Ejemplo n.º 2
0
Archivo: event.c Proyecto: Arakash/naev
/**
 * @brief Loads all the events.
 *
 *    @return 0 on success.
 */
int events_load (void)
{
   int m;
   uint32_t bufsize;
   char *buf;
   xmlNodePtr node;
   xmlDocPtr doc;
 
   /* Load the data. */
   buf = ndata_read( EVENT_DATA, &bufsize );
   if (buf == NULL) {
      WARN("Unable to read data from '%s'", EVENT_DATA);
      return -1;
   }

   /* Load the document. */
   doc = xmlParseMemory( buf, bufsize );
   if (doc == NULL) {
      WARN("Unable to parse document '%s'", EVENT_DATA);
      return -1;
   }

   /* Get the root node. */
   node = doc->xmlChildrenNode;
   if (!xml_isNode(node,XML_EVENT_ID)) {
      WARN("Malformed '"EVENT_DATA"' file: missing root element '"XML_EVENT_ID"'");
      return -1;
   }

   /* Get the first node. */
   node = node->xmlChildrenNode; /* first mission node */
   if (node == NULL) {
      WARN("Malformed '"EVENT_DATA"' file: does not contain elements");
      return -1;
   }

   m = 0;
   do {
      if (xml_isNode(node,XML_EVENT_TAG)) {

         /* See if must grow. */
         event_ndata++;
         if (event_ndata > m) {
            m += EVENT_CHUNK;
            event_data = realloc(event_data, sizeof(EventData_t)*m);
         }

         /* Load it. */
         event_parse( &event_data[event_ndata-1], node );
      }
   } while (xml_nextNode(node));

   /* Shrink to minimum. */
   event_data = realloc(event_data, sizeof(EventData_t)*event_ndata);

   /* Clean up. */                                                        
   xmlFreeDoc(doc);
   free(buf);

   DEBUG("Loaded %d Event%s", event_ndata, (event_ndata==1) ? "" : "s" );

   return 0;
}