]> git.localhorst.tv Git - sdl-test8.git/blob - src/pong/Paddle.cpp
added collision engine, more or less stole gameplay from sdl-test7
[sdl-test8.git] / src / pong / Paddle.cpp
1 /*
2  * Paddle.cpp
3  *
4  *  Created on: Apr 10, 2012
5  *      Author: holy
6  */
7
8 #include "Paddle.h"
9
10 #include "Ball.h"
11
12 #include <limits>
13
14
15 namespace pong {
16
17 Paddle::Paddle(Scalar width, Scalar height)
18 : Entity(&shape, std::numeric_limits<Scalar>::infinity())
19 , shape(width, height) {
20
21 }
22
23
24 void Paddle::Collide(Entity &other, const Ray &) {
25         if (dynamic_cast<Ball *>(&other)) {
26                 Vector distance(other.Origin() - Origin());
27                 other.Accelerate(distance.Unit() * 5);
28         }
29 }
30
31 void Paddle::Render(SDL_Surface *screen) const {
32         SDL_Rect destRect;
33         destRect.x = shape.Left();
34         destRect.y = shape.Top();
35         destRect.w = shape.Width();
36         destRect.h = shape.Height();
37         SDL_FillRect(screen, &destRect, SDL_MapRGB(screen->format, 0xFF, 0xFF, 0xFF));
38 }
39
40
41 void Paddle::SetMovementSpeed(Vector s) {
42 //      Vector d(s - movementSpeed);
43         movementSpeed = s;
44 //      Accelerate(d);
45 }
46
47
48 void Paddle::StartMovingUp(void) {
49         Accelerate(-movementSpeed);
50 }
51
52 void Paddle::StopMovingUp(void) {
53         Accelerate(movementSpeed);
54 }
55
56 void Paddle::StartMovingDown(void) {
57         Accelerate(movementSpeed);
58 }
59
60 void Paddle::StopMovingDown(void) {
61         Accelerate(-movementSpeed);
62 }
63
64 }