diff options
Diffstat (limited to 'src/games/pong/Pong.cpp')
| -rw-r--r-- | src/games/pong/Pong.cpp | 140 |
1 files changed, 0 insertions, 140 deletions
diff --git a/src/games/pong/Pong.cpp b/src/games/pong/Pong.cpp deleted file mode 100644 index 9a77f38..0000000 --- a/src/games/pong/Pong.cpp +++ /dev/null @@ -1,140 +0,0 @@ -#include "games/pong/Pong.hpp" -#include "games/Game.hpp" -#include "common/shapes.hpp" -#include "renderer/Renderer.hpp" - - -void -Pong::Start() -{ - m_paddles[0].dir = NONE; - m_paddles[0].y = 1.5f; - - m_paddles[1].dir = NONE; - m_paddles[1].y = 1.5f; - - m_ball.circle.x = 2.0f; - m_ball.circle.y = 1.5f; - m_ball.circle.r = 0.1f; - - m_ball.velocity.x = 1.0f; - m_ball.velocity.y = 0.0f; - - m_game_status = game_resume; -} - -void -Pong::ProcessEvent(SDL_Event& event) -{ - switch (event.type) { - case SDL_EVENT_KEY_DOWN: { - auto key = event.key.key; - if (key == SDLK_ESCAPE) { - m_game_status = game_pause; - } - else if (key == SDLK_W) { - m_paddles[0].dir = UP; - } - else if (key == SDLK_S) { - m_paddles[0].dir = DOWN; - } - else if (key == SDLK_UP) { - m_paddles[1].dir = UP; - } - else if (key == SDLK_DOWN) { - m_paddles[1].dir = DOWN; - } - } break; - - case SDL_EVENT_KEY_UP: { - auto key = event.key.key; - if (key == SDLK_W && m_paddles[0].dir == UP) { - m_paddles[0].dir = NONE; - } - else if (key == SDLK_S && m_paddles[0].dir == DOWN) { - m_paddles[0].dir = NONE; - } - else if (key == SDLK_UP && m_paddles[1].dir == UP) { - m_paddles[1].dir = NONE; - } - else if (key == SDLK_DOWN && m_paddles[1].dir == DOWN) { - m_paddles[1].dir = NONE; - } - } break; - - default:; - } -} - -void -Pong::FinishUpdate(float dt) -{ - MoveBall(dt); - MovePaddle(m_paddles[0], dt); - MovePaddle(m_paddles[1], dt); -} - -void -Pong::MovePaddle(Paddle& paddle, float dt) -{ - if (paddle.dir) { - paddle.y += (float)paddle.dir * (PADDLE_SPEED * dt); - } - - if (paddle.y <= 0.0f) { - paddle.y = 0.0f; - } - if (paddle.y + PADDLE_HEIGHT > 3.0f) { - paddle.y = 3.0f - PADDLE_HEIGHT; - } -} - -void -Pong::MoveBall(float dt) -{ - // Todo: do physics! find trajectories, find intersection, bounce off properly - - m_ball.circle.x += m_ball.velocity.x * dt; - m_ball.circle.y += m_ball.velocity.y * dt; - if (m_ball.circle.x - m_ball.circle.r <= PADDLE_WIDTH) { - m_ball.circle.x = PADDLE_WIDTH + m_ball.circle.r; - m_ball.velocity.x *= -1.0f; - m_ball.velocity.y *= -1.0f; - } - if (m_ball.circle.x + m_ball.circle.r > 4.0f - PADDLE_WIDTH) { - m_ball.circle.x = 4.0f - PADDLE_WIDTH - m_ball.circle.r; - m_ball.velocity.x *= -1.0f; - m_ball.velocity.y *= -1.0f; - } -} - -void -Pong::Draw() -{ - Color paddle_color = {0.6f, 0.3f, 0.3f, 1.0f}; - Rectangle paddle1_rect = { - 0.0f, - m_paddles[0].y, - 0.0f + PADDLE_WIDTH, - m_paddles[0].y + PADDLE_HEIGHT - }; - Rectangle paddle2_rect = { - 4.0f - PADDLE_WIDTH, - m_paddles[1].y, - 4.0f, - m_paddles[1].y + PADDLE_HEIGHT - }; - g_renderer.PushRectangle(paddle1_rect, paddle_color, z_layer1); - g_renderer.PushRectangle(paddle2_rect, paddle_color, z_layer1); - - // Todo: draw a circle - Rectangle ball_rectangle = { - m_ball.circle.x - m_ball.circle.r, - m_ball.circle.y - m_ball.circle.r, - m_ball.circle.x + m_ball.circle.r, - m_ball.circle.y + m_ball.circle.r - }; - Color ball_color = {0.3f, 0.5f, 0.3f, 1.0f}; - g_renderer.PushRectangle(ball_rectangle, ball_color, z_layer1); -} - |
