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/user_movement.cpp | 100 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 100 insertions(+) create mode 100644 src/components/user_movement.cpp (limited to 'src/components/user_movement.cpp') diff --git a/src/components/user_movement.cpp b/src/components/user_movement.cpp new file mode 100644 index 0000000..e499fee --- /dev/null +++ b/src/components/user_movement.cpp @@ -0,0 +1,100 @@ +#include "user_movement.h" +#include "renderer.h" + +void UserMovementComponent::input(Game& game, Entity& entity, int key, int action) +{ + if (action == GLFW_PRESS) + { + if (key == GLFW_KEY_LEFT) + { + holdingLeft = true; + + if (!frozen) + { + entity.send(game, Message::Type::walkLeft); + } + } else if (key == GLFW_KEY_RIGHT) + { + holdingRight = true; + + if (!frozen) + { + entity.send(game, Message::Type::walkRight); + } + } else if (key == GLFW_KEY_UP) + { + if (!frozen) + { + entity.send(game, Message::Type::jump); + } + } else if (key == GLFW_KEY_DOWN) + { + if (!frozen) + { + entity.send(game, Message::Type::canDrop); + } + } + } else if (action == GLFW_RELEASE) + { + if (key == GLFW_KEY_LEFT) + { + holdingLeft = false; + + if (!frozen) + { + if (holdingRight) + { + entity.send(game, Message::Type::walkRight); + } else { + entity.send(game, Message::Type::stopWalking); + } + } + } else if (key == GLFW_KEY_RIGHT) + { + holdingRight = false; + + if (!frozen) + { + if (holdingLeft) + { + entity.send(game, Message::Type::walkLeft); + } else { + entity.send(game, Message::Type::stopWalking); + } + } + } else if (key == GLFW_KEY_DOWN) + { + if (!frozen) + { + entity.send(game, Message::Type::cantDrop); + } + } else if (key == GLFW_KEY_UP) + { + if (!frozen) + { + entity.send(game, Message::Type::stopJump); + } + } + } +} + +void UserMovementComponent::receive(Game& game, Entity& entity, const Message& msg) +{ + if (msg.type == Message::Type::die) + { + frozen = true; + + entity.send(game, Message::Type::stopWalking); + } else if (msg.type == Message::Type::stopDying) + { + frozen = false; + + if (holdingLeft) + { + entity.send(game, Message::Type::walkLeft); + } else if (holdingRight) + { + entity.send(game, Message::Type::walkRight); + } + } +} -- cgit 1.4.1