X-Git-Url: https://git.verplant.org/?a=blobdiff_plain;f=src%2Ftitle.cpp;h=ac89c3503ea18f3d50962a1d38524335bbf05dc5;hb=aadeec2cf6fc7a7f20d1ca43ac87e972b8e1840e;hp=0dfe8d697051fc1cb1a467cf7c1bd74c88ceb6a1;hpb=84160722392a024dda42bd86ca9bd85b68c49457;p=supertux.git diff --git a/src/title.cpp b/src/title.cpp index 0dfe8d697..ac89c3503 100644 --- a/src/title.cpp +++ b/src/title.cpp @@ -58,7 +58,7 @@ static Surface* img_choose_subset; static bool walking; static Timer random_timer; -static int frame, i; +static int frame; static unsigned int last_update_time; static unsigned int update_time; @@ -139,6 +139,7 @@ void check_contrib_subset_menu() { index -= 1; // FIXME: Hack std::cout << "Sarting level: " << index << std::endl; + halt_music(); GameSession session(current_contrib_subset, index, ST_GL_PLAY); session.run(); Menu::set_current(main_menu); @@ -159,6 +160,8 @@ void draw_demo(GameSession* session, double frame_ratio) //World* world = session->get_world(); Level* plevel = session->get_level(); Player* tux = session->get_world()->get_tux(); + + session->get_world()->play_music(LEVEL_MUSIC); /* FIXME: // update particle systems @@ -186,14 +189,14 @@ void draw_demo(GameSession* session, double frame_ratio) } global_frame_counter++; - tux->key_event(SDLK_RIGHT,DOWN); + tux->key_event((SDLKey) keymap.right,DOWN); if(random_timer.check()) { if(walking) - tux->key_event(SDLK_UP,UP); + tux->key_event((SDLKey) keymap.jump,UP); else - tux->key_event(SDLK_UP,DOWN); + tux->key_event((SDLKey) keymap.jump,DOWN); } else { @@ -265,12 +268,9 @@ void title(void) { Menu::current()->event(event); } - else - { - // FIXME: QUIT signal should be handled more generic, not locally - if (event.type == SDL_QUIT) - Menu::set_current(0); - } + // FIXME: QUIT signal should be handled more generic, not locally + if (event.type == SDL_QUIT) + Menu::set_current(0); } /* Draw the background: */ @@ -308,6 +308,7 @@ void title(void) generate_contrib_menu(); break; case 3: + halt_music(); leveleditor(1); Menu::set_current(main_menu); break; @@ -315,7 +316,7 @@ void title(void) display_credits(); Menu::set_current(main_menu); break; - case 5: + case 6: Menu::set_current(0); break; } @@ -356,7 +357,6 @@ void title(void) /* Pause: */ frame++; SDL_Delay(25); - } /* Free surfaces: */ @@ -367,13 +367,14 @@ void title(void) #define MAX_VEL 10 #define SPEED 1 #define SCROLL 60 +#define ITEMS_SPACE 4 void display_credits() { int done; int scroll, speed; + int y; Timer timer; - int n,d; int length; FILE* fi; char temp[1024]; @@ -406,8 +407,6 @@ void display_credits() speed = 2; done = 0; - n = d = 0; - length = names.num_items; SDL_EnableKeyRepeat(SDL_DEFAULT_REPEAT_DELAY, SDL_DEFAULT_REPEAT_INTERVAL); @@ -458,26 +457,33 @@ void display_credits() white_big_text->drawf("- Credits -", 0, screen->h-scroll, A_HMIDDLE, A_TOP, 2); - for(i = 0, n = 0, d = 0; i < length; i++,n++,d++) + y = 0; + for(int i = 0; i < length; i++) { - if(names.item[i] == "") - n--; - else - { - if(names.item[i][0] == ' ') - white_small_text->drawf(names.item[i], 0, 60+screen->h+(n*18)+(d*18)-scroll-10, A_HMIDDLE, A_TOP, 1); - else if(names.item[i][0] == ' ') - white_text->drawf(names.item[i], 0, 60+screen->h+(n*18)+(d*18)-scroll, A_HMIDDLE, A_TOP, 1); - else if(names.item[i+1][0] == '-' || names.item[i][0] == '-') - white_big_text->drawf(names.item[i], 0, 60+screen->h+(n*18)+(d*18)-scroll, A_HMIDDLE, A_TOP, 3); - else - blue_text->drawf(names.item[i], 0, 60+screen->h+(n*18)+(d*18)-scroll, A_HMIDDLE, A_TOP, 1); - } + switch(names.item[i][0]) + { + case ' ': + white_small_text->drawf(names.item[i], 0, 60+screen->h+y-scroll, A_HMIDDLE, A_TOP, 1); + y += white_small_text->h+ITEMS_SPACE; + break; + case ' ': + white_text->drawf(names.item[i], 0, 60+screen->h+y-scroll, A_HMIDDLE, A_TOP, 1); + y += white_text->h+ITEMS_SPACE; + break; + case '-': + white_big_text->drawf(names.item[i], 0, 60+screen->h+y-scroll, A_HMIDDLE, A_TOP, 3); + y += white_big_text->h+ITEMS_SPACE; + break; + default: + blue_text->drawf(names.item[i], 0, 60+screen->h+y-scroll, A_HMIDDLE, A_TOP, 1); + y += blue_text->h+ITEMS_SPACE; + break; + } } flipscreen(); - if(60+screen->h+(n*18)+(d*18)-scroll < 0 && 20+60+screen->h+(n*18)+(d*18)-scroll < 0) + if(60+screen->h+y-scroll < 0 && 20+60+screen->h+y-scroll < 0) done = 1; scroll += speed;