From 1a184471a7b8705fd7eaebe419bbed29f50b83ff Mon Sep 17 00:00:00 2001 From: Michael Chen Date: Thu, 28 Dec 2017 21:17:04 +0000 Subject: [PATCH] Revert "Windows Boundary Check exported as function (3 calls)" This reverts commit cab35cb5e0a860b89dc315f0072de9e8a8695416 --- asteroids.c | 37 +++++++++++++++++++++++-------------- asteroids.h | 16 +++++++++------- 2 files changed, 32 insertions(+), 21 deletions(-) diff --git a/asteroids.c b/asteroids.c index 69caff1..00c89d4 100644 --- a/asteroids.c +++ b/asteroids.c @@ -225,7 +225,12 @@ void BULLET_UpdateAlly(Bullet * bul, Asteroid * asts, int * astCount, Enemy * en return; } (bul->Location) = vectorAdd((bul->Location), (bul->Momentum)); // Move - RECT_CheckBoundaries(&(bul->Location), &(bul->TargetRect)); // Check Boundaries + if ((bul->Location).x < 0.0f) (bul->Location).x = GAME_BoxWidth; // Check Boundaries + else if ((bul->Location).x > GAME_BoxWidth) (bul->Location).x = 0.0f; + if ((bul->Location).y < 0.0f) (bul->Location).y = GAME_BoxHeight; + else if ((bul->Location).y > GAME_BoxHeight) (bul->Location).y = 0.0f; + (bul->TargetRect).x = (int)round((bul->Location).x); // Update render Target + (bul->TargetRect).y = (int)round((bul->Location).y); int i; for (i = 0; i < (*astCount); i++) { // Collide with Asteroids if (!(asts[i].IsDestroyed)) { @@ -343,15 +348,6 @@ bool RECT_CircleCollide(SDL_Rect * rect1, SDL_Rect * rect2){ return (distance(rect1, rect2) < round(((double)(rect1->w + rect2->w)) / 2.0f)); } -void RECT_CheckBoundaries(Vector * location, SDL_Rect * Target){ - if ((location->x) < -(Target->w)) (location->x) = GAME_BoxWidth; // Check Boundaries - else if ((location->x) > GAME_BoxWidth) (location->x) = -(Target->w); - if ((location->y) < -(Target->h)) (location->x) = GAME_BoxHeight; - else if ((location->y) > GAME_BoxHeight) (location->y) = -(Target->h); - (Target->x) = (int)round((location->x)); - (Target->y) = (int)round((location->y)); -} - double distance(SDL_Rect * r1, SDL_Rect * r2){ double dx = (((double)(r2->x) + ((double)(r2->w) / 2.0f)) - ((double)(r1->x) + ((double)(r1->w) / 2.0f))); double dy = (((double)(r2->y) + ((double)(r2->h) / 2.0f)) - ((double)(r1->y) + ((double)(r1->h) / 2.0f))); @@ -362,8 +358,14 @@ double distance(SDL_Rect * r1, SDL_Rect * r2){ void ASTEROID_Update(Asteroid * ast){ if (!(ast->IsDestroyed)) { (ast->Rotation) += (ast->RotationValue); // Rotate + (ast->Location) = vectorAdd(ast->Location, ast->Momentum); // Update Position - RECT_CheckBoundaries(&(ast->Location), &(ast->TargetRect)); // Reset position if object exits window + if ((ast->Location).x < -(ast->Size)) (ast->Location).x = GAME_BoxWidth; // Check Boundaries + else if ((ast->Location).x > GAME_BoxWidth) (ast->Location).x = -(ast->Size); + if ((ast->Location).y < -(ast->Size)) (ast->Location).y = GAME_BoxHeight; + else if ((ast->Location).y > GAME_BoxHeight) (ast->Location).y = -(ast->Size); + (ast->TargetRect).x = (int)round((ast->Location).x); + (ast->TargetRect).y = (int)round((ast->Location).y); } } // ASTEROID_Update @@ -412,8 +414,10 @@ void ENEMY_Update(Enemy * enm, Ship * targets, int targetCount){ } (enm->Location) = vectorAdd((enm->Location), (enm->Momentum)); // Update Position - RECT_CheckBoundaries(&(enm->Location), &(enm->TargetRect)); // Check Boundaries - + if ((enm->Location).x < -(enm->TargetRect).w) (enm->Location).x = GAME_BoxWidth; + else if ((enm->Location).x > GAME_BoxWidth + (enm->TargetRect).w) (enm->Location).x = 0.0f; + if ((enm->Location).y < -(enm->TargetRect).h) (enm->Location).y = GAME_BoxHeight; + else if ((enm->Location).y > GAME_BoxHeight + (enm->TargetRect).h) (enm->Location).y = 0.0f; (enm->TargetRect).x = (int)round((enm->Location).x); (enm->TargetRect).y = (int)round((enm->Location).y); @@ -500,7 +504,12 @@ void SHIP_Update(Ship * shp, Uint8 * keystate, Asteroid * asts, int * astCount, } (shp->Location) = vectorAdd((shp->Location), (shp->Momentum)); // Update Position - RECT_CheckBoundaries(&(shp->Location), &(shp->TargetRect_Gliding)); // Check Boundaries + if ((shp->Location).x < -(shp->TargetRect_Gliding).w) (shp->Location).x = GAME_BoxWidth; + else if ((shp->Location).x > GAME_BoxWidth + (shp->TargetRect_Gliding).w) (shp->Location).x = 0.0f; + if ((shp->Location).y < -(shp->TargetRect_Gliding).h) (shp->Location).y = GAME_BoxHeight; + else if ((shp->Location).y > GAME_BoxHeight + (shp->TargetRect_Gliding).h) (shp->Location).y = 0.0f; + (shp->TargetRect_Gliding).x = (int)round((shp->Location).x); + (shp->TargetRect_Gliding).y = (int)round((shp->Location).y); (shp->TargetRect_Accelerating).x = (shp->TargetRect_Gliding).x; (shp->TargetRect_Accelerating).y = (shp->TargetRect_Gliding).y; diff --git a/asteroids.h b/asteroids.h index 51a4db1..fe37d08 100644 --- a/asteroids.h +++ b/asteroids.h @@ -47,28 +47,30 @@ typedef struct asteroidStruct { void ASTEROIDS_InitializeGame(SDL_Renderer * renderer, int width, int height); void ASTEROIDS_DeinitializeGame(); void BULLET_Initialize(SDL_Renderer * renderer); -void ENEMY_Initialize(SDL_Renderer * renderer); -void SHIP_Initialize(SDL_Renderer * renderer); -void ASTEROID_Initialize(SDL_Renderer * renderer); void BULLET_Deinitialize(); -void ENEMY_Deinitialize(); -void ASTEROID_Deinitialize(); -void SHIP_Deinitialize(); Bullet BULLET_Fire(Vector location, double direction, BulletType type); +void BULLET_UpdateAlly(Bullet * bul, Asteroid * asts, int * astCount, Enemy * enemies, int * enemyCount); +void BULLET_UpdateEnemy(Bullet * bul, Ship * shp, int * shpCount); +void BULLET_Draw(Bullet * bul, SDL_Renderer * renderer); +void ASTEROID_Initialize(SDL_Renderer * renderer); Asteroid ASTEROID_CreateRandom(); bool ASTEROID_TryDestroy(Asteroid * asts, int * astCount, int index); Asteroid ASTEROID_CreateFromSplit(Asteroid * creator); bool ASTEROID_CanSplit(Asteroid * ast); bool RECT_CircleCollide(SDL_Rect * rect1, SDL_Rect * rect2); -void RECT_CheckBoundaries(Vector * location, SDL_Rect * Target); double distance(SDL_Rect * r1, SDL_Rect * r2); +void ASTEROID_Deinitialize(); void ASTEROID_Update(Asteroid * ast); void ASTEROID_Draw(Asteroid * ast, SDL_Renderer * renderer); +void ENEMY_Initialize(SDL_Renderer * renderer); Enemy ENEMY_GetDefault(); +void ENEMY_Deinitialize(); void ENEMY_DestroyObject(Enemy * enm); void ENEMY_Update(Enemy * enm, Ship * targets, int targetCount); void ENEMY_Draw(Enemy * enm, SDL_Renderer * renderer); +void SHIP_Initialize(SDL_Renderer * renderer); Ship SHIP_CreateDefault(); +void SHIP_Deinitialize(); void SHIP_DestroyObject(Ship * shp); void SHIP_Update(Ship * shp, Uint8 * keystate, Asteroid * asts, int * astCount, Enemy * enemies, int * enemyCount); void SHIP_Draw(Ship * shp, SDL_Renderer * renderer);