summaryrefslogtreecommitdiffhomepage
path: root/GameScreen.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'GameScreen.cpp')
-rw-r--r--GameScreen.cpp37
1 files changed, 35 insertions, 2 deletions
diff --git a/GameScreen.cpp b/GameScreen.cpp
index 714ccf5..dcae176 100644
--- a/GameScreen.cpp
+++ b/GameScreen.cpp
@@ -1,11 +1,16 @@
#include "GameScreen.h"
+#include <cmath>
+
#include <raylib.h>
+#include "Bullets.h"
+
GameScreen::GameScreen() :
m_pos {400, 300}
{
+ m_const_bullets.reserve(10000);
}
@@ -13,9 +18,33 @@ void
GameScreen::update(const float dt)
{
if (IsKeyDown(KEY_LEFT))
- m_pos.x -= dt * 30;
+ m_pos.x -= dt * 80;
if (IsKeyDown(KEY_RIGHT))
- m_pos.x += dt * 30;
+ m_pos.x += dt * 80;
+ m_delay += dt;
+ if (m_delay > TEST_INTERVAL) {
+ m_delay -= TEST_INTERVAL;
+ const int speed = 120;
+ const int divisions = 17;
+ for (double i = 0; i <= divisions; ++i) {
+ const double angle = (0.1 + 0.8 * i / divisions) * M_PI;
+ const double cos = std::cos(angle);
+ const double sin = std::sin(angle);
+ ConstantVelocityBullet bullet;
+ bullet.position.x = 400;
+ bullet.position.y = 20;
+ bullet.velocity.x = cos * speed;
+ bullet.velocity.y = sin * speed;
+ m_const_bullets.push_back(std::move(bullet));
+ }
+ }
+ ::update(dt, m_const_bullets);
+ bool collided = false;
+ for (const auto& bullet : m_const_bullets) {
+ if (CheckCollisionCircles(m_pos, 10, bullet.position, 6))
+ collided = true;
+ }
+ (void) collided;
}
@@ -23,4 +52,8 @@ void
GameScreen::draw()
{
DrawCircle(m_pos.x, m_pos.y, 10, LIGHTGRAY);
+ for (const auto& bullet : m_const_bullets)
+ DrawCircle(bullet.position.x, bullet.position.y, 6, RED);
+ DrawFPS(5, 5);
+ DrawText(TextFormat("%d", m_const_bullets.size()), 5, 25, 20, DARKGRAY);
}