X-Git-Url: https://git.octo.it/?a=blobdiff_plain;f=src%2Fmain.cpp;h=caf7812f79e5b285b827e451baba61355cc567ef;hb=838a67f8413350edca83e4f024a9e158689421fb;hp=16a9cd051849cb10a6d2cc55254bda2ca3cec4ae;hpb=795f0b283fcb1c8777723dc1cc850826d39c6806;p=supertux.git diff --git a/src/main.cpp b/src/main.cpp index 16a9cd051..caf7812f7 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -20,7 +20,7 @@ #include #include -#include "main.h" +#include "main.hpp" #include #include @@ -38,17 +38,18 @@ #include #include -#include "gameconfig.h" -#include "resources.h" -#include "gettext.h" -#include "audio/sound_manager.h" -#include "video/surface.h" -#include "control/joystickkeyboardcontroller.h" -#include "misc.h" -#include "title.h" -#include "game_session.h" -#include "file_system.h" -#include "physfs/physfs_sdl.h" +#include "gameconfig.hpp" +#include "resources.hpp" +#include "gettext.hpp" +#include "audio/sound_manager.hpp" +#include "video/surface.hpp" +#include "video/texture_manager.hpp" +#include "control/joystickkeyboardcontroller.hpp" +#include "misc.hpp" +#include "title.hpp" +#include "game_session.hpp" +#include "file_system.hpp" +#include "physfs/physfs_sdl.hpp" SDL_Surface* screen = 0; JoystickKeyboardController* main_controller = 0; @@ -182,11 +183,14 @@ static void print_usage(const char* argv0) fprintf(stderr, _("Usage: %s [OPTIONS] LEVELFILE\n\n"), argv0); fprintf(stderr, _("Options:\n" - " -f, --fullscreen Run in fullscreen mode.\n" - " -w, --window Run in window mode.\n" - " -g, --geometry WIDTHxHEIGHT Run SuperTux in give resolution\n" + " -f, --fullscreen Run in fullscreen mode\n" + " -w, --window Run in window mode\n" + " -g, --geometry WIDTHxHEIGHT Run SuperTux in given resolution\n" " --help Show this help message\n" " --version Display SuperTux version and quit\n" + " --show-fps Display framerate in levels\n" + " --record-demo FILE LEVEL Record a demo to FILE\n" + " --play-demo FILE LEVEL Play a recorded demo\n" "\n")); } @@ -298,6 +302,9 @@ static void check_gl_error() void init_video() { + if(texture_manager != NULL) + texture_manager->save_textures(); + SDL_GL_SetAttribute(SDL_GL_DOUBLEBUFFER, 1); SDL_GL_SetAttribute(SDL_GL_RED_SIZE, 5); SDL_GL_SetAttribute(SDL_GL_GREEN_SIZE, 5); @@ -336,6 +343,9 @@ void init_video() // setup opengl state and transform glDisable(GL_DEPTH_TEST); glDisable(GL_CULL_FACE); + glEnable(GL_TEXTURE_2D); + glEnable(GL_BLEND); + glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); glViewport(0, 0, screen->w, screen->h); glMatrixMode(GL_PROJECTION); @@ -348,7 +358,10 @@ void init_video() check_gl_error(); - Surface::reload_all(); + if(texture_manager != NULL) + texture_manager->reload_textures(); + else + texture_manager = new TextureManager(); } static void init_audio() @@ -374,7 +387,11 @@ void wait_for_event(float min_delay, float max_delay) Uint32 min = (Uint32) (min_delay * 1000); Uint32 max = (Uint32) (max_delay * 1000); - SDL_Delay(min); + Uint32 ticks = SDL_GetTicks(); + while(SDL_GetTicks() - ticks < min) { + SDL_Delay(10); + sound_manager->update(); + } // clear even queue SDL_Event event; @@ -383,7 +400,7 @@ void wait_for_event(float min_delay, float max_delay) /* Handle events: */ bool running = false; - Uint32 ticks = SDL_GetTicks(); + ticks = SDL_GetTicks(); while(running) { while(SDL_PollEvent(&event)) { switch(event.type) { @@ -443,15 +460,13 @@ int main(int argc, char** argv) free_menu(); unload_shared(); -#ifdef DEBUG - Surface::debug_check(); -#endif quit_audio(); if(config) config->save(); delete config; delete main_controller; + delete texture_manager; SDL_Quit(); PHYSFS_deinit();