From 6b1dcc5df51df4a2d8b724187eb1bcdb4fd9df8b Mon Sep 17 00:00:00 2001 From: Kelly Rauchenberger Date: Sat, 14 Mar 2015 19:25:23 -0400 Subject: Added sound when you hit the ground Also split up components.cpp into files for each class, fixed a bug concerning falling off the screen when you change maps, and converted collision data into doubles. --- src/components/player_sprite.cpp | 60 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 60 insertions(+) create mode 100644 src/components/player_sprite.cpp (limited to 'src/components/player_sprite.cpp') diff --git a/src/components/player_sprite.cpp b/src/components/player_sprite.cpp new file mode 100644 index 0000000..2814852 --- /dev/null +++ b/src/components/player_sprite.cpp @@ -0,0 +1,60 @@ +#include "player_sprite.h" + +PlayerSpriteComponent::PlayerSpriteComponent() : sprite("../res/Starla.png") +{ + +} + +void PlayerSpriteComponent::render(Game&, Entity& entity, Texture& buffer) +{ + animFrame++; + + int frame = 0; + if (isMoving) + { + frame += 2; + + if (animFrame % 20 < 10) + { + frame += 2; + } + } + + if (facingLeft) + { + frame++; + } + + double alpha = 1.0; + if (dying && (animFrame % 4 < 2)) + { + alpha = 0.0; + } + + Rectangle src_rect {frame*10, 0, 10, 12}; + Rectangle dst_rect {(int) entity.position.first, (int) entity.position.second, entity.size.first, entity.size.second}; + buffer.blit(sprite, src_rect, dst_rect, alpha); +} + +void PlayerSpriteComponent::receive(Game&, Entity&, const Message& msg) +{ + if (msg.type == Message::Type::walkLeft) + { + facingLeft = true; + isMoving = true; + } else if (msg.type == Message::Type::walkRight) + { + facingLeft = false; + isMoving = true; + } else if (msg.type == Message::Type::stopWalking) + { + isMoving = false; + } else if (msg.type == Message::Type::die) + { + dying = true; + isMoving = false; + } else if (msg.type == Message::Type::stopDying) + { + dying = false; + } +} -- cgit 1.4.1