]> git.localhorst.tv Git - sdl-test8.git/blobdiff - src/pong/Paddle.cpp
added collision engine, more or less stole gameplay from sdl-test7
[sdl-test8.git] / src / pong / Paddle.cpp
diff --git a/src/pong/Paddle.cpp b/src/pong/Paddle.cpp
new file mode 100644 (file)
index 0000000..ef922cc
--- /dev/null
@@ -0,0 +1,64 @@
+/*
+ * 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);
+}
+
+}