Just made the intro's Tux to honour the keys chosen by the user.
[supertux.git] / src / title.cpp
index 0dfe8d6..ac89c35 100644 (file)
@@ -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;