#include #include #include #include #include #include "main.h" #include "object_base.h" #include "global.h" #include "library.h" #include "build/objects.h" #include "build/sprites.h" using namespace std; shared_ptr makeobjectbyname(int x,int y,const char *name){ #define X(objname) if(strcmp(name,#objname)==0)return make_shared(x,y); OBJECT_CLASSES_XLIST #undef X return NULL; //no object with that name } Global global; Fl_Window_draw *window; Fl_Window_draw::Fl_Window_draw(int w,int h,const char *title=0):Fl_Window(w,h,title){} Fl_Window_draw::Fl_Window_draw(int x,int y,int w,int h,const char *label=0L):Fl_Window(x,y,w,h,label){} void Fl_Window_draw::draw(void){ fl_rectf(0,0,w(),h(),FL_WHITE); fl_color(FL_BLACK); int i; for(i=0;i<(int)global.objects.size();i++){ global.objects[i]->draw(); } } void stepcallback(void*){ int i; for(i=0;i<(int)global.objects.size();i++){ global.objects[i]->step(); } window->redraw(); Fl::repeat_timeout(1.0/30,stepcallback); } int main(int argc,char **argv){ struct timeval tv; gettimeofday(&tv,NULL); srand(tv.tv_sec*1000000+tv.tv_usec); window=new Fl_Window_draw(640,480,GAME_NAME); global.objects.push_back(makeobjectbyname(0,0,"obj_control")); global.objects[0]->create(); window->end(); Fl::visual(FL_RGB); window->show(argc,argv); Fl::add_timeout(1.0/30,stepcallback); int ret=Fl::run(); for(shared_ptr p : global.objects){ p->destroy(); } return ret; }