diff options
Diffstat (limited to 'src/core/bullet.hpp')
-rw-r--r-- | src/core/bullet.hpp | 49 |
1 files changed, 49 insertions, 0 deletions
diff --git a/src/core/bullet.hpp b/src/core/bullet.hpp new file mode 100644 index 0000000..5f4fe2f --- /dev/null +++ b/src/core/bullet.hpp @@ -0,0 +1,49 @@ +#ifndef BULLET_H +#define BULLET_H +#include "smmath.hpp" +#include "smentity.hpp" +#include "coreshared.hpp" +class bulletBase +{ +public: + smvec2d pos,vel,acc; + float velim; + //velim: velocity scalar limit. + float collrange,scollrange,renderscale; + //collision range and semi-collision range. Replacing "collable" and "scollable". + bool extborder,invincible; + //extborder: true=not removed if out of screen. + //invincible: true=not removed if collided with player or in range of CLR. + bool exist,addblend; + int attrd[8]; + float attrf[8]; + TColors basecolor; + virtual void init(...); + virtual void update(); + virtual void render(); + virtual ~bulletBase(); +}; +class bulletBonus:public bulletBase +{ + void update()override; +}; +class bulletManager +{ +private: + bulletBase* bullets[10240]; + int alloced,used; + smEntity2D* bulent2d[COLOR_COUNT]; + smEntity3D* bulent3d[COLOR_COUNT]; +public: + void init(); + void deinit(); + template<class T>int allocBullet(); + template<class T>int createBullet(); + void updateBullet(); + void renderBullet(); + bulletBase* getHandle(int id); + smEntity2D* getBulEntity2D(TColors col); + smEntity3D* getBulEntity3D(TColors col); +}; +extern bulletManager *bmInstance; +#endif |