diff options
author | Yann Herklotz <ymherklotz@gmail.com> | 2017-12-31 18:00:01 +0000 |
---|---|---|
committer | Yann Herklotz <ymherklotz@gmail.com> | 2017-12-31 18:00:01 +0000 |
commit | 34908f108ad7c2ee6cff96491a0bc40381477424 (patch) | |
tree | f58c6bdde485d07a7136f78055240bab923bd4a6 /examples/shooter/player.cpp | |
parent | 943e3a5bc98ebcc2aa1b1d576700f7c4010c143c (diff) | |
download | YAGE-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.cpp | 62 |
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; +} |