--- /dev/null
+/*
+ * Paddle.cpp
+ *
+ * Created on: Apr 10, 2012
+ * Author: holy
+ */
+
+#include "Paddle.h"
+
+#include "Ball.h"
+
+#include <limits>
+
+
+namespace pong {
+
+Paddle::Paddle(Scalar width, Scalar height)
+: Entity(&shape, std::numeric_limits<Scalar>::infinity())
+, shape(width, height) {
+
+}
+
+
+void Paddle::Collide(Entity &other, const Ray &) {
+ if (dynamic_cast<Ball *>(&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);
+}
+
+}