--- /dev/null
+#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