draw*text <- functions can now specify the size of the shadow :)
[supertux.git] / src / menu.c
index b2473ac..09e242a 100644 (file)
@@ -7,7 +7,7 @@
   tobi.web@gmx.de
   http://www.newbreedsoftware.com/supertux/
   
-  December 20, 2003
+  December 20, 2003 - December 29, 2003
 */
 
 #ifdef LINUX
@@ -37,324 +37,350 @@ void initmenu(void)
 /* ---- Menu Options - Item Sound On/off ----*/
 void menu_option_sound()
 {
-  if (audio_device == YES) {
-    if(menuitem == 1) {
-       if(use_sound == YES) {
-         drawshadedcenteredtext("Sound ON", 224, letters_red, NO_UPDATE);
-       }
-       else {
-         drawshadedcenteredtext("Sound OFF", 224, letters_red, NO_UPDATE);
-       }
-
-       if(menuaction == MN_HIT) { /* Disable/Enable sound */
-         if(use_sound == YES) {
-           use_sound = NO;
-         }
-         else {
-           use_sound = YES;
-         }
-         menu_change = YES;
-       }
-    }
-    else {
-      if(use_sound == YES)
-        drawshadedcenteredtext("Sound ON", 224, letters_blue, NO_UPDATE);
+  if (audio_device == YES)
+    {
+      if(menuitem == 1)
+        {
+          if(use_sound == YES)
+            {
+              drawcenteredtext("Sound ON", 224, letters_red, NO_UPDATE, 2);
+            }
+          else
+            {
+              drawcenteredtext("Sound OFF", 224, letters_red, NO_UPDATE, 2);
+            }
+
+          if(menuaction == MN_HIT)
+            { /* Disable/Enable sound */
+              if(use_sound == YES)
+                {
+                  use_sound = NO;
+                }
+              else
+                {
+                  use_sound = YES;
+                }
+              menu_change = YES;
+            }
+        }
       else
-        drawshadedcenteredtext("Sound OFF", 224, letters_blue, NO_UPDATE);
-    }
-  }
-  else { /* if audio_device != YES */
-    /* let the user move over the deactivated option */
-    if (menuitem == 1) {
-      drawshadedcenteredtext("Sound OFF", 224, letters_red, NO_UPDATE);
+        {
+          if(use_sound == YES)
+            drawcenteredtext("Sound ON", 224, letters_blue, NO_UPDATE, 2);
+          else
+            drawcenteredtext("Sound OFF", 224, letters_blue, NO_UPDATE, 2);
+        }
     }
-    else {
-      drawshadedcenteredtext("Sound OFF", 224, letters_black, NO_UPDATE);
+  else
+    { /* if audio_device != YES */
+      /* let the user move over the deactivated option */
+      if (menuitem == 1)
+        {
+          drawcenteredtext("Sound OFF", 224, letters_red, NO_UPDATE, 2);
+        }
+      else
+        {
+          drawcenteredtext("Sound OFF", 224, letters_black, NO_UPDATE, 2);
+        }
     }
-  }
 }
 
 
 /* ---- Menu Options - Item Music On/off ----*/
 void menu_option_music()
 {
-  if (audio_device == YES) {
-    if(menuitem == 2) {
-      if(use_music == YES) {
-        drawshadedcenteredtext("Music ON", 256, letters_red, NO_UPDATE);
-      }
-     else {
-        drawshadedcenteredtext("Music OFF", 256, letters_red, NO_UPDATE);
-      }
-      if(menuaction == MN_HIT) { /* Disable/Enable music */
-        if(use_music == YES) {  /* In the menu no music is played, so we have to check only use_music */
-            if(playing_music()) 
-              halt_music();
-             use_music = NO;
-        }
-        else {
-          use_music = YES;
-          if (!playing_music()) {
-            switch (current_music) {
-              case LEVEL_MUSIC:
-                play_music(level_song, 1);
-                break;
-              case HERRING_MUSIC:
-                play_music(herring_song, 1);
-                break;
-              case HURRYUP_MUSIC: // keep the compiler happy
-              case NO_MUSIC:      // keep the compiler happy for the moment :-)
-              {}
-               /*default:*/
-            }
-          }
-        }
-        menu_change = YES;
-      }
-    } /* if menuitem != 2 : print normal blue font */
-    else {
-      if(use_music == YES) {
-        drawshadedcenteredtext("Music ON", 256, letters_blue, NO_UPDATE);
-      }
-      else {
-        drawshadedcenteredtext("Music OFF", 256, letters_blue, NO_UPDATE);
-      }
-    }
-  }
-  else { /* if audio_device != YES */
-   /* let the user move over the deactivated option */
-    if (menuitem == 2) {
-      drawshadedcenteredtext("Music OFF", 256, letters_red, NO_UPDATE);
-    }
-    else {
-      drawshadedcenteredtext("Music OFF", 256, letters_black, NO_UPDATE);
-    }
-  }
-}
-
-int menu_main(void)
-{
-    /* Does the menu item exist? If not, we reset to the most down item */
-      if(menuitem > MENU_MAIN_ITEM_MAX)
-        menuitem =0;
-     else if(menuitem < 0)
-       menuitem = MENU_MAIN_ITEM_MAX;
-       
-      /*The menu looks different, when the game is started */
-          if(menuitem == 0)
+  if (audio_device == YES)
+    {
+      if(menuitem == 2)
+        {
+          if(use_music == YES)
             {
-              drawshadedcenteredtext("Start Game", 192, letters_red, NO_UPDATE);
-              if(menuaction == MN_HIT) /* we are ready to start the game, if this item got hit */
-                {
-                  game_started = 1;
-                  show_menu = 0;
-                }
+              drawcenteredtext("Music ON", 256, letters_red, NO_UPDATE, 2);
             }
           else
-            drawshadedcenteredtext("Start Game", 192, letters_blue, NO_UPDATE);
-
-      if(menuitem == 1)
-        {
-          drawshadedcenteredtext("Options", 224, letters_red, NO_UPDATE);
-          if(menuaction == MN_HIT) /* Switch to the 'Options' menu */
             {
-              menumenu = MENU_OPTIONS;
+              drawcenteredtext("Music OFF", 256, letters_red, NO_UPDATE, 2);
+            }
+          if(menuaction == MN_HIT)
+            { /* Disable/Enable music */
+              if(use_music == YES)
+                {  /* In the menu no music is played, so we have to check only use_music */
+                  if(playing_music())
+                    halt_music();
+                  use_music = NO;
+                }
+              else
+                {
+                  use_music = YES;
+                  if (!playing_music())
+                    {
+                      switch (current_music)
+                        {
+                        case LEVEL_MUSIC:
+                          play_music(level_song, 2);
+                          break;
+                        case HERRING_MUSIC:
+                          play_music(herring_song, 2);
+                          break;
+                        case HURRYUP_MUSIC: // keep the compiler happy
+                        case NO_MUSIC:      // keep the compiler happy for the moment :-)
+                        {}
+                          /*default:*/
+                        }
+                    }
+                }
               menu_change = YES;
             }
-        }
+        } /* if menuitem != 2 : print normal blue font */
       else
-        drawshadedcenteredtext("Options", 224, letters_blue, NO_UPDATE);
-
-      if(menuitem == 2)
         {
-          drawshadedcenteredtext("Level editor", 256, letters_red, NO_UPDATE);
-          if(menuaction == MN_HIT) /* Set variables, so that the level editor is executed */
+          if(use_music == YES)
             {
-               level_editor_started = YES;
-              show_menu = 0;
+              drawcenteredtext("Music ON", 256, letters_blue, NO_UPDATE, 2);
             }
-        }
-      else
-        drawshadedcenteredtext("Level editor", 256, letters_blue, NO_UPDATE);
-       
-      if(menuitem == 3)
-        {
-            drawshadedcenteredtext("Quit", 288, letters_red, NO_UPDATE);
-          if(menuaction == MN_HIT) /* Quit a running game or the application */
+          else
             {
-               return 1;
+              drawcenteredtext("Music OFF", 256, letters_blue, NO_UPDATE, 2);
             }
         }
+    }
+  else
+    { /* if audio_device != YES */
+      /* let the user move over the deactivated option */
+      if (menuitem == 2)
+        {
+          drawcenteredtext("Music OFF", 256, letters_red, NO_UPDATE, 2);
+        }
       else
         {
-            drawshadedcenteredtext("Quit", 288, letters_blue, NO_UPDATE);
+          drawcenteredtext("Music OFF", 256, letters_black, NO_UPDATE, 2);
         }
-
-return 0;
+    }
 }
 
-int menu_game(void)
+int menu_main(void)
 {
-    /* Does the menu item exist? If not, we reset to the most down item */
-      if(menuitem > MENU_GAME_ITEM_MAX)
-        menuitem = 0;
-     else if(menuitem < 0)
-       menuitem = MENU_GAME_ITEM_MAX;
-
-      /*The menu looks different, when the game is started */
-          if(menuitem == 0)
-            {
-              drawshadedcenteredtext("Return To Game", 192, letters_red, NO_UPDATE);
-              if(menuaction == MN_HIT) /* Don't show the menu anymore, if this item got hit */
-                show_menu = 0;
-            }
-          else
-            drawshadedcenteredtext("Return To Game", 192, letters_blue, NO_UPDATE);
+  /* Does the menu item exist? If not, we reset to the most down item */
+  if(menuitem > MENU_MAIN_ITEM_MAX)
+    menuitem =0;
+  else if(menuitem < 0)
+    menuitem = MENU_MAIN_ITEM_MAX;
+
+  /*The menu looks different, when the game is started */
+  if(menuitem == 0)
+    {
+      drawcenteredtext("Start Game", 192, letters_red, NO_UPDATE, 2);
+      if(menuaction == MN_HIT) /* we are ready to start the game, if this item got hit */
+        {
+          game_started = 1;
+          show_menu = 0;
+        }
+    }
+  else
+    drawcenteredtext("Start Game", 192, letters_blue, NO_UPDATE, 2);
 
-      if(menuitem == 1)
+  if(menuitem == 1)
+    {
+      drawcenteredtext("Options", 224, letters_red, NO_UPDATE, 2);
+      if(menuaction == MN_HIT) /* Switch to the 'Options' menu */
         {
-          drawshadedcenteredtext("Options", 224, letters_red, NO_UPDATE);
-          if(menuaction == MN_HIT) /* Switch to the 'Options' menu */
-            {
-              menumenu = MENU_OPTIONS;
-              menu_change = YES;
-            }
+          menumenu = MENU_OPTIONS;
+          menu_change = YES;
         }
-      else
-        drawshadedcenteredtext("Options", 224, letters_blue, NO_UPDATE);
+    }
+  else
+    drawcenteredtext("Options", 224, letters_blue, NO_UPDATE, 2);
 
-      if(menuitem == 2)
+  if(menuitem == 2)
+    {
+      drawcenteredtext("Level editor", 256, letters_red, NO_UPDATE, 2);
+      if(menuaction == MN_HIT) /* Set variables, so that the level editor is executed */
         {
-            drawshadedcenteredtext("Quit Game", 256, letters_red, NO_UPDATE);
-          if(menuaction == MN_HIT) /* Quit a running game */
-               return 1;
+          level_editor_started = YES;
+          show_menu = 0;
         }
-      else
+    }
+  else
+    drawcenteredtext("Level editor", 256, letters_blue, NO_UPDATE, 2);
+
+  if(menuitem == 3)
+    {
+      drawcenteredtext("Quit", 288, letters_red, NO_UPDATE, 2);
+      if(menuaction == MN_HIT) /* Quit a running game or the application */
         {
-            drawshadedcenteredtext("Quit Game", 256, letters_blue, NO_UPDATE);
+          return 1;
         }
+    }
+  else
+    {
+      drawcenteredtext("Quit", 288, letters_blue, NO_UPDATE, 2);
+    }
 
-return 0;
+  return 0;
 }
 
-int menu_options(void)
+int menu_game(void)
 {
-      if(menuitem > MENU_OPTIONS_ITEM_MAX )
-        menuitem = 0;
-     else if(menuitem < 0)
-       menuitem = MENU_OPTIONS_ITEM_MAX;
-       
-      if(menuitem == 0)
+  /* Does the menu item exist? If not, we reset to the most down item */
+  if(menuitem > MENU_GAME_ITEM_MAX)
+    menuitem = 0;
+  else if(menuitem < 0)
+    menuitem = MENU_GAME_ITEM_MAX;
+
+  /*The menu looks different, when the game is started */
+  if(menuitem == 0)
+    {
+      drawcenteredtext("Return To Game", 192, letters_red, NO_UPDATE, 2);
+      if(menuaction == MN_HIT) /* Don't show the menu anymore, if this item got hit */
+        show_menu = 0;
+    }
+  else
+    drawcenteredtext("Return To Game", 192, letters_blue, NO_UPDATE, 2);
+
+  if(menuitem == 1)
+    {
+      drawcenteredtext("Options", 224, letters_red, NO_UPDATE, 2);
+      if(menuaction == MN_HIT) /* Switch to the 'Options' menu */
         {
-          if(use_fullscreen)
-            drawshadedcenteredtext("Fullscreen ON", 192, letters_red, NO_UPDATE);
-          else
-            drawshadedcenteredtext("Fullscreen OFF", 192, letters_red, NO_UPDATE);
-          if(menuaction == MN_HIT) /* Disable/Enable fullscreen */
-            {
-              if(use_fullscreen)
-                use_fullscreen = 0;
-              else
-                use_fullscreen = 1;
-              st_video_setup();
-              menu_change = YES;
-            }
+          menumenu = MENU_OPTIONS;
+          menu_change = YES;
         }
+    }
+  else
+    drawcenteredtext("Options", 224, letters_blue, NO_UPDATE, 2);
+
+  if(menuitem == 2)
+    {
+      drawcenteredtext("Quit Game", 256, letters_red, NO_UPDATE, 2);
+      if(menuaction == MN_HIT) /* Quit a running game */
+        return 1;
+    }
+  else
+    {
+      drawcenteredtext("Quit Game", 256, letters_blue, NO_UPDATE, 2);
+    }
+
+  return 0;
+}
+
+int menu_options(void)
+{
+  if(menuitem > MENU_OPTIONS_ITEM_MAX )
+    menuitem = 0;
+  else if(menuitem < 0)
+    menuitem = MENU_OPTIONS_ITEM_MAX;
+
+  if(menuitem == 0)
+    {
+      if(use_fullscreen)
+        drawcenteredtext("Fullscreen ON", 192, letters_red, NO_UPDATE, 2);
       else
+        drawcenteredtext("Fullscreen OFF", 192, letters_red, NO_UPDATE, 2);
+      if(menuaction == MN_HIT) /* Disable/Enable fullscreen */
         {
           if(use_fullscreen)
-            drawshadedcenteredtext("Fullscreen ON", 192, letters_blue, NO_UPDATE);
+            use_fullscreen = 0;
           else
-            drawshadedcenteredtext("Fullscreen OFF", 192, letters_blue, NO_UPDATE);
-       }
+            use_fullscreen = 1;
+          st_video_setup();
+          menu_change = YES;
+        }
+    }
+  else
+    {
+      if(use_fullscreen)
+        drawcenteredtext("Fullscreen ON", 192, letters_blue, NO_UPDATE, 2);
+      else
+        drawcenteredtext("Fullscreen OFF", 192, letters_blue, NO_UPDATE, 2);
+    }
 
-      /* handle menu sound on/off option */
-      menu_option_sound();     
+  /* handle menu sound on/off option */
+  menu_option_sound();
 
-      /* handle menu music on/off option */
-      menu_option_music();
-   
-      if(menuitem == 3)
+  /* handle menu music on/off option */
+  menu_option_music();
+
+  if(menuitem == 3)
+    {
+      drawcenteredtext("Back", 288, letters_red, NO_UPDATE, 2);
+      if(menuaction == MN_HIT) /* Go back to main menu. */
         {
-          drawshadedcenteredtext("Back", 288, letters_red, NO_UPDATE);
-          if(menuaction == MN_HIT) /* Go back to main menu. */
-            {
-             if(game_started)
-             menumenu = MENU_GAME;
-             else
-              menumenu = MENU_MAIN;
-              menu_change = YES;
-            }
+          if(game_started)
+            menumenu = MENU_GAME;
+          else
+            menumenu = MENU_MAIN;
+          menu_change = YES;
         }
-      else
-        drawshadedcenteredtext("Back", 288, letters_blue, NO_UPDATE);
-       
-return 0;
+    }
+  else
+    drawcenteredtext("Back", 288, letters_blue, NO_UPDATE, 2);
+
+  return 0;
 }
 
 /* Menu LevelEditor */
 int menu_leveleditor(void)
 {
-        if(menuitem > MENU_LEVELEDITOR_ITEM_MAX )
-        menuitem = 0;
-     else if(menuitem < 0)
-       menuitem = MENU_LEVELEDITOR_ITEM_MAX;
-       
-          if(menuitem == 0)
-            {
-              drawshadedcenteredtext("Return To Level Editor", 192, letters_red, NO_UPDATE);
-              if(menuaction == MN_HIT) /* Don't show the menu anymore, if this item got hit */
-                show_menu = 0;
-            }
-          else
-            drawshadedcenteredtext("Return To Level Editor", 192, letters_blue, NO_UPDATE);
-       
-          if(menuitem == 1)
-            {
-              drawshadedcenteredtext("New Level", 224, letters_red, NO_UPDATE);
-              if(menuaction == MN_HIT) /* Don't show the menu anymore, if this item got hit */
-                {
-               show_menu = 0;
-               newlevel();
-               }
-            }
-          else
-            drawshadedcenteredtext("New Level", 224, letters_blue, NO_UPDATE);
-      if(menuitem == 2)
+  if(menuitem > MENU_LEVELEDITOR_ITEM_MAX )
+    menuitem = 0;
+  else if(menuitem < 0)
+    menuitem = MENU_LEVELEDITOR_ITEM_MAX;
+
+  if(menuitem == 0)
+    {
+      drawcenteredtext("Return To Level Editor", 192, letters_red, NO_UPDATE, 2);
+      if(menuaction == MN_HIT) /* Don't show the menu anymore, if this item got hit */
+        show_menu = 0;
+    }
+  else
+    drawcenteredtext("Return To Level Editor", 192, letters_blue, NO_UPDATE, 2);
+
+  if(menuitem == 1)
+    {
+      drawcenteredtext("New Level", 224, letters_red, NO_UPDATE, 2);
+      if(menuaction == MN_HIT) /* Don't show the menu anymore, if this item got hit */
         {
-            drawshadedcenteredtext("Load Level", 256, letters_red, NO_UPDATE);
-          if(menuaction == MN_HIT) /* Quit a running game or the application */
-           {
-            show_menu = 0;
-            selectlevel();
-            }
+          show_menu = 0;
+          newlevel();
         }
-       else
-       drawshadedcenteredtext("Load Level", 256, letters_blue, NO_UPDATE);
-      if(menuitem == 3)
+    }
+  else
+    drawcenteredtext("New Level", 224, letters_blue, NO_UPDATE, 2);
+  if(menuitem == 2)
+    {
+      drawcenteredtext("Load Level", 256, letters_red, NO_UPDATE, 2);
+      if(menuaction == MN_HIT) /* Create a new Level and load it into the level-editor. */
         {
-            drawshadedcenteredtext("Save Level", 288, letters_red, NO_UPDATE);
-          if(menuaction == MN_HIT) /* Quit a running game or the application */
-           {
-            show_menu = 0;
-            savelevel();
-            }
+          show_menu = 0;
+          selectlevel();
         }
-       else
-       drawshadedcenteredtext("Save Level", 288, letters_blue, NO_UPDATE);
+    }
+  else
+    drawcenteredtext("Load Level", 256, letters_blue, NO_UPDATE, 2);
+  if(menuitem == 3)
+    {
+      drawcenteredtext("Save Level", 288, letters_red, NO_UPDATE, 2);
+      if(menuaction == MN_HIT) /* Save the current level in the level-editor. */
+        {
+          show_menu = 0;
+          savelevel();
+        }
+    }
+  else
+    drawcenteredtext("Save Level", 288, letters_blue, NO_UPDATE, 2);
 
-      if(menuitem == 4)
+  if(menuitem == 4)
+    {
+      drawcenteredtext("Quit Level Editor", 320, letters_red, NO_UPDATE, 2);
+      if(menuaction == MN_HIT) /* Quit the level-editor. (to the main-menu) */
         {
-            drawshadedcenteredtext("Quit Level Editor", 320, letters_red, NO_UPDATE);
-          if(menuaction == MN_HIT) /* Quit a running game or the application */
-            {
-              return 1;
-            }
+          return 1;
         }
-       else
-       drawshadedcenteredtext("Quit Level Editor", 320, letters_blue, NO_UPDATE);
+    }
+  else
+    drawcenteredtext("Quit Level Editor", 320, letters_blue, NO_UPDATE, 2);
 
-return 0;
+  return 0;
 }
 
 /* --- MENU --- */
@@ -369,7 +395,7 @@ int drawmenu(void)
   if(menuaction == MN_UP)
     {
       /* Go one menu-item up */
-        --menuitem;
+      --menuitem;
     }
   else if(menuaction == MN_DOWN)
     ++menuitem; /* Go one menu-item down */
@@ -387,9 +413,9 @@ int drawmenu(void)
     {
       quit = menu_options();
     }
-    else if(menumenu == MENU_LEVELEDITOR)
+  else if(menumenu == MENU_LEVELEDITOR)
     {
-       quit = menu_leveleditor();
+      quit = menu_leveleditor();
     }
 
   menuaction = -1;