Add infinite rectangles, make scene move when player gets near the screen's edge
This commit is contained in:
@@ -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++;
|
||||
|
||||
Reference in New Issue
Block a user