Skip to content

Commit 3e86574

Browse files
committed
Refactor small issues
- move spawn point position generation to the 'util::random' namespace - add default initialization to primitives - remove redudant includes - add 'const' to local variables where appropriate - rename 'move' function to avoid naming conflicts
1 parent c1b20c7 commit 3e86574

File tree

5 files changed

+17
-18
lines changed

5 files changed

+17
-18
lines changed

src/enemy.cpp

Lines changed: 6 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
#include <enemy.hpp>
22
#include <algorithm>
3-
#include <numbers>
43
#include "glm/ext/vector_float2.hpp"
54
#include "glm/geometric.hpp"
65
#include "kvf/color.hpp"
@@ -11,21 +10,18 @@ Enemy::Enemy(gsl::not_null<le::ServiceLocator const*> services, glm::vec2 target
1110
: m_services(services), m_target_pos(target_pos), m_move_speed(move_speed) {
1211
m_sprite.create(50.0f, kvf::red_v);
1312
auto const framebuffer_size = m_services->get<le::Context>().framebuffer_size();
14-
m_sprite.transform.position = generate_spawn_pos(framebuffer_size);
13+
auto const radius = static_cast<float>(std::max(framebuffer_size.x, framebuffer_size.y)) / 2.0f;
14+
15+
m_sprite.transform.position = util::get_random_location_on_radius(radius);
1516
// TODO: add proper textures
1617
}
1718

1819
void Enemy::render(le::Renderer& renderer) const { m_sprite.draw(renderer); }
1920

20-
void Enemy::move(kvf::Seconds const dt) {
21-
glm::vec2 direction = glm::normalize(m_target_pos - m_sprite.transform.position);
22-
glm::vec2 movement = direction * m_move_speed * dt.count();
21+
void Enemy::translate(kvf::Seconds const dt) {
22+
glm::vec2 const direction = glm::normalize(m_target_pos - m_sprite.transform.position);
23+
glm::vec2 const movement = direction * m_move_speed * dt.count();
2324
m_sprite.transform.position += movement;
2425
}
2526

26-
glm::vec2 Enemy::generate_spawn_pos(glm::vec2 screen_size) {
27-
float radius = std::max(screen_size.x, screen_size.y) / 2.0f;
28-
float angle = util::random_range(0.0f, 2.0f * std::numbers::pi_v<float>);
29-
return {radius * std::cos(angle), radius * std::sin(angle)};
30-
}
3127
} // namespace miracle

src/enemy.hpp

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -16,15 +16,13 @@ class Enemy {
1616
explicit Enemy(gsl::not_null<le::ServiceLocator const*> services, glm::vec2 target_pos, float move_speed);
1717

1818
void render(le::Renderer& renderer) const;
19-
void move(kvf::Seconds dt);
19+
void translate(kvf::Seconds dt);
2020

2121
private:
22-
static glm::vec2 generate_spawn_pos(glm::vec2 screen_size);
23-
2422
gsl::not_null<le::ServiceLocator const*> m_services;
2523
std::optional<le::Texture> m_texture;
2624
le::drawable::Circle m_sprite{};
27-
glm::vec2 m_target_pos;
28-
float m_move_speed;
25+
glm::vec2 m_target_pos{};
26+
float m_move_speed{};
2927
};
3028
} // namespace miracle

src/game.cpp

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
#include <game.hpp>
22
#include <glm/gtx/norm.hpp>
33
#include <le2d/context.hpp>
4-
#include "glm/ext/vector_float2.hpp"
54
#include "lighhouse.hpp"
65

76
namespace miracle {
@@ -17,7 +16,7 @@ void Game::on_cursor_pos(le::event::CursorPos const& cursor_pos) {
1716
void Game::tick([[maybe_unused]] kvf::Seconds const dt) {
1817
m_circle.transform.position = m_cursor_pos;
1918
m_lighthouse.rotate_towards_cursor(m_cursor_pos);
20-
m_enemy.move(dt);
19+
m_enemy.translate(dt);
2120
}
2221

2322
void Game::render(le::Renderer& renderer) const {

src/lighthouse.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ Lighthouse::Lighthouse(gsl::not_null<le::ServiceLocator const*> services) : m_se
77
m_sprite.create(200.0f);
88
auto const& data_loader = services->get<le::IDataLoader>();
99
auto const& context = services->get<le::Context>();
10-
auto asset_loader = le::AssetLoader{&data_loader, &context};
10+
auto const asset_loader = le::AssetLoader{&data_loader, &context};
1111
m_texture = asset_loader.load_texture("images/lighthouse.png");
1212
m_sprite.texture = &m_texture.value();
1313
}

src/util/random.hpp

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
#pragma once
2+
#include <glm/ext/vector_float2.hpp>
23
#include <klib/assert.hpp>
34
#include <klib/concepts.hpp>
45
#include <random>
@@ -34,4 +35,9 @@ template <klib::NumberT Type>
3435
KLIB_ASSERT(size > 0);
3536
return Random::in_range(0uz, size - 1);
3637
}
38+
// Returns a random coordinate on the specified radius
39+
[[nodiscard]] static auto get_random_location_on_radius(float radius) -> glm::vec2 {
40+
float const angle = random_range(0.0f, 2.0f * std::numbers::pi_v<float>);
41+
return {radius * std::cos(angle), radius * std::sin(angle)};
42+
}
3743
} // namespace miracle::util

0 commit comments

Comments
 (0)