Ejemplo n.º 1
0
//-------------------------------------------------------------------
// 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);
}
Ejemplo n.º 2
0
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);
    }
}