We have our own mouse-cursor now! (graphics by Settra Gaia)
[supertux.git] / src / title.cpp
index 04d5298..a6f24fd 100644 (file)
@@ -39,6 +39,9 @@
 #include "player.h"
 #include "math.h"
 
+void loadshared(void);
+void activate_particle_systems(void);
+
 static texture_type bkg_title, img_choose_subset, anim1, anim2;
 static SDL_Event event;
 static SDLKey key;
@@ -66,8 +69,6 @@ void draw_background()
     texture_draw(&anim2, 560, 270);
 }
 
-void loadshared(void);
-void activate_particle_systems(void);
 /* --- TITLE SCREEN --- */
 
 int title(void)
@@ -77,6 +78,9 @@ int title(void)
   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();
@@ -87,7 +91,7 @@ int title(void)
   activate_particle_systems();
   /* Lower the gravity that tux doesn't jump to hectically through the demo */
   gravity = 5;
-  
+
   /* Reset menu variables */
   menu_reset();
   Menu::set_current(main_menu);
@@ -114,21 +118,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 +147,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 +156,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,17 +188,30 @@ 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: */
@@ -318,13 +325,15 @@ int title(void)
         {
           process_save_load_game_menu(false);
         }
-       
+
+      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,7 +341,6 @@ int title(void)
     }
   /* Free surfaces: */
 
-  level_free(&current_level);
   texture_free(&bkg_title);
   texture_free(&anim1);
   texture_free(&anim2);
@@ -455,7 +463,7 @@ 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)