//------------------------------------------------------------------- // Play one frame of the DEMO GAME. void demo(void) { int dx, dy, fire; newwave(); enemystep(); s_update(); player[nowplayer].control(dx, dy, fire); weaponstep(nowplayer, dx * SHIPSPEED, dy * SHIPSPEED, fire); crash(nowplayer); if (gstate.frame < layerlength(1)) { gstate.frame++; movelayer(0, gstate.frame & 1); movelayer(1, 1); } else { movelayer(0, 0); movelayer(1, 0); } //Draw game to demo texture render.setTarget(&demoTexture); process_objects(); drawscreen(); postprocess_objects(); render.setTarget(NULL); }
bool pascal_dataset<Tdata>::process_xml(const std::string &xmlfile) { std::string image_filename, image_fullname, folder; int height = -1, width = -1, depth = -1; rect<int> *cropr = NULL; // get image's properties if (!pascal_xml::get_properties(imgroot, xmlfile, image_filename, image_fullname, folder, height, width, depth, objects, &cropr, false)) return false; // get ignored boxes if present if (!ignore_root.empty()) { std::string bname = ebl::basename(xmlfile.c_str()); std::string dname = ebl::dirname(image_filename.c_str()); std::string xml, filename, fullname, folder; int h = -1, w = -1, d = -1; xml << ignore_root << "/" << dname << "/" << bname; if (file_exists(xml)) { if (!pascal_xml::get_properties(imgroot, xml, filename, fullname, folder, h, w, d, objects, &cropr, true)) return false; // check that ignored properties matches original properties if (fullname.compare(image_fullname) || (height != h) || (width != w)) eblerror("mistmatch between orignal image (" << image_fullname << ", " << height << "x" << width << ") and ignored infos (" << fullname << ", " << h << "x" << w << ")"); } else // ignore file doesnt exist std::cerr << "warning: ignore xml not found: " << xml << std::endl; } // process objects process_objects(objects, height, width, image_fullname, image_filename, cropr); // delete all objects for (uint i = 0; i < objects.size(); ++i) delete objects[i]; objects.clear(); if (cropr) delete cropr; return true; }
// --------------------------------------------------------------------------- // // ----------- void bXMapTopoCheck::check_events(){ //_bTrace_("bXMapTopoCheck::check_events",true); bArray* arr=_gapp->eventMgr()->events(); bGenericEvent* evt; bGenericType* tp; bGenericGeoElement *mo,*o; ivertices *mvxs,*vxs; long i,j; int sign=GetSignature(this)/*,esign*/,cln='NtCl'; bArray objs(sizeof(bGenericGeoElement*)); for(i=1;i<=arr->count();i++){ arr->get(i,&evt); //_tm_("Event "+evt->eid()); // esign=evt->creator(); if( (evt->creator()==sign) || (evt->creator()==cln) || (evt->is_undo()) || (evt->is_redo()) ){ //_tm_("pass"); continue; } if(evt->kind()==kEventKindGeoElement){ if(!_prm.activated){ continue; } if(evt->action()==kEventActionModify){ for(j=1;j<=evt->elements()->count();j++){ evt->elements()->get(j,&mo); tp=_gapp->typesMgr()->get(mo->getType()); if(tp->kind()==kBaseKindPoint){ _types.get(mo->getType(),&tp); if(tp==NULL){ continue; } o=mo->get_ref(); o->getVertices(&vxs); mo->getVertices(&mvxs); if(!mvxs){ continue; } if(vxs->nv==mvxs->nv){ objs.add(&mo); } } } } } else if(evt->kind()==kEventKindTypeElement){ switch(evt->action()){ case kEventActionCreate: tp=NULL; for(j=1;j<=evt->elements()->count();j++){ _types.add(&tp); } break; case kEventActionDestroy: MMBeep(); break; } } } if(objs.count()>0){ process_objects(objs); } }