Huge code merge. This reflects the current status of my rewrite/restructuring. A...
[supertux.git] / src / title.c
index 28aa3ef..0c66575 100644 (file)
@@ -7,7 +7,7 @@
   bill@newbreedsoftware.com
   http://www.newbreedsoftware.com/supertux/
   
-  April 11, 2000 - December 9, 2003
+  April 11, 2000 - December 29, 2003
 */
 
 #include <stdio.h>
 #include "screen.h"
 #include "high_scores.h"
 #include "menu.h"
+#include "type.h"
 
 
 /* --- TITLE SCREEN --- */
 
 int title(void)
 {
-  SDL_Surface * title, * anim1, * anim2;
+  texture_type title, anim1, anim2;
   SDL_Event event;
   SDLKey key;
-  int done, quit, frame, pict;
+  int done, quit, frame, pict, last_highscore;
   char str[80];
 
   game_started = 0;
+  level_editor_started = 0;
 
   /* Init menu variables */
   initmenu();
 
+  clearscreen(0, 0, 0);
   updatescreen();
 
-
   /* Load images: */
 
-  title = load_image(DATA_PREFIX "/images/title/title.png", IGNORE_ALPHA);
-  anim1 = load_image(DATA_PREFIX "/images/title/title-anim2.png",
-                     IGNORE_ALPHA);
-  anim2 = load_image(DATA_PREFIX "/images/title/title-anim1.png",
-                     IGNORE_ALPHA);
+  texture_load(&title,DATA_PREFIX "/images/title/title.png", IGNORE_ALPHA);
+  texture_load(&anim1,DATA_PREFIX "/images/title/title-anim2.png", IGNORE_ALPHA);
+  texture_load(&anim2,DATA_PREFIX "/images/title/title-anim1.png", IGNORE_ALPHA);
 
 
   /* --- Main title loop: --- */
@@ -69,15 +69,17 @@ int title(void)
 
 
   /* Draw the title background: */
-  drawimage(title, 0, 0, UPDATE);
+  texture_draw(&title, 0, 0, NO_UPDATE);
 
 
   /* Draw the high score: */
-  sprintf(str, "High score: %d", load_hs());
-  drawcenteredtext(str, 460, letters_red, UPDATE);
+  last_highscore = load_hs();
+  sprintf(str, "High score: %d", last_highscore);
+  drawcenteredtext(str, 460, letters_red, NO_UPDATE, 1);
 
   while (!done && !quit)
     {
+      
       frame++;
 
 
@@ -88,7 +90,6 @@ int title(void)
           if (event.type == SDL_QUIT)
             {
               /* Quit event - quit: */
-
               quit = 1;
             }
           else if (event.type == SDL_KEYDOWN)
@@ -97,6 +98,9 @@ int title(void)
 
               key = event.key.keysym.sym;
 
+              /* Check for menu events */
+              menu_event(key);
+
               if (key == SDLK_ESCAPE)
                 {
                   /* Escape: Quit: */
@@ -104,12 +108,6 @@ int title(void)
                   quit = 1;
                 }
             }
-          else if (event.type == SDL_KEYUP)
-            {
-              key = event.key.keysym.sym;
-              /* Check for menu events */
-              menu_event(key);
-            }
 #ifdef JOY_YES
           else if (event.type == SDL_JOYAXISMOTION)
             {
@@ -129,22 +127,22 @@ int title(void)
 
         }
 
-      if(menu_change)
+      if(use_gl || menu_change)
         {
           /* Draw the title background: */
 
-          drawimage(title, 0, 0, UPDATE);
+          texture_draw_bg(&title, NO_UPDATE);
 
           /* Draw the high score: */
-          sprintf(str, "High score: %d", load_hs());
-          drawcenteredtext(str, 460, letters_red, UPDATE);
+          sprintf(str, "High score: %d", last_highscore);
+          drawcenteredtext(str, 460, letters_red, NO_UPDATE, 1);
         }
 
       /* Don't draw menu, if quit is true */
       if(show_menu && !quit)
         quit = drawmenu();
 
-      if(game_started)
+      if(game_started || level_editor_started)
         done = 1;
 
       /* Animate title screen: */
@@ -152,13 +150,13 @@ int title(void)
       pict = (frame / 5) % 3;
 
       if (pict == 0)
-        drawpart(title, 560, 270, 80, 75, UPDATE);
+        texture_draw_part(&title, 560, 270, 80, 75, NO_UPDATE);
       else if (pict == 1)
-        drawimage(anim1, 560, 270, UPDATE);
+        texture_draw(&anim1, 560, 270, NO_UPDATE);
       else if (pict == 2)
-        drawimage(anim2, 560, 270, UPDATE);
-
+        texture_draw(&anim2, 560, 270, NO_UPDATE);
 
+      flipscreen();
 
       /* Pause: */
 
@@ -169,9 +167,9 @@ int title(void)
 
   /* Free surfaces: */
 
-  SDL_FreeSurface(title);
-  SDL_FreeSurface(anim1);
-  SDL_FreeSurface(anim2);
+  texture_free(&title);
+  texture_free(&anim1);
+  texture_free(&anim2);
 
 
   /* Return to main! */