#include "pong.h" #include "screen.h" inline void UpdatePosition ( vector_t * const position, const vector_t velocity ) { position->x += velocity.x ; position->y += velocity.y ; } /* CheckMoveableCollision: Implementation of AABB collision for moveable objects */ bool CheckMoveableCollision ( const struct moveable_t m1, const struct moveable_t m2 ) { const vector_t m1p = m1.position; const vector_t m2p = m2.position; const bool checkX = m1p.x + m1.width > m2p.x, checkY = m1p.y + m1.height > m2p.y && m1p.y < m2p.y + m2.height; return checkX && checkY; } bool CheckLeftWallCollision ( const struct moveable_t m ) { return m.position.x < 0 ; } bool CheckRightWallCollision ( const struct moveable_t m ) { return m.position.x + m.width > SCREEN_WIDTH; } bool CheckGroundCollision ( const struct moveable_t m ) { return m.position.y + m.height > SCREEN_HEIGHT; } bool CheckCeilingCollision ( const struct moveable_t m ) { return m.position.y < 0; } void Reset ( ball_t * const ball ) { ball->position = ( vector_t ) { SCREEN_WIDTH >> 1, SCREEN_HEIGHT >> 1 }; ball->velocity = ( vector_t ){ 1, 1 }; }