]> git.tdb.fi Git - libs/game.git/blobdiff - examples/bassteroids/source/gamecontroller.cpp
Make asteroids take damage when shot and eventually be destroyed
[libs/game.git] / examples / bassteroids / source / gamecontroller.cpp
index b5640330310ad111f01f70d4b7aafba260a305fe..97701e379fa603d9bc6ad265351bc0ffa48f845f 100644 (file)
@@ -9,6 +9,7 @@ using namespace Msp;
 GameController::GameController(Game::Stage &s):
        System(s),
        asteroid_setup{ .physical={ .body={ .mass=200, .moment_of_inertia=2160 }, .collider={ .type=ColliderType::CIRCLE, .radius=3.0f } },
+               .hittable={ .damaging=true, .hits={ .max_hits=3, .vulnerable_to=1 }, .damage={ .amount=10, .type=1 }},
                .mesh={ .object_name="Asteroid 1.object" }}
 { }
 
@@ -37,3 +38,9 @@ void GameController::tick(Time::TimeDelta)
                throw logic_error("Unimplemented state");
        }
 }
+
+void GameController::deferred_tick()
+{
+       System::deferred_tick();
+       erase_if(asteroids, [](Game::Handle<Asteroid> a){ return !a->get_hitpoints()->is_alive(); });
+}