22#include < glm/gtx/norm.hpp>
33#include < le2d/context.hpp>
44#include < cstddef>
5+ #include < format>
6+ #include < iterator>
57#include < string>
68#include < vector>
79#include " enemy.hpp"
1416#include " util/random.hpp"
1517
1618namespace miracle {
17- Game::Game (gsl::not_null<le::ServiceLocator const *> services)
18- : m_services(services), m_lighthouse(services), m_light(services), m_score_text(le::drawable::Text()) {
19+ Game::Game (gsl::not_null<le::ServiceLocator const *> services) : m_services(services), m_lighthouse(services), m_light(services) {
1920 spawn_wave ();
2021 auto const & data_loader = services->get <le::IDataLoader>();
2122 auto const & context = services->get <le::Context>();
2223 auto const asset_loader = le::AssetLoader{&data_loader, &context};
2324 m_font = asset_loader.load_font (" fonts/specialElite.ttf" );
24- auto const framebuffer_size = m_services->get <le::Context>().framebuffer_size ();
25-
26- m_score_text.transform .position .y = static_cast <float >(framebuffer_size.y ) / 2 .0f - 50 .0f ;
2725}
2826
2927void Game::on_cursor_pos (le::event::CursorPos const & cursor_pos) {
@@ -44,7 +42,7 @@ void Game::tick([[maybe_unused]] kvf::Seconds const dt) {
4442 }
4543 // Keep track of how many enemies were defeated and calculate score
4644 auto res = std::erase_if (m_enemies, [](Enemy const & enemy) { return !enemy.get_health (); });
47- increase_score (res * 10 );
45+ update_score (res * 10 );
4846 m_light.set_position (m_cursor_pos);
4947 m_lighthouse.rotate_towards_cursor (m_cursor_pos);
5048}
@@ -68,8 +66,12 @@ void Game::spawn_wave() {
6866 m_enemies.insert (m_enemies.end (), std::make_move_iterator (new_wave.begin ()), std::make_move_iterator (new_wave.end ()));
6967}
7068
71- void Game::increase_score (std::size_t points) {
69+ void Game::update_score (int points) {
70+ auto const framebuffer_size = m_services->get <le::Context>().framebuffer_size ();
71+ m_score_text.transform .position .y = static_cast <float >(framebuffer_size.y ) / 2 .0f - 50 .0f ;
7272 m_score += points;
73- m_score_text.set_string (m_font, " Score: " + std::to_string (m_score));
73+ m_score_str.clear ();
74+ std::format_to (std::back_inserter (m_score_str), " Score: {}" , m_score);
75+ m_score_text.set_string (m_font, m_score_str);
7476}
7577} // namespace miracle
0 commit comments