summaryrefslogtreecommitdiffhomepage
path: root/ExampleGenerator.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'ExampleGenerator.cpp')
-rw-r--r--ExampleGenerator.cpp47
1 files changed, 47 insertions, 0 deletions
diff --git a/ExampleGenerator.cpp b/ExampleGenerator.cpp
new file mode 100644
index 0000000..7f4d41b
--- /dev/null
+++ b/ExampleGenerator.cpp
@@ -0,0 +1,47 @@
+#include "ExampleGenerator.h"
+
+#include <cmath>
+#include <vector>
+#include <utility>
+
+#include <raylib.h>
+
+#include "Bullets.h"
+
+
+ExampleGenerator::ExampleGenerator() :
+ m_delay {0},
+ m_interval {0.2f},
+ m_cone {0.3f},
+ m_speed {120},
+ m_shift {10},
+ m_segments {3},
+ m_origin {400, 20}
+{
+}
+
+
+void
+ExampleGenerator::update(const float dt, std::vector<ConstantVelocityBullet>& bullets)
+{
+ m_delay += dt;
+ if (m_delay > m_interval) {
+ m_delay -= m_interval;
+ for (float i = 0; i <= m_segments; ++i) {
+ const float angle = ((1 - m_cone) / 2 + m_cone * i / m_segments) * M_PI;
+ const float cos = std::cos(angle);
+ const float sin = std::sin(angle);
+ ConstantVelocityBullet bullet;
+ bullet.color = RED;
+ bullet.radius = 4;
+ bullet.velocity.x = cos * m_speed;
+ bullet.velocity.y = sin * m_speed;
+ bullet.position.x = m_origin.x + cos * m_shift;
+ bullet.position.y = m_origin.y + sin * m_shift;
+ bullets.push_back(std::move(bullet));
+ }
+ m_segments += 3;
+ if (m_segments > 20)
+ m_segments = 3;
+ }
+}