MainLoop* main_loop = NULL;
MainLoop::MainLoop()
- : speed(1.0), nextpop(false), nextpush(false)
+ : speed(1.0), nextpop(false), nextpush(false), fps(0), screenshot_requested(false)
{
using namespace Scripting;
TimeScheduler::instance = new TimeScheduler();
this->speed = speed;
}
+float
+MainLoop::get_speed() const
+{
+ return speed;
+}
+
void
MainLoop::draw_fps(DrawingContext& context, float fps_fps)
{
char str[60];
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_HUD);
- context.draw_text(gold_text, str, Vector(SCREEN_WIDTH - BORDER_X, BORDER_Y + 20), RIGHT_ALLIGN, LAYER_HUD);
+ 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), ALIGN_LEFT, LAYER_HUD);
+ context.draw_text(gold_text, str, Vector(SCREEN_WIDTH - BORDER_X, BORDER_Y + 20), ALIGN_RIGHT, LAYER_HUD);
}
void
if(config->show_fps)
draw_fps(context, fps);
+ // if a screenshot was requested, pass request on to drawing_context
+ if (screenshot_requested) {
+ context.take_screenshot();
+ screenshot_requested = false;
+ }
context.do_drawing();
/* Calculate frames per second */
Menu::current()->event(event);
if(event.type == SDL_QUIT)
quit();
+ else if (event.type == SDL_KEYDOWN && event.key.keysym.sym == SDLK_F11) {
+ config->use_fullscreen = !config->use_fullscreen;
+ init_video();
+ }
+ else if (event.type == SDL_KEYDOWN && event.key.keysym.sym == SDLK_PRINT) {
+ take_screenshot();
+ }
}
}
}
void
-MainLoop::run()
+MainLoop::run(DrawingContext &context)
{
- DrawingContext context;
-
Uint32 last_ticks = 0;
Uint32 elapsed_ticks = 0;
SDL_Delay(0);
}
}
+
+void
+MainLoop::take_screenshot()
+{
+ screenshot_requested = true;
+}
+