X-Git-Url: https://git.localhorst.tv/?a=blobdiff_plain;f=src%2Fpong%2FPaddle.cpp;fp=src%2Fpong%2FPaddle.cpp;h=ef922cce1bbf35698ff2137d6970352e9ca7d858;hb=8b4877fe48d21d7e789cf52f81c1d6a87b06bcbc;hp=0000000000000000000000000000000000000000;hpb=42db59e3850c958821e8396fadc20fbeb71050c4;p=sdl-test8.git diff --git a/src/pong/Paddle.cpp b/src/pong/Paddle.cpp new file mode 100644 index 0000000..ef922cc --- /dev/null +++ b/src/pong/Paddle.cpp @@ -0,0 +1,64 @@ +/* + * Paddle.cpp + * + * Created on: Apr 10, 2012 + * Author: holy + */ + +#include "Paddle.h" + +#include "Ball.h" + +#include + + +namespace pong { + +Paddle::Paddle(Scalar width, Scalar height) +: Entity(&shape, std::numeric_limits::infinity()) +, shape(width, height) { + +} + + +void Paddle::Collide(Entity &other, const Ray &) { + if (dynamic_cast(&other)) { + Vector distance(other.Origin() - Origin()); + other.Accelerate(distance.Unit() * 5); + } +} + +void Paddle::Render(SDL_Surface *screen) const { + SDL_Rect destRect; + destRect.x = shape.Left(); + destRect.y = shape.Top(); + destRect.w = shape.Width(); + destRect.h = shape.Height(); + SDL_FillRect(screen, &destRect, SDL_MapRGB(screen->format, 0xFF, 0xFF, 0xFF)); +} + + +void Paddle::SetMovementSpeed(Vector s) { +// Vector d(s - movementSpeed); + movementSpeed = s; +// Accelerate(d); +} + + +void Paddle::StartMovingUp(void) { + Accelerate(-movementSpeed); +} + +void Paddle::StopMovingUp(void) { + Accelerate(movementSpeed); +} + +void Paddle::StartMovingDown(void) { + Accelerate(movementSpeed); +} + +void Paddle::StopMovingDown(void) { + Accelerate(-movementSpeed); +} + +}