From 1e5beb5b88c9ff92bcb265481087d22a896cfbb6 Mon Sep 17 00:00:00 2001 From: Alan Youngblood Date: Mon, 16 Aug 2021 17:36:21 -0400 Subject: [PATCH] ColliderComponent hidden prop --- build/BeagleRescue | Bin 333136 -> 333136 bytes src/ecs/ColliderComponent.h | 33 ++++++++---------------- src/ecs/Components.h | 3 --- src/ecs/KeyboardController.h | 10 -------- src/ecs/ProjectileComponent.h | 1 - src/ecs/SpriteComponent.h | 25 ++---------------- src/ecs/UIFontComponent.h | 2 -- src/game/Game.cpp | 22 +++++++++++----- src/ui/UINineSlice.cpp | 47 +--------------------------------- src/ui/UIText.cpp | 20 +-------------- src/ui/UIText.h | 1 - 11 files changed, 30 insertions(+), 134 deletions(-) diff --git a/build/BeagleRescue b/build/BeagleRescue index cc20496cf3166a8b03b7f5c6e0199ee0b6a3d9a3..6cc7b5aad74facdbdf34f75b69d01616c8cbb479 100755 GIT binary patch delta 60022 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 VQQs@Vr&c8^!8Z=W8hC|z{x7P}tk?hm delta 59830 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 diff --git a/src/ecs/ColliderComponent.h b/src/ecs/ColliderComponent.h index ef4f61d..e2ba884 100644 --- a/src/ecs/ColliderComponent.h +++ b/src/ecs/ColliderComponent.h @@ -26,15 +26,14 @@ public: int offsetX = 0; int offsetY = 0; + + bool hidden = true; TransformComponent* transform; ColliderComponent(std::string t) { tag = t; -// collider.x = 10; -// collider.y = 52; -// collider.w = collider.h = 12; } ColliderComponent(std::string t, int xpos, int ypos, int size, int scale) @@ -66,17 +65,6 @@ public: tex = TextureManager::LoadTexture("assets/ColTex.png"); srcR = { 0, 0, 16, 16}; destR = { collider.x, collider.y, collider.w, collider.h }; -// if(tag == "player"){ -// destR = { 18, 28, 24, 24 }; -// collider.w = 16; -// collider.h = 16; -// transform->height = 24; -// transform->width = 24; -// std::cout << "player collider init() ran" << std::endl; -// std::cout << "destR.w: " << destR.w << std::endl; -// std::cout << "destR.h: " << destR.h << std::endl; -// } -// Game::colliders.push_back(this); } void update() override @@ -85,10 +73,6 @@ public: { collider.x = static_cast(transform->position.x+offsetX); collider.y = static_cast(transform->position.y+offsetY); -// collider.w = transform->width * transform->scale; -// collider.h = transform->height * transform->scale; -// collider.w = 12 * transform->scale; -// collider.h = 12 * transform->scale; } destR.x = collider.x - Game::camera.x; destR.y = collider.y - Game::camera.y; @@ -96,12 +80,15 @@ public: void draw() override { - if(tag == "terrain") - { - TextureManager::Draw(tex, srcR, destR, SDL_FLIP_NONE); -// TextureManager::DrawCollider(destR); +// if(tag == "terrain") +// { +// TextureManager::Draw(tex, srcR, destR, SDL_FLIP_NONE); +// } + if(hidden == false) + { + TextureManager::Draw(tex, srcR,destR,SDL_FLIP_NONE); } - } + } }; diff --git a/src/ecs/Components.h b/src/ecs/Components.h index 61ff807..3e875f6 100644 --- a/src/ecs/Components.h +++ b/src/ecs/Components.h @@ -17,7 +17,4 @@ #include "TileComponent.h" #include "UIFontComponent.h" - - - #endif /* SRC_COMPONENTS_H_ */ diff --git a/src/ecs/KeyboardController.h b/src/ecs/KeyboardController.h index 155d572..a8da003 100644 --- a/src/ecs/KeyboardController.h +++ b/src/ecs/KeyboardController.h @@ -90,16 +90,6 @@ public: { switch (Game::event.key.keysym.sym) { - case SDLK_UP: -// transform->velocity.y = 0; -// sprite->Play("idle"); -// sprite->spriteFlip = SDL_FLIP_NONE; - break; - case SDLK_DOWN: -// transform->velocity.y = 0; -// sprite->Play("idle"); -// sprite->spriteFlip = SDL_FLIP_NONE; - break; case SDLK_LEFT: if(Game::gsm->currentState == GameStateManager::ST_COREGAME){ transform->velocity.x = 0; diff --git a/src/ecs/ProjectileComponent.h b/src/ecs/ProjectileComponent.h index a0fdddd..585ae06 100644 --- a/src/ecs/ProjectileComponent.h +++ b/src/ecs/ProjectileComponent.h @@ -24,7 +24,6 @@ public: { transform = &entity->getComponent(); transform->velocity = velocity; -// std::cout << transform->position << std::endl; } void update() override diff --git a/src/ecs/SpriteComponent.h b/src/ecs/SpriteComponent.h index 7be28af..81ef1a4 100644 --- a/src/ecs/SpriteComponent.h +++ b/src/ecs/SpriteComponent.h @@ -69,14 +69,10 @@ public: { spriteType = sType; if(sType == spriteAnimation) - { -// std::string bogusPath = "src/config/credits.json"; -// std::ifstream fin(bogusPath); - + { std::ifstream fin(json); if(fin.is_open()){ -// std::cout<<"file is open"<valueint; int toFrame = cJSON_GetObjectItem(animItem, "to")->valueint; Animation anim = Animation(fromFrame,toFrame,100); animations.emplace(name, anim); -// printf("Adding animation named: %s fromFrame:%d toFrame:%d \n",name,fromFrame,toFrame); Play(name); } -// if(!animations.empty()){ -// printf("animations found!\n"); -// }else{ -// printf("No animations\n"); -// } -// Play("idle"); Animation idle = Animation(0,3,100); animations.emplace("Idle", idle); Animation walk = Animation(1,3,100); @@ -140,7 +120,6 @@ public: { spriteType = sType; setTex(id); -// text = isText; letter = fontLetter; letterWidth = letterW; letterHeight = letterH; diff --git a/src/ecs/UIFontComponent.h b/src/ecs/UIFontComponent.h index e4d2181..5ab52de 100644 --- a/src/ecs/UIFontComponent.h +++ b/src/ecs/UIFontComponent.h @@ -35,8 +35,6 @@ public: SDL_Rect srcRect, destRect; Vector2D position; -// UIFontComponent() = default; - UIFontComponent(std::string id, int letterW, int letterH, int xpos, int ypos, int scale) { texture = Game::assets->GetTexture(id); diff --git a/src/game/Game.cpp b/src/game/Game.cpp index cd28403..f9377b2 100644 --- a/src/game/Game.cpp +++ b/src/game/Game.cpp @@ -282,6 +282,18 @@ void Game::update() camera.x = map->width-camera.w; if (camera.y > map->height-camera.h) camera.y = map->height-camera.h; + if (Game::debugCollisionBoxes) + { + for (auto& c: colliders) + { + c->getComponent().hidden = false; + } + } else { + for (auto& c: colliders) + { + c->getComponent().hidden = true; + } + } } void Game::render() @@ -295,14 +307,12 @@ void Game::render() { t->draw(); } - if (Game::debugCollisionBoxes) + + for (auto& c : colliders) { - for (auto& c : colliders) - { - c->draw(); - } + c->draw(); } - + for (auto& o : objects) { o->draw(); diff --git a/src/ui/UINineSlice.cpp b/src/ui/UINineSlice.cpp index 360ba12..b754dc2 100644 --- a/src/ui/UINineSlice.cpp +++ b/src/ui/UINineSlice.cpp @@ -49,20 +49,6 @@ void UINineSlice::MakeSlices(std::string texture, int srcW, int srcH, int x0, in finalRect.w = finalRect.w*scale; finalRect.h = finalRect.h*scale; -// x0 = x0*scale; -// x1 = x1*scale; -// y0 = y0*scale; -// y1 = y1*scale; - -// printf("finalRect x:%d, y:%d, w:%d, h:%d \n",finalRect.x,finalRect.y,finalRect.w,finalRect.h); - -// destRect.x = destRect.x*scale; -// destRect.y = destRect.y*scale; -// destRect.w = destRect.w*scale; -// destRect.h = destRect.h*scale; -// colsRemainder = colsRemainder*scale; -// rowsRemainder = rowsRemainder*scale; - for (int i=0; i<9; i++) { switch(i) @@ -72,7 +58,6 @@ void UINineSlice::MakeSlices(std::string texture, int srcW, int srcH, int x0, in srcRect.y = 0; srcRect.w = x0; srcRect.h = y0; -// printf("tile zero.w or x0: %d\n",x0); destRect.w = srcRect.w; destRect.h = srcRect.h; break; @@ -91,8 +76,6 @@ void UINineSlice::MakeSlices(std::string texture, int srcW, int srcH, int x0, in srcRect.h = y0; destRect.w = srcRect.w; destRect.h = srcRect.h; -// printf("srcRect.x: %d",srcRect.x); -// printf("UI9Slice #2 srcRect x:%d y:%d w:%d h:%d \n",srcRect.x,srcRect.y,srcRect.w,srcRect.h); break; case 3: srcRect.x = 0; @@ -150,14 +133,6 @@ void UINineSlice::MakeSlices(std::string texture, int srcW, int srcH, int x0, in destRect.w = 0; destRect.h = 0; } -// These will be the same for each SDL_Rect except if there's a scaling int, which still needs to be implemented -// destRect.w = srcRect.w*scale; -// destRect.h = srcRect.h*scale; - -// x0 = x0*scale; -// x1 = x1*scale; -// y0 = y0*scale; -// y1 = y1*scale; // Calculate where and how many tiles to place // We only need one instance of each of these in each corner or slices 0,2,6,8 @@ -184,9 +159,6 @@ void UINineSlice::MakeSlices(std::string texture, int srcW, int srcH, int x0, in destRect.y = finalRect.y+(finalRect.h-srcRect.h*scale); } AddSlice(srcRect,destRect,scale); -// printf("Corner Slice\n"); -// printf("srcRect x:%d, y:%d, w:%d, h:%d \n",srcRect.x,srcRect.y,srcRect.w,srcRect.h); -// printf("destRect x:%d, y:%d, w:%d, h:%d \n\n",destRect.x,destRect.y,destRect.w,destRect.h); } // Slices 1,7 need to be repeated in a row if (i==1||i==7) @@ -198,9 +170,6 @@ void UINineSlice::MakeSlices(std::string texture, int srcW, int srcH, int x0, in destRect.x = finalRect.x+(x0*scale+c*(x1*scale-x0*scale)); destRect.y = finalRect.y; AddSlice(srcRect,destRect,scale); -// printf("Top Slice (1) \n"); -// printf("srcRect x:%d, y:%d, w:%d, h:%d \n",srcRect.x,srcRect.y,srcRect.w,srcRect.h); -// printf("destRect x:%d, y:%d, w:%d, h:%d \n\n",destRect.x,destRect.y,destRect.w,destRect.h); } if (colsRemainder>0){ destRect.x = finalRect.x+(x0*scale+cols*(x1*scale-x0*scale)); @@ -208,9 +177,6 @@ void UINineSlice::MakeSlices(std::string texture, int srcW, int srcH, int x0, in srcRect.w = colsRemainder; destRect.w = colsRemainder; AddSlice(srcRect,destRect,scale); -// printf("Top Slice (1) \n"); -// printf("srcRect x:%d, y:%d, w:%d, h:%d \n",srcRect.x,srcRect.y,srcRect.w,srcRect.h); -// printf("destRect x:%d, y:%d, w:%d, h:%d \n\n",destRect.x,destRect.y,destRect.w,destRect.h); } } if (i==7) @@ -220,7 +186,6 @@ void UINineSlice::MakeSlices(std::string texture, int srcW, int srcH, int x0, in destRect.x = finalRect.x+(x0*scale+c*(x1*scale-x0*scale)); destRect.y = finalRect.y+(finalRect.h-(srcH-y1)*scale); AddSlice(srcRect,destRect,scale); -// printf("destRect x:%d, y:%d, w:%d, h:%d \n",destRect.x,destRect.y,destRect.w,destRect.h); } if (colsRemainder>0){ destRect.x = finalRect.x+(x0*scale+cols*(x1*scale-x0*scale)); @@ -228,7 +193,6 @@ void UINineSlice::MakeSlices(std::string texture, int srcW, int srcH, int x0, in srcRect.w = colsRemainder; destRect.w = colsRemainder; AddSlice(srcRect,destRect,scale); -// printf("destRect x:%d, y:%d, w:%d, h:%d \n",destRect.x,destRect.y,destRect.w,destRect.h); } } } @@ -242,7 +206,6 @@ void UINineSlice::MakeSlices(std::string texture, int srcW, int srcH, int x0, in destRect.x = finalRect.x; destRect.y = finalRect.y+(y0*scale+r*(y1-y0)*scale); AddSlice(srcRect,destRect,scale); -// printf("destRect x:%d, y:%d, w:%d, h:%d \n",destRect.x,destRect.y,destRect.w,destRect.h); } if (rowsRemainder>0){ destRect.x = finalRect.x; @@ -250,7 +213,6 @@ void UINineSlice::MakeSlices(std::string texture, int srcW, int srcH, int x0, in srcRect.h = rowsRemainder; destRect.h = rowsRemainder; AddSlice(srcRect,destRect,scale); -// printf("destRect x:%d, y:%d, w:%d, h:%d \n",destRect.x,destRect.y,destRect.w,destRect.h); } } if (i==5) @@ -260,7 +222,6 @@ void UINineSlice::MakeSlices(std::string texture, int srcW, int srcH, int x0, in destRect.x = finalRect.x+(finalRect.w-(srcW-x1)*scale); destRect.y = finalRect.y+(y0*scale+r*(y1-y0)*scale); AddSlice(srcRect,destRect,scale); -// printf("destRect x:%d, y:%d, w:%d, h:%d \n",destRect.x,destRect.y,destRect.w,destRect.h); } if (rowsRemainder>0){ destRect.x = finalRect.x+(finalRect.w-(srcW-x1)*scale); @@ -268,7 +229,6 @@ void UINineSlice::MakeSlices(std::string texture, int srcW, int srcH, int x0, in srcRect.h = rowsRemainder; destRect.h = rowsRemainder; AddSlice(srcRect,destRect,scale); -// printf("destRect x:%d, y:%d, w:%d, h:%d \n",destRect.x,destRect.y,destRect.w,destRect.h); } } } @@ -284,7 +244,6 @@ void UINineSlice::MakeSlices(std::string texture, int srcW, int srcH, int x0, in destRect.x = finalRect.x+(x0*scale+c*(x1-x0)*scale); destRect.y = finalRect.y+(y0*scale+rowY*scale); AddSlice(srcRect,destRect,scale); -// printf("destRect x:%d, y:%d, w:%d, h:%d \n",destRect.x,destRect.y,destRect.w,destRect.h); } if (colsRemainder>0) { @@ -293,7 +252,6 @@ void UINineSlice::MakeSlices(std::string texture, int srcW, int srcH, int x0, in srcRect.w = colsRemainder; destRect.w = colsRemainder; AddSlice(srcRect,destRect,scale); -// printf("destRect x:%d, y:%d, w:%d, h:%d \n",destRect.x,destRect.y,destRect.w,destRect.h); } } if (rowsRemainder>0) @@ -307,7 +265,6 @@ void UINineSlice::MakeSlices(std::string texture, int srcW, int srcH, int x0, in srcRect.w = (srcW-x0-(srcW-x1)); destRect.w = (srcW-x0-(srcW-x1)); AddSlice(srcRect,destRect,scale); -// printf("destRect x:%d, y:%d, w:%d, h:%d \n",destRect.x,destRect.y,destRect.w,destRect.h); } } if(rowsRemainder>0&&colsRemainder>0) @@ -319,15 +276,13 @@ void UINineSlice::MakeSlices(std::string texture, int srcW, int srcH, int x0, in destRect.w = colsRemainder; destRect.h = rowsRemainder; AddSlice(srcRect,destRect,scale); -// printf("destRect x:%d, y:%d, w:%d, h:%d \n",destRect.x,destRect.y,destRect.w,destRect.h); } } } } -// Need to take in variables: (srcRect, desiredRect) + void UINineSlice::AddSlice(SDL_Rect srcRect, SDL_Rect destRect, int scale) { -// printf("adding a 9slice element"); auto& slice(manager.addEntity()); SDL_Rect scaledRect = SDL_Rect(); scaledRect.x = destRect.x; diff --git a/src/ui/UIText.cpp b/src/ui/UIText.cpp index 5f7daed..cc48278 100644 --- a/src/ui/UIText.cpp +++ b/src/ui/UIText.cpp @@ -37,22 +37,10 @@ void UIText::ParseString(std::string inputText, int x, int y, int letterScale, s int posX = x; int posY = y; int i = 0; -// printf(inputText); char current = inputText[i]; -// const char* newLineChar{10}; - -// std::vector writableStr(inputText.begin(), inputText.end()); -// writableStr.push_back('\0'); - + do { -// for (int i = 0; i < writableStr.size(); i++) -// { -// if (writableStr.at(i) == '\n') -// { -// printf("found new line"); -// } -// } ++i; if (strcmp(¤t,"\n")!=0) { @@ -60,7 +48,6 @@ void UIText::ParseString(std::string inputText, int x, int y, int letterScale, s } else { -// printf("new line detected/n"); posX = x; posY += letterHeight; } @@ -74,12 +61,7 @@ void UIText::AddLetter(int xpos, int ypos, char crnt, std::string tag, int lttrS { auto& letter(manager.addEntity()); letter.addComponent(xpos*lttrScale, ypos*lttrScale, letterWidth, letterHeight, 1); -// printf("Scale: %d\n",scale); letter.addComponent("font", SpriteComponent::spriteText, crnt, letterWidth, letterHeight, lttrScale); letter.setTag(tag); letter.addGroup(Game::groupUI_Layer1); } - -// void UIText::RemoveLetter() -// { -// } diff --git a/src/ui/UIText.h b/src/ui/UIText.h index 19dcbb8..4025755 100644 --- a/src/ui/UIText.h +++ b/src/ui/UIText.h @@ -23,7 +23,6 @@ public: UIText(std::string inputText, std::string texID, int x, int y, int letterW, int letterH, int lScale); ~UIText(); -// void SetCharClips(SDL_Texture* fontTex, int x, int y, int letterW, int letterH); void AddLetter(int xpos, int ypos, char crnt, std::string tag, int lttrScale); void ParseString(std::string inputText, int x, int y, int letterScale, std::string tag); int scale;