diff --git a/breakout.c b/breakout.c index 61d9acb..a17341e 100644 --- a/breakout.c +++ b/breakout.c @@ -457,11 +457,11 @@ void BALL_MoveAwayFromBoundaries(Ball * obj){ bool BALL_CollideWithPaddle(Ball * obj, Paddle * paddle){ if (RECT_Collide(&(obj->TargetRect), &(paddle->TargetRect))) { Vector ballCenter = BALL_GetCenter(obj); - if (ballCenter.y > (paddle->TargetRect).y) // if the ball hits the paddle from the sides (or the bottom (?)) - BALL_CollideWithRect(obj, &(paddle->TargetRect)); + if ((ballCenter.x) > ((paddle->TargetRect).x) || (ballCenter.x) < ((paddle->TargetRect).x + (paddle->TargetRect).w)) // if the ball hits the paddle from the sides (or the bottom (?)) + BALL_SteerMomentum(obj, paddle); // Sets it to unit vector! else - BALL_SteerMomentum(obj, paddle); // Sets it to unit vector! - // Following assumes that the paddle position was udated before the ball was updated + BALL_CollideWithRect(obj, &(paddle->TargetRect)); + // Following assumes that the paddle position was udated before the ball was updated while (RECT_Collide(&(obj->TargetRect), &(paddle->TargetRect))) { // Move away from rect in small steps (obj->Location) = VECTOR_Add((obj->Location), (obj->Momentum)); BALL_MoveAwayFromBoundaries(obj); diff --git a/gameover.c b/gameover.c index 823f3a3..0b2cd62 100644 --- a/gameover.c +++ b/gameover.c @@ -135,6 +135,7 @@ void GAMEOVER_MouseClicked(SDL_MouseButtonEvent b, Scenery * scenery){ GAME_ChangeState(Highscores); } else if (clickInRect(b, &GAMEOVER_RestartButtonRect)) { printf("Restart was called from gameover!\n"); + GAMEOVER_UploadState = Initial; GAME_Restart(); GAME_ChangeState(Game); }