- fixed credits screen a bit
[supertux.git] / src / title.cpp
index 04d5298..2b5d1f7 100644 (file)
 #include "player.h"
 #include "math.h"
 
-static texture_type bkg_title, img_choose_subset, anim1, anim2;
+void loadshared(void);
+void activate_particle_systems(void);
+
+static texture_type bkg_title;
+static texture_type logo;
+static texture_type img_choose_subset;
+
 static SDL_Event event;
 static SDLKey key;
-static int frame, pict, i;
+static int frame, i;
 static unsigned int last_update_time;
 static unsigned int update_time;
 
@@ -53,41 +59,29 @@ void draw_background()
   /* Draw the title background: */
 
   texture_draw_bg(&bkg_title);
-
-  /* Animate title screen: */
-
-  pict = (frame / 5) % 3;
-
-  if (pict == 0)
-    texture_draw_part(&bkg_title, 560, 270, 560, 270, 80, 75);
-  else if (pict == 1)
-    texture_draw(&anim1, 560, 270);
-  else if (pict == 2)
-    texture_draw(&anim2, 560, 270);
 }
 
-void loadshared(void);
-void activate_particle_systems(void);
 /* --- TITLE SCREEN --- */
 
 int title(void)
 {
   int done;
-  char str[80];
   string_list_type level_subsets;
   st_subset subset;
   level_subsets = dsubdirs("/levels", "info");
+  timer_type random_timer;
+  timer_init(&random_timer, true);
+  bool walking = true;
   Player titletux;
   titletux.init();
   st_pause_ticks_init();
-  st_pause_ticks_stop();
 
   level_load(&current_level, (datadir + "/levels/misc/menu.stl").c_str());
   loadshared();
   activate_particle_systems();
   /* Lower the gravity that tux doesn't jump to hectically through the demo */
-  gravity = 5;
-  
+  //gravity = 5;
+
   /* Reset menu variables */
   menu_reset();
   Menu::set_current(main_menu);
@@ -97,9 +91,8 @@ int title(void)
 
   /* Load images: */
 
-  texture_load(&bkg_title,datadir + "/images/title/title.png", IGNORE_ALPHA);
-  texture_load(&anim1,datadir + "/images/title/title-anim2.png", IGNORE_ALPHA);
-  texture_load(&anim2,datadir + "/images/title/title-anim1.png", IGNORE_ALPHA);
+  texture_load(&bkg_title,datadir + "/images/title/background.jpg", IGNORE_ALPHA);
+  texture_load(&logo,datadir + "/images/title/logo.png", USE_ALPHA);
   texture_load(&img_choose_subset,datadir + "/images/status/choose-level-subset.png", USE_ALPHA);
 
   /* --- Main title loop: --- */
@@ -114,21 +107,23 @@ int title(void)
   load_hs();
 
   update_time = st_get_ticks();
-  
+  timer_start(&random_timer, rand() % 2000 + 2000);
+
   while (!done && !quit)
     {
-    
+
       /* Calculate the movement-factor */
       frame_ratio = ((double)(update_time-last_update_time))/((double)FRAME_RATE);
       if(frame_ratio > 1.5) /* Quick hack to correct the unprecise CPU clocks a little bit. */
         frame_ratio = 1.5 + (frame_ratio - 1.5) * 0.85;
       /* Lower the frame_ratio that Tux doesn't jump to hectically throught the demo. */
       frame_ratio /= 2;
-    
+
       /* Handle events: */
 
       while (SDL_PollEvent(&event))
         {
+       menu_event(event);
           if (event.type == SDL_QUIT)
             {
               /* Quit event - quit: */
@@ -141,7 +136,7 @@ int title(void)
               key = event.key.keysym.sym;
 
               /* Check for menu events */
-              menu_event(&event.key.keysym);
+              //menu_event(event);
 
               if (key == SDLK_ESCAPE)
                 {
@@ -150,20 +145,8 @@ int title(void)
                   quit = 1;
                 }
             }
-          else if (event.type == SDL_JOYAXISMOTION && event.jaxis.axis == JOY_Y)
-            {
-              if (event.jaxis.value > 1024)
-                menuaction = MENU_ACTION_DOWN;
-              else if (event.jaxis.value < -1024)
-                menuaction = MENU_ACTION_UP;
-            }
-          else if (event.type == SDL_JOYBUTTONDOWN)
-            {
-              /* Joystick button: Continue: */
-              menuaction = MENU_ACTION_HIT;
-            }
         }
-       
+
       /* Draw the background: */
       draw_background();
 
@@ -194,25 +177,39 @@ int title(void)
 
       global_frame_counter++;
       titletux.key_event(SDLK_RIGHT,DOWN);
-      titletux.key_event(SDLK_UP,DOWN);
 
-      if(current_level.width * 32 - 320 < titletux.base.x)
-      {
-      titletux.base.x = 160;
-      scroll_x = 0;
-      }
       
+      if(timer_check(&random_timer))
+        {
+         if(walking)
+          titletux.key_event(SDLK_UP,UP);
+         else
+         titletux.key_event(SDLK_UP,DOWN);
+        }
+      else
+        {
+          timer_start(&random_timer, rand() % 3000 + 3000);
+         walking = !walking;
+        }
+
+      if(current_level.width * 32 - 320 < titletux.base.x)
+        {
+          titletux.base.x = 160;
+          scroll_x = 0;
+        }
+
       titletux.action();
       titletux.draw();
-      
+
       /* DEMO end */
 
       /* Draw the high score: */
+      /*
       sprintf(str, "High score: %d", hs_score);
       text_drawf(&gold_text, str, 0, -40, A_HMIDDLE, A_BOTTOM, 1);
       sprintf(str, "by %s", hs_name);
       text_drawf(&gold_text, str, 0, -20, A_HMIDDLE, A_BOTTOM, 1);
-
+      */
 
       /* Don't draw menu, if quit is true */
       if(show_menu && !quit)
@@ -294,6 +291,10 @@ int title(void)
                         }
                     }
                 }
+              // reset tux
+              scroll_x = 0;
+              titletux.level_begin();
+              update_time = st_get_ticks();
               break;
             case 3:
               update_load_save_game_menu(load_game_menu, true);
@@ -318,13 +319,17 @@ int title(void)
         {
           process_save_load_game_menu(false);
         }
-       
+
+      texture_draw(&logo, 160, 30);
+
+      mouse_cursor->draw();
+      
       flipscreen();
 
       /* Set the time of the last update and the time of the current update */
       last_update_time = update_time;
       update_time = st_get_ticks();
-      
+
       /* Pause: */
       frame++;
       SDL_Delay(25);
@@ -332,10 +337,8 @@ int title(void)
     }
   /* Free surfaces: */
 
-  level_free(&current_level);
   texture_free(&bkg_title);
-  texture_free(&anim1);
-  texture_free(&anim2);
+  texture_free(&logo);
   string_list_free(&level_subsets);
 
   /* Return to main! */
@@ -453,9 +456,6 @@ void display_credits()
             }
         }
 
-
-      texture_draw_part(&bkg_title, 0, 0, 0, 0, 640, 130);
-
       flipscreen();
 
       if(60+screen->h+(n*18)+(d*18)-scroll < 0 && 20+60+screen->h+(n*18)+(d*18)-scroll < 0)