From afea5f21b225b1c2ca0a2349f06dae33b63a0fbc Mon Sep 17 00:00:00 2001 From: SIMAILA Djalim Date: Mon, 10 Jan 2022 16:30:17 +0100 Subject: [PATCH] true collisions --- src/game/gameManagers.cpp | 24 ++++++++++++++++++++---- 1 file changed, 20 insertions(+), 4 deletions(-) diff --git a/src/game/gameManagers.cpp b/src/game/gameManagers.cpp index 9f3a420..3eae4f7 100644 --- a/src/game/gameManagers.cpp +++ b/src/game/gameManagers.cpp @@ -63,22 +63,38 @@ bool Game::manageInvaders(){ // moving // TODO fix this lol + if(direction){ // go to the right int end = basePos.getX(); // start Position end+= grid.size() * confData.invadersSize; // add the invaders end+= (grid.size()-1) * confData.invadersDistance; // add the invadersDistance between invaders // you got the end position of the invader crowd ! + unsigned relativeScreenWidth = pm->getScreenWidth(); + size_t i = grid.size()-1; + while (grid[i].hasNoValid()){ + relativeScreenWidth += confData.invadersSize + confData.invadersDistance; + --i; + } - if(end + confData.invadersSpeed < pm->getScreenWidth()){ + if(end + confData.invadersSpeed < relativeScreenWidth){ basePos.setX(basePos.getX() + confData.invadersSpeed); - }else{ + } + else{ basePos.setY(basePos.getY() + confData.invadersSize + confData.invadersDistance); direction = !direction; return true; } - }else{ - if(basePos.getX() >= confData.invadersSpeed){ + } + else{ + size_t i = 0; + unsigned relativeBasePos = basePos.getX(); + while (grid[i].hasNoValid()){ + relativeBasePos += confData.invadersSize + confData.invadersDistance; + ++i; + } + + if(relativeBasePos >= confData.invadersSpeed){ basePos.setX(basePos.getX() - confData.invadersSpeed); }else{ basePos.setY(basePos.getY() + confData.invadersSize + confData.invadersDistance);