X-Git-Url: https://git.verplant.org/?a=blobdiff_plain;f=src%2Fsetup.cpp;h=24397e8bcd82fe712b9787d6d7ecfee888db22d5;hb=820473dd8331f9c8949f0d492162fa9d1860ca90;hp=a1c8af96caa7b2bb1e66a07574c1a12223032bd4;hpb=989b4b7cf6eb648bc2395742e23f0cdba6574427;p=supertux.git diff --git a/src/setup.cpp b/src/setup.cpp index a1c8af96c..24397e8bc 100644 --- a/src/setup.cpp +++ b/src/setup.cpp @@ -11,6 +11,7 @@ */ #include +#include #include #include #include @@ -40,6 +41,7 @@ #include "gameloop.h" #include "configfile.h" #include "scene.h" +#include "worldmap.h" #ifdef WIN32 #define mkdir(dir, mode) mkdir(dir) @@ -373,6 +375,11 @@ void st_menu(void) options_menu->additem(MN_LABEL,"Options",0,0); options_menu->additem(MN_HL,"",0,0); +#ifndef NOOPENGL + options_menu->additem(MN_TOGGLE,"OpenGL",use_gl,0); +#else + options_menu->additem(MN_DEACTIVE,"OpenGL (not supported)",use_gl,0); +#endif options_menu->additem(MN_TOGGLE,"Fullscreen",use_fullscreen,0); if(audio_device) { @@ -415,18 +422,17 @@ void st_menu(void) save_game_menu->additem(MN_HL,"",0,0); save_game_menu->additem(MN_BACK,"Back",0,0); - game_menu->additem(MN_LABEL,"InGame Menu",0,0); + game_menu->additem(MN_LABEL,"Pause",0,0); game_menu->additem(MN_HL,"",0,0); - game_menu->additem(MN_ACTION,"Return To Game",0,0); - game_menu->additem(MN_GOTO,"Save Game",0,save_game_menu); - game_menu->additem(MN_GOTO,"Load Game",0,load_game_menu); + game_menu->additem(MN_ACTION,"Continue",0,0); game_menu->additem(MN_GOTO,"Options",0,options_menu); game_menu->additem(MN_HL,"",0,0); - game_menu->additem(MN_ACTION,"Quit Game",0,0); + game_menu->additem(MN_ACTION,"Abort Level",0,0); - worldmap_menu->additem(MN_LABEL,"Worldmap Menu",0,0); + worldmap_menu->additem(MN_LABEL,"Pause",0,0); worldmap_menu->additem(MN_HL,"",0,0); - worldmap_menu->additem(MN_ACTION,"Return To Game",0,0); + worldmap_menu->additem(MN_ACTION,"Continue",0,0); + worldmap_menu->additem(MN_ACTION,"Save",0,0); worldmap_menu->additem(MN_GOTO,"Options",0,options_menu); worldmap_menu->additem(MN_HL,"",0,0); worldmap_menu->additem(MN_ACTION,"Quit Game",0,0); @@ -434,66 +440,37 @@ void st_menu(void) highscore_menu->additem(MN_TEXTFIELD,"Enter your name:",0,0); } -void update_load_save_game_menu(Menu* pmenu, int load) +void update_load_save_game_menu(Menu* pmenu) { for(int i = 2; i < 7; ++i) { // FIXME: Insert a real savegame struct/class here instead of // doing string vodoo - std::string tmp = slotinfo(i-1); - - if(load && tmp.length() == strlen("Slot X - Free")) - pmenu->item[i].kind = MN_ACTION; - else - pmenu->item[i].kind = MN_ACTION; + std::string tmp = slotinfo(i - 1); + pmenu->item[i].kind = MN_ACTION; pmenu->item[i].change_text(tmp.c_str()); } } -void process_save_game_menu() -{ - int slot = save_game_menu->check(); - if (slot != -1) - GameSession::current()->savegame(slot - 1); -} - bool process_load_game_menu() { int slot = load_game_menu->check(); if(slot != -1) { - // FIXME: Insert a real savegame struct/class here instead of - // doing string vodoo - std::string tmp = slotinfo(slot-1); + WorldMapNS::WorldMap worldmap; - if (tmp.length() == strlen("Slot X - Free")) - { // Slot is free, so start a new game - GameSession session("default", 1, ST_GL_PLAY); - session.run(); + char slotfile[1024]; + snprintf(slotfile, 1024, "%s/slot%d.stsg", st_save_dir, slot-1); + + // Load the game or at least set the savegame_file variable + worldmap.loadgame(slotfile); - show_menu = true; - Menu::set_current(main_menu); - } - else - { - puts("Warning: Loading games isn't supported at the moment"); -#if 0 - // Slot contains a level, so load it - if (game_started) - { - GameSession session("default",slot - 1,ST_GL_LOAD_GAME); - session.run(); + worldmap.display(); + + show_menu = true; + Menu::set_current(main_menu); - show_menu = true; - Menu::set_current(main_menu); - } - else - { - //loadgame(slot - 1); - } -#endif - } st_pause_ticks_stop(); return true; } @@ -509,18 +486,27 @@ void process_options_menu(void) switch (options_menu->check()) { case 2: - if(use_fullscreen != options_menu->item[2].toggled) +#ifndef NOOPENGL + if(use_gl != options_menu->item[2].toggled) { - use_fullscreen = !use_fullscreen; + use_gl = !use_gl; st_video_setup(); } +#endif break; case 3: - if(use_sound != options_menu->item[3].toggled) - use_sound = !use_sound; + if(use_fullscreen != options_menu->item[3].toggled) + { + use_fullscreen = !use_fullscreen; + st_video_setup(); + } break; case 4: - if(use_music != options_menu->item[4].toggled) + if(use_sound != options_menu->item[4].toggled) + use_sound = !use_sound; + break; + case 5: + if(use_music != options_menu->item[5].toggled) { if(use_music) { @@ -540,8 +526,8 @@ void process_options_menu(void) } } break; - case 5: - if(show_fps != options_menu->item[5].toggled) + case 6: + if(show_fps != options_menu->item[6].toggled) show_fps = !show_fps; break; } @@ -563,21 +549,21 @@ void st_general_setup(void) /* Load global images: */ - text_load(&black_text, datadir + "/images/status/letters-black.png", TEXT_TEXT, 16,18); - text_load(&gold_text,datadir + "/images/status/letters-gold.png", TEXT_TEXT, 16,18); - text_load(&blue_text,datadir + "/images/status/letters-blue.png", TEXT_TEXT, 16,18); - text_load(&red_text,datadir + "/images/status/letters-red.png", TEXT_TEXT, 16,18); - text_load(&white_text,datadir + "/images/status/letters-white.png", TEXT_TEXT, 16,18); - text_load(&white_small_text,datadir + "/images/status/letters-white-small.png", TEXT_TEXT, 8,9); - text_load(&white_big_text,datadir + "/images/status/letters-white-big.png", TEXT_TEXT, 20,23); - text_load(&yellow_nums,datadir + "/images/status/numbers.png", TEXT_NUM, 32,32); + black_text = new Text(datadir + "/images/status/letters-black.png", TEXT_TEXT, 16,18); + gold_text = new Text(datadir + "/images/status/letters-gold.png", TEXT_TEXT, 16,18); + blue_text = new Text(datadir + "/images/status/letters-blue.png", TEXT_TEXT, 16,18); + red_text = new Text(datadir + "/images/status/letters-red.png", TEXT_TEXT, 16,18); + white_text = new Text(datadir + "/images/status/letters-white.png", TEXT_TEXT, 16,18); + white_small_text = new Text(datadir + "/images/status/letters-white-small.png", TEXT_TEXT, 8,9); + white_big_text = new Text(datadir + "/images/status/letters-white-big.png", TEXT_TEXT, 20,23); + yellow_nums = new Text(datadir + "/images/status/numbers.png", TEXT_NUM, 32,32); /* Load GUI/menu images: */ - texture_load(&checkbox, datadir + "/images/status/checkbox.png", USE_ALPHA); - texture_load(&checkbox_checked, datadir + "/images/status/checkbox-checked.png", USE_ALPHA); - texture_load(&back, datadir + "/images/status/back.png", USE_ALPHA); - texture_load(&arrow_left, datadir + "/images/icons/left.png", USE_ALPHA); - texture_load(&arrow_right, datadir + "/images/icons/right.png", USE_ALPHA); + checkbox = new Surface(datadir + "/images/status/checkbox.png", USE_ALPHA); + checkbox_checked = new Surface(datadir + "/images/status/checkbox-checked.png", USE_ALPHA); + back = new Surface(datadir + "/images/status/back.png", USE_ALPHA); + arrow_left = new Surface(datadir + "/images/icons/left.png", USE_ALPHA); + arrow_right = new Surface(datadir + "/images/icons/right.png", USE_ALPHA); /* Load the mouse-cursor */ mouse_cursor = new MouseCursor( datadir + "/images/status/mousecursor.png",1); @@ -589,20 +575,20 @@ void st_general_free(void) /* Free global images: */ - text_free(&black_text); - text_free(&gold_text); - text_free(&white_text); - text_free(&blue_text); - text_free(&red_text); - text_free(&white_small_text); - text_free(&white_big_text); + delete black_text; + delete gold_text; + delete white_text; + delete blue_text; + delete red_text; + delete white_small_text; + delete white_big_text; /* Free GUI/menu images: */ - texture_free(&checkbox); - texture_free(&checkbox_checked); - texture_free(&back); - texture_free(&arrow_left); - texture_free(&arrow_right); + delete checkbox; + delete checkbox_checked; + delete back; + delete arrow_left; + delete arrow_right; /* Free mouse-cursor */ delete mouse_cursor; @@ -618,7 +604,6 @@ void st_general_free(void) void st_video_setup(void) { - if(screen != NULL) SDL_FreeSurface(screen); @@ -634,18 +619,15 @@ void st_video_setup(void) } /* Open display: */ - if(use_gl) st_video_setup_gl(); else st_video_setup_sdl(); - texture_setup(); + Surface::reload_all(); /* Set window manager stuff: */ - SDL_WM_SetCaption("SuperTux " VERSION, "SuperTux"); - } void st_video_setup_sdl(void)