aboutsummaryrefslogtreecommitdiffstats
path: root/examples/shooter/player.cpp
diff options
context:
space:
mode:
authorYann Herklotz <ymherklotz@gmail.com>2017-12-31 18:00:01 +0000
committerYann Herklotz <ymherklotz@gmail.com>2017-12-31 18:00:01 +0000
commit34908f108ad7c2ee6cff96491a0bc40381477424 (patch)
treef58c6bdde485d07a7136f78055240bab923bd4a6 /examples/shooter/player.cpp
parent943e3a5bc98ebcc2aa1b1d576700f7c4010c143c (diff)
downloadYAGE-34908f108ad7c2ee6cff96491a0bc40381477424.tar.gz
YAGE-34908f108ad7c2ee6cff96491a0bc40381477424.zip
[Test] Benchmarking the engine and trying to optimize.
Diffstat (limited to 'examples/shooter/player.cpp')
-rw-r--r--examples/shooter/player.cpp62
1 files changed, 62 insertions, 0 deletions
diff --git a/examples/shooter/player.cpp b/examples/shooter/player.cpp
new file mode 100644
index 00000000..2d0148e6
--- /dev/null
+++ b/examples/shooter/player.cpp
@@ -0,0 +1,62 @@
+#include "player.h"
+
+Player::Player(const glm::vec4 &bound, const yage::Texture &texture)
+ : bound_(bound), texture_(texture), direction_(Direction::DOWN),
+ action_(Action::IDLE), speed_(4)
+{
+}
+
+void Player::setTexture(const yage::Texture &texture) {
+ texture_ = texture;
+}
+
+void Player::draw(yage::SpriteBatch &sp) const
+{
+ static int time = 0;
+ static int iteration = 0;
+ float width = 1.f / static_cast<float>(texture_.x);
+ float height = 1.f / static_cast<float>(texture_.y);
+
+ switch (action_) {
+ case Action::IDLE:
+ sp.draw(bound_,
+ {width, static_cast<int>(direction_) * height, width, height},
+ texture_.id, yage::Colour(255, 255, 255, 255), 0);
+ break;
+ case Action::MOVING:
+ if(time % 15 == 0) {
+ iteration = (iteration + 1) % 2;
+ }
+ sp.draw(bound_,
+ {iteration * 2 * width, static_cast<int>(direction_) * height, width, height},
+ texture_.id, yage::Colour(255, 255, 255, 255), 0);
+ time = (time + 1) % 59;
+ break;
+ }
+}
+
+void Player::move(Direction direction)
+{
+ direction_ = direction;
+ action_ = Action::MOVING;
+
+ switch (direction_) {
+ case Direction::LEFT:
+ bound_.x -= speed_;
+ break;
+ case Direction::DOWN:
+ bound_.y -= speed_;
+ break;
+ case Direction::RIGHT:
+ bound_.x += speed_;
+ break;
+ case Direction::UP:
+ bound_.y += speed_;
+ break;
+ }
+}
+
+void Player::idle()
+{
+ action_ = Action::IDLE;
+}