Add infinite rectangles, make scene move when player gets near the screen's edge

This commit is contained in:
2020-07-28 19:35:31 +02:00
parent 847b5cbd8e
commit 9db93cd72c
3 changed files with 88 additions and 18 deletions
+15 -3
View File
@@ -89,8 +89,10 @@ void addStuff(SDLPP::Scene &scene, std::shared_ptr<SDLPP::Renderer> &r) {
x->setId(PLAYER_ID);
scene.addObject(x);
player = x;
auto z = std::make_shared<SDLPP::RectangleRender>(0,2.5,100,100,r);
z->addCollision(SDLPP::Rect(0,0,1,1));
auto z = std::make_shared<SDLPP::RectangleRender>(0,2.5,0,0,r);
auto z_col = SDLPP::Rect(-1,0,-1,-1);
z_col.setInfinite();
z->addCollision(z_col);
z->setId(DEATH);
scene.addObject(z);
}
@@ -203,6 +205,16 @@ void doInput(std::shared_ptr<SDLPP::Scene> scene) {
}
}
player->setGravity(gravity);
auto playerX = player->getRect().x;
auto width = scene->getWidth();
auto rightBarrier = width * 0.7;
auto leftBarrier = width * 0.3;
auto rightmostX = scene->rightmost()->getRect().x + scene->rightmost()->getRect().w;
auto leftmostX = scene->leftmost()->getRect().x;
scene->moveEverything(
(playerX > rightBarrier && rightmostX > width) * (rightBarrier - playerX)/width, 0);
scene->moveEverything(
(playerX < leftBarrier && leftmostX < 0) * (leftBarrier - playerX)/width, 0);
}
}
@@ -229,7 +241,7 @@ int main() {
SDL_setFramerate(&gFPS, 60);
std::thread inputThread(doInput, main_scene);
while( !quit ) {
SDL_framerateDelay(&gFPS);
// SDL_framerateDelay(&gFPS);
main_scene->renderScene();
main_scene->presentScene();
frames++;