#include "screen_fade.hpp"
#include "timer.hpp"
#include "player_status.hpp"
+#include "random_generator.hpp"
// the engine will be run with a logical framerate of 64fps.
// We chose 64fps here because it is a power of 2, so 1/64 gives an "even"
snprintf(str, sizeof(str), "%3.1f", fps_fps);
const char* fpstext = "FPS";
context.draw_text(white_text, fpstext, Vector(SCREEN_WIDTH - white_text->get_text_width(fpstext) - gold_text->get_text_width(" 99999") - BORDER_X, BORDER_Y + 20), LEFT_ALLIGN, LAYER_FOREGROUND1);
- context.draw_text(gold_text, str, Vector(SCREEN_WIDTH - BORDER_X, BORDER_Y + 20), RIGHT_ALLIGN, LAYER_FOREGROUND1);
+ context.draw_text(gold_text, str, Vector(SCREEN_WIDTH - BORDER_X, BORDER_Y + 20), RIGHT_ALLIGN, LAYER_FOREGROUND1);
}
void
MainLoop::run()
{
- DrawingContext context;
-
- unsigned int frame_count;
+ DrawingContext context;
+
+ unsigned int frame_count = 0;
float fps_fps = 0;
Uint32 fps_ticks = SDL_GetTicks();
Uint32 fps_nextframe_ticks = SDL_GetTicks();
Uint32 ticks;
bool skipdraw = false;
-
+
running = true;
while(running) {
while( (next_screen.get() != NULL || nextpop == true) &&
if(nextpush && current_screen.get() != NULL) {
screen_stack.push_back(current_screen.release());
}
-
+
nextpush = false;
nextpop = false;
speed = 1.0;
if(!running || current_screen.get() == NULL)
break;
-
+
float elapsed_time = 1.0 / LOGICAL_FPS;
ticks = SDL_GetTicks();
if(ticks > fps_nextframe_ticks) {
if(config->show_fps)
{
++frame_count;
-
+
if(SDL_GetTicks() - fps_ticks >= 500)
{
fps_fps = (float) frame_count / .5;
real_time += elapsed_time;
elapsed_time *= speed;
game_time += elapsed_time;
-
+
Scripting::update_debugger();
Scripting::TimeScheduler::instance->update(game_time);
current_screen->update(elapsed_time);
if(screen_fade.get() != NULL)
screen_fade->update(elapsed_time);
Console::instance->update(elapsed_time);
-
+
main_controller->update();
SDL_Event event;
while(SDL_PollEvent(&event)) {
}
sound_manager->update();
+
+ //log_info << "== periodic rand() = " << systemRandom.rand() << std::endl;
}
}
-