X-Git-Url: https://git.verplant.org/?a=blobdiff_plain;f=src%2Fmainloop.hpp;h=47621f3480d77a43e7aa674218949f244730e821;hb=e57c65e0862b48e91fd1b24916c662dd38ec4419;hp=8be8b11d9d4ad64780d57da3556eb0d37dbeb7f6;hpb=07ddaed2a657e4d2a3d038fed223fc5827159caf;p=supertux.git diff --git a/src/mainloop.hpp b/src/mainloop.hpp index 8be8b11d9..47621f348 100644 --- a/src/mainloop.hpp +++ b/src/mainloop.hpp @@ -21,9 +21,12 @@ #include #include +#include "scripting/thread_queue.hpp" class Screen; class Console; +class ScreenFade; +class DrawingContext; class MainLoop { @@ -32,20 +35,28 @@ public: ~MainLoop(); void run(); - void exit_screen(); - void quit(); + void exit_screen(ScreenFade* fade = NULL); + void quit(ScreenFade* fade = NULL); void set_speed(float speed); // push new screen on screen_stack - void push_screen(Screen* screen); + void push_screen(Screen* screen, ScreenFade* fade = NULL); + void set_screen_fade(ScreenFade* fade); + + /// threads that wait for a screenswitch + Scripting::ThreadQueue waiting_threads; private: + void draw_fps(DrawingContext& context, float fps); + bool running; float speed; + bool nextpop; bool nextpush; std::auto_ptr next_screen; std::auto_ptr current_screen; std::auto_ptr console; + std::auto_ptr screen_fade; std::vector screen_stack; };