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; }
/** * @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; }