diff options
Diffstat (limited to 'src/main.cpp')
-rw-r--r-- | src/main.cpp | 29 |
1 files changed, 16 insertions, 13 deletions
diff --git a/src/main.cpp b/src/main.cpp index 71e47be..3f60f25 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -24,20 +24,23 @@ bool debug_draw_tile_coords = false; bool debug_AI = false; render::state_t *debug_render; -uint64_t nano_clock(void) +static ntime_t nclock_ref; + +// always > 0 +ntime_t nclock(void) { - return std::chrono::high_resolution_clock::now().time_since_epoch() / std::chrono::nanoseconds(1); + return std::chrono::high_resolution_clock::now().time_since_epoch() / + std::chrono::nanoseconds(1) - nclock_ref; } int main() { - uint64_t t0 = nano_clock(); + nclock_ref = nclock() - 1; + sf::RenderWindow window(sf::VideoMode(800, 600), "Minitrem"); render::state_t render(&window); game::state_t game; interface::state_t interface(&window, &game); - size_t frame = 0; - double before = NAN; game.interface = &interface; debug_render = &render; @@ -47,14 +50,17 @@ int main() game.start(); while (1) { - double now = (nano_clock() - t0) * 1.0e-9, dt; + static ntime_t before = 0; + ntime_t now = nclock(); + double dt; - if (frame) - dt = now - before; + if (before) + dt = (now - before) * 1.0e-9; else - dt = 0.01; + dt = 0.1; + before = now; - game.tick(now, dt); + game.tick(now); interface.tick(dt); if (!window.isOpen()) break; @@ -64,9 +70,6 @@ int main() render.render(&game); interface.render_to(&render); render.end_frame(); - - before = now; - frame++; } game.stop(); |