Added framecap
This commit is contained in:
parent
7cbc525dc6
commit
14992d0939
1 changed files with 20 additions and 8 deletions
|
@ -14,13 +14,15 @@
|
||||||
#include <paradiso/vector.hpp>
|
#include <paradiso/vector.hpp>
|
||||||
#include <paradiso/window.hpp>
|
#include <paradiso/window.hpp>
|
||||||
|
|
||||||
#include <unordered_map>
|
#include <chrono>
|
||||||
|
|
||||||
#include <iomanip>
|
#include <iomanip>
|
||||||
#include <iostream>
|
#include <iostream>
|
||||||
|
#include <unordered_map>
|
||||||
|
|
||||||
#include "lib/image_loader.hpp"
|
#include "lib/image_loader.hpp"
|
||||||
|
|
||||||
|
const int frame_rate = 60;
|
||||||
|
|
||||||
struct Background {
|
struct Background {
|
||||||
paradiso::Sprite backgroundLeft;
|
paradiso::Sprite backgroundLeft;
|
||||||
paradiso::Sprite backgroundRight;
|
paradiso::Sprite backgroundRight;
|
||||||
|
@ -57,7 +59,7 @@ struct Background {
|
||||||
if (sprite->pivot.x() <= -2.0f) {
|
if (sprite->pivot.x() <= -2.0f) {
|
||||||
sprite->pivot.x() += 4.0f;
|
sprite->pivot.x() += 4.0f;
|
||||||
}
|
}
|
||||||
sprite->pivot.x() -= 0.0006f;
|
sprite->pivot.x() -= 0.001f;
|
||||||
shader.set_uniform("pivot", sprite->pivot);
|
shader.set_uniform("pivot", sprite->pivot);
|
||||||
shader.set_uniform("scale", sprite->scale);
|
shader.set_uniform("scale", sprite->scale);
|
||||||
shader.set_uniform("rotation", sprite->rotation);
|
shader.set_uniform("rotation", sprite->rotation);
|
||||||
|
@ -91,7 +93,7 @@ struct Grass {
|
||||||
if (sprite->pivot.x() <= -2.0f) {
|
if (sprite->pivot.x() <= -2.0f) {
|
||||||
sprite->pivot.x() += 4.0f;
|
sprite->pivot.x() += 4.0f;
|
||||||
}
|
}
|
||||||
sprite->pivot.x() -= 0.005f;
|
sprite->pivot.x() -= 0.035f;
|
||||||
shader.set_uniform("pivot", sprite->pivot);
|
shader.set_uniform("pivot", sprite->pivot);
|
||||||
shader.set_uniform("scale", sprite->scale);
|
shader.set_uniform("scale", sprite->scale);
|
||||||
shader.set_uniform("rotation", sprite->rotation);
|
shader.set_uniform("rotation", sprite->rotation);
|
||||||
|
@ -114,10 +116,10 @@ struct FlappyBird {
|
||||||
unsigned int flapCounter = 0; // How many ticks since last flap
|
unsigned int flapCounter = 0; // How many ticks since last flap
|
||||||
|
|
||||||
float velocity = 0.0f;
|
float velocity = 0.0f;
|
||||||
const float max_velocity = 0.02f;
|
const float max_velocity = 0.05f;
|
||||||
|
|
||||||
const float gravity = -0.0002f;
|
const float gravity = -0.004f;
|
||||||
const float move_up_velocity = 0.0003f;
|
const float move_up_velocity = 0.0055f;
|
||||||
|
|
||||||
bool move_up = false;
|
bool move_up = false;
|
||||||
bool paused = true;
|
bool paused = true;
|
||||||
|
@ -209,7 +211,7 @@ struct FlappyBird {
|
||||||
}
|
}
|
||||||
|
|
||||||
// Update rotation
|
// Update rotation
|
||||||
rotation = velocity * 20.0f;
|
rotation = velocity * 15.0f;
|
||||||
}
|
}
|
||||||
|
|
||||||
// keyboard handler
|
// keyboard handler
|
||||||
|
@ -270,6 +272,8 @@ auto main() -> int {
|
||||||
|
|
||||||
auto flappyBird = FlappyBird{};
|
auto flappyBird = FlappyBird{};
|
||||||
|
|
||||||
|
// timer
|
||||||
|
|
||||||
// das update führt den hier mitgegebnen Ausdruck innerhalb der internen
|
// das update führt den hier mitgegebnen Ausdruck innerhalb der internen
|
||||||
// Updates des Fensters auf. Es wird hier auch explizit ein bool gefordert
|
// Updates des Fensters auf. Es wird hier auch explizit ein bool gefordert
|
||||||
// damit das update auch zu jederzeit unterbrochen werden kann
|
// damit das update auch zu jederzeit unterbrochen werden kann
|
||||||
|
@ -278,6 +282,7 @@ auto main() -> int {
|
||||||
.position = paradiso::Point{.x = 0, .y = 0}, .size = size});
|
.position = paradiso::Point{.x = 0, .y = 0}, .size = size});
|
||||||
|
|
||||||
ctx.clear();
|
ctx.clear();
|
||||||
|
auto t1 = std::chrono::high_resolution_clock::now();
|
||||||
|
|
||||||
// Keyboard and state change
|
// Keyboard and state change
|
||||||
flappyBird.on_keyboard(w.keyboard_input());
|
flappyBird.on_keyboard(w.keyboard_input());
|
||||||
|
@ -288,6 +293,13 @@ auto main() -> int {
|
||||||
grass.draw(shader);
|
grass.draw(shader);
|
||||||
flappyBird.draw(shader);
|
flappyBird.draw(shader);
|
||||||
|
|
||||||
|
// wait for frame rate
|
||||||
|
auto t2 = std::chrono::high_resolution_clock::now();
|
||||||
|
auto duration =
|
||||||
|
std::chrono::duration_cast<std::chrono::microseconds>(t2 - t1);
|
||||||
|
auto wait = std::chrono::microseconds(1000000 / frame_rate) - duration;
|
||||||
|
std::this_thread::sleep_for(wait);
|
||||||
|
|
||||||
// Quit
|
// Quit
|
||||||
return !(w.keyboard_input().size() &&
|
return !(w.keyboard_input().size() &&
|
||||||
w.keyboard_input().top().key == 'Q');
|
w.keyboard_input().top().key == 'Q');
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue