1 #include "gamecontroller.h"
3 #include <msp/game/root.h>
4 #include <msp/game/transform.h>
9 GameController::GameController(Game::Stage &s):
11 asteroid_setup(stage.get_resources().get<AsteroidSetup>("asteroid1.roid.setup"))
14 void GameController::tick(Time::TimeDelta)
20 uniform_real_distribution<float> sdist(-1, 1);
21 uniform_real_distribution<float> udist(0, 1);
22 for(unsigned i=0; i<level+2; ++i)
24 asteroids.emplace_back(stage.get_root(), asteroid_setup);
25 asteroids.back()->get_transform()->set_position({ sdist(rng)*32, sdist(rng)*18, 0.0f });
26 Geometry::Angle<float> angle = Geometry::Angle<float>::from_turns(udist(rng));
27 float speed = udist(rng)*7;
28 asteroids.back()->get_body()->set_velocity({ cos(angle)*speed, sin(angle)*speed });
36 throw logic_error("Unimplemented state");
40 void GameController::deferred_tick()
42 System::deferred_tick();
43 erase_if(asteroids, [](Game::Handle<Asteroid> a){ return !a->get_hitpoints()->is_alive(); });