]> git.tdb.fi Git - libs/game.git/blobdiff - examples/bassteroids/source/damagedealer.h
Make asteroids take damage when shot and eventually be destroyed
[libs/game.git] / examples / bassteroids / source / damagedealer.h
diff --git a/examples/bassteroids/source/damagedealer.h b/examples/bassteroids/source/damagedealer.h
new file mode 100644 (file)
index 0000000..fe171de
--- /dev/null
@@ -0,0 +1,33 @@
+#ifndef DAMAGEDEALER_H_
+#define DAMAGEDEALER_H_
+
+#include <msp/game/eventobserver.h>
+#include <msp/game/handle.h>
+#include <msp/game/system.h>
+#include "events.h"
+
+class Collider;
+class Hittable;
+
+class DamageDealer: public Msp::Game::System
+{
+private:
+       struct DamagingCollision
+       {
+               Msp::Game::Handle<Hittable> entity1;
+               Msp::Game::Handle<Hittable> entity2;
+       };
+
+       Msp::Game::EventObserver observer;
+       std::vector<DamagingCollision> collisions;
+
+public:
+       DamageDealer(Msp::Game::Stage &);
+
+       void tick(Msp::Time::TimeDelta) override;
+
+private:
+       void collision(const Events::Collision &);
+};
+
+#endif