--- /dev/null
+#ifndef GAMECONTROLLER_H_
+#define GAMECONTROLLER_H_
+
+#include <random>
+#include <msp/game/system.h>
+#include "asteroid.h"
+
+class GameController: public Msp::Game::System
+{
+private:
+ enum State
+ {
+ LEVEL_START,
+ PLAYING
+ };
+
+ std::minstd_rand rng;
+ AsteroidSetup asteroid_setup;
+ State state = LEVEL_START;
+ unsigned level = 1;
+ std::vector<Msp::Game::Owned<Asteroid>> asteroids;
+
+public:
+ GameController(Msp::Game::Stage &);
+
+ void tick(Msp::Time::TimeDelta) override;
+};
+
+#endif