diff options
author | Matt Turner <mattst88@gmail.com> | 2010-02-03 16:17:58 -0500 |
---|---|---|
committer | Matt Turner <mattst88@gmail.com> | 2011-04-04 17:14:36 -0400 |
commit | 2afaf90c1111cf64b90dedc25a795aff66f9dc9b (patch) | |
tree | 8b8a7a751b07c328f3391e7e168d28785f73ea25 | |
parent | bd369dc510c7f91733b3ae0ce739b8f2cc34a661 (diff) |
Add code to limit paddle speed.
Signed-off-by: Matt Turner <mattst88@gmail.com>
-rw-r--r-- | paddle.c | 36 |
1 files changed, 34 insertions, 2 deletions
@@ -1,3 +1,5 @@ +#include <math.h> + #include "SDL.h" #include "SDL_opengl.h" @@ -74,6 +76,11 @@ GLPong_PaddleInit(Paddle_t * paddle, GLfloat z, GLuint texture) { void GLPong_PaddleMove(Paddle_t * paddle, GLfloat x, GLfloat y) { + GLfloat old_x = paddle->coord.x; + GLfloat old_y = paddle->coord.y; + GLfloat mouse_x; + GLfloat mouse_y; + /* clamp paddle to border */ if (x <= -1.5f + (paddle->w / 2.0f)) { x = -1.5f + (paddle->w / 2.0f); @@ -87,6 +94,31 @@ GLPong_PaddleMove(Paddle_t * paddle, GLfloat x, GLfloat y) { y = 1.0f - (paddle->h / 2.0f); } - paddle->coord.x = x - (paddle->w / 2.0f); - paddle->coord.y = -(y + (paddle->h / 2.0f)); + mouse_x = x - (paddle->w / 2.0f); + mouse_y = -(y + (paddle->h / 2.0f)); + printf("(mouse_x, mouse_y) = (%.3f, %.3f)\n", mouse_x, mouse_y); + + printf("x diff is %f\n", fabs(mouse_x - old_x)); + + if (fabs(mouse_x - old_x) > 0.33f / 2.0f) { + if (mouse_x > old_x) { + paddle->coord.x += 0.33f / 2.0f; + } else { + paddle->coord.x -= 0.33f / 2.0f; + } + } else { + paddle->coord.x = mouse_x; + } + + printf("y diff is %f\n", fabs(mouse_y - old_y)); + + if (fabs(mouse_y - old_y) > 0.25f / 2.0f) { + if (mouse_y > old_y) { + paddle->coord.y += 0.25f / 2.0f; + } else { + paddle->coord.y -= 0.25f / 2.0f; + } + } else { + paddle->coord.y = mouse_y; + } } |