]> git.tdb.fi Git - libs/game.git/blobdiff - examples/bassteroids/source/playercontroller.cpp
Make asteroids take damage when shot and eventually be destroyed
[libs/game.git] / examples / bassteroids / source / playercontroller.cpp
index 066b5f24d002b01f5e68824d620753651ba7bf6a..46f9c1f85e30dfe710c96411a041c73455b22029 100644 (file)
@@ -12,6 +12,7 @@ PlayerController::PlayerController(Game::Stage &s):
                .mesh={ .object_name="Bass guitar.object" },
                .speed=12.0f, .turn_rate=4.71f },
        bullet_setup{ .physical={ .body={ .mass=0.05f, .moment_of_inertia=0.04f }, .collider={ .type=ColliderType::CIRCLE, .radius=0.2f }},
+               .hittable={ .damaging=true, .hits={ .max_hits=1 }, .damage={ .amount=1, .type=0 }},
                .mesh={ .object_name="Quaver.object" }}
 { }
 
@@ -55,6 +56,12 @@ void PlayerController::tick(Time::TimeDelta dt)
        controls->reset_edges();
 }
 
+void PlayerController::deferred_tick()
+{
+       System::deferred_tick();
+       erase_if(bullets, [](Game::Handle<Bullet> b){ return !b->get_hitpoints()->is_alive(); });
+}
+
 void PlayerController::fire()
 {
        Game::Handle<Game::Transform> player_tf = player_ship->get_transform();