33#include < bave/platform.hpp>
44#include < spaced/game/player.hpp>
55#include < spaced/services/resources.hpp>
6+ #include < spaced/services/stats.hpp>
67#include < spaced/services/styles.hpp>
78
89// temp for testing
@@ -16,7 +17,8 @@ using bave::RoundedQuad;
1617using bave::Seconds;
1718using bave::Shader;
1819
19- Player::Player (Services const & services, std::unique_ptr<IController> controller) : m_services(&services), m_controller(std::move(controller)) {
20+ Player::Player (Services const & services, std::unique_ptr<IController> controller)
21+ : m_services(&services), m_stats(&services.get<Stats>()), m_controller(std::move(controller)) {
2022 auto const & layout = services.get <ILayout>();
2123 ship.transform .position .x = layout.get_player_x ();
2224 auto rounded_quad = RoundedQuad{};
@@ -68,7 +70,10 @@ void Player::tick(State const& state, Seconds const dt) {
6870 m_exhaust.tick (dt);
6971
7072 for (auto const & powerup : state.powerups ) {
71- if (is_intersecting (powerup->get_bounds (), ship.get_bounds ())) { powerup->activate (*this ); }
73+ if (is_intersecting (powerup->get_bounds (), ship.get_bounds ())) {
74+ powerup->activate (*this );
75+ ++m_stats->player .powerups_collected ;
76+ }
7277 }
7378}
7479
@@ -97,6 +102,7 @@ void Player::on_death(Seconds const dt) {
97102 m_death = m_death_source;
98103 m_death->set_position (ship.transform .position );
99104 m_death->tick (dt);
105+ ++m_stats->player .death_count ;
100106}
101107
102108void Player::do_inspect () {
0 commit comments