-struct BadGuyData
-{
- BadGuyKind kind;
- int x;
- int y;
- bool stay_on_platform;
-
- BadGuyData(BadGuy* pbadguy) : kind(pbadguy->kind), x((int)pbadguy->base.x), y((int)pbadguy->base.y), stay_on_platform(pbadguy->stay_on_platform) {};
- BadGuyData(BadGuyKind kind_, int x_, int y_, bool stay_on_platform_)
- : kind(kind_), x(x_), y(y_), stay_on_platform(stay_on_platform_) {}
-
- BadGuyData()
- : kind(BAD_SNOWBALL), x(0), y(0), stay_on_platform(false) {}
-};
-
-class BadGuyManager
-{
- private:
- BadGuyManager();
- ~BadGuyManager();
-
- std::vector<BadGuy*> badguys;
- static BadGuyManager* instance_ ;
-
- void load_badguys(std::string filename);
-
- public:
- static BadGuyManager* instance() { return instance_ ? instance_ : instance_ = new BadGuyManager(); }
- static void destroy_instance() { delete instance_; instance_ = 0; }
-
- BadGuy* get(unsigned int id) {
- if(id < badguys.size())
- {
- return badguys[id];
- }
- else
- {
- // Never return 0, but return the 0th tile instead so that
- // user code doesn't have to check for NULL pointers all over
- // the place
- return badguys[0];
- }
- }
-};