aboutsummaryrefslogtreecommitdiff
path: root/src/core/bullet.hpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/core/bullet.hpp')
-rw-r--r--src/core/bullet.hpp49
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