rnd-20020904-1-src
[rocksndiamonds.git] / src / screens.c
index a04d75dc3e6b204e7538d9c384ccd323ea8a62fe..8499f619bda35cd748456f3241a29c4c82f5e5e5 100644 (file)
@@ -1,7 +1,7 @@
 /***********************************************************
 * Rocks'n'Diamonds -- McDuffin Strikes Back!               *
 *----------------------------------------------------------*
-* (c) 1995-2001 Artsoft Entertainment                      *
+* (c) 1995-2002 Artsoft Entertainment                      *
 *               Holger Schemel                             *
 *               Detmolder Strasse 189                      *
 *               33604 Bielefeld                            *
@@ -155,7 +155,7 @@ void DrawMainMenu()
   /* needed if last screen was the setup screen and fullscreen state changed */
   ToggleFullscreenIfNeeded();
 
-  /* needed if last screen (setup/level) changed graphics, sounds or music */
+  /* needed if last screen (level choice) changed graphics, sounds or music */
   ReloadCustomArtwork();
 
 #ifdef TARGET_SDL
@@ -837,8 +837,8 @@ void HandleHelpScreen(int button)
       for(i=0;i<MAX_HELPSCREEN_ELS;i++)
        helpscreen_step[i] = helpscreen_frame[i] = helpscreen_delay[i] = 0;
       helpscreen_state++;
-      DrawHelpScreenElText(helpscreen_state*MAX_HELPSCREEN_ELS);
-      DrawHelpScreenElAction(helpscreen_state*MAX_HELPSCREEN_ELS);
+      DrawHelpScreenElText(helpscreen_state * MAX_HELPSCREEN_ELS);
+      DrawHelpScreenElAction(helpscreen_state * MAX_HELPSCREEN_ELS);
     }
     else if (helpscreen_state <
             num_helpscreen_els_pages + num_helpscreen_music - 1)
@@ -867,11 +867,17 @@ void HandleHelpScreen(int button)
   }
   else
   {
-    if (DelayReached(&hs_delay,GAME_FRAME_DELAY * 2))
+    if (DelayReached(&hs_delay, GAME_FRAME_DELAY * 2))
     {
-      if (helpscreen_state<num_helpscreen_els_pages)
-       DrawHelpScreenElAction(helpscreen_state*MAX_HELPSCREEN_ELS);
+      if (helpscreen_state < num_helpscreen_els_pages)
+       DrawHelpScreenElAction(helpscreen_state * MAX_HELPSCREEN_ELS);
     }
+
+    /* !!! workaround for playing "music" that is really a sound loop (and
+       must therefore periodically be reactivated with the current sound
+       engine !!! */
+    PlaySoundLoop(SND_MENU_INFO_SCREEN);
+
     DoAnimation();
   }
 
@@ -1356,6 +1362,10 @@ void HandleHallOfFame(int mx, int my, int dx, int dy, int button)
 static struct TokenInfo *setup_info;
 static int num_setup_info;
 
+static char *graphics_set_name;
+static char *sounds_set_name;
+static char *music_set_name;
+
 static void execSetupMain()
 {
   setup_mode = SETUP_MODE_MAIN;
@@ -1370,23 +1380,30 @@ static void execSetupGame()
 
 static void execSetupGraphics()
 {
-  setup.graphics_set = artwork.gfx_current->name;
-
   setup_mode = SETUP_MODE_GRAPHICS;
   DrawSetupScreen();
 }
 
 static void execSetupSound()
 {
-  setup.sounds_set = artwork.snd_current->name;
-  setup.music_set = artwork.mus_current->name;
-
   setup_mode = SETUP_MODE_SOUND;
   DrawSetupScreen();
 }
 
 static void execSetupArtwork()
 {
+  /* needed if last screen (setup choice) changed graphics, sounds or music */
+  ReloadCustomArtwork();
+
+  setup.graphics_set = artwork.gfx_current->identifier;
+  setup.sounds_set = artwork.snd_current->identifier;
+  setup.music_set = artwork.mus_current->identifier;
+
+  /* needed for displaying artwork name instead of artwork identifier */
+  graphics_set_name = artwork.gfx_current->name;
+  sounds_set_name = artwork.snd_current->name;
+  music_set_name = artwork.mus_current->name;
+
   setup_mode = SETUP_MODE_ARTWORK;
   DrawSetupScreen();
 }
@@ -1489,11 +1506,11 @@ static struct TokenInfo setup_info_sound[] =
 static struct TokenInfo setup_info_artwork[] =
 {
   { TYPE_ENTER_MENU,   execSetupChooseGraphics,"Custom Graphics"       },
-  { TYPE_STRING,       &setup.graphics_set,    ""                      },
+  { TYPE_STRING,       &graphics_set_name,     ""                      },
   { TYPE_ENTER_MENU,   execSetupChooseSounds,  "Custom Sounds"         },
-  { TYPE_STRING,       &setup.sounds_set,      ""                      },
+  { TYPE_STRING,       &sounds_set_name,       ""                      },
   { TYPE_ENTER_MENU,   execSetupChooseMusic,   "Custom Music"          },
-  { TYPE_STRING,       &setup.music_set,       ""                      },
+  { TYPE_STRING,       &music_set_name,        ""                      },
   { TYPE_EMPTY,                NULL,                   ""                      },
   { TYPE_STRING,       NULL,                   "Override Level Artwork:"},
   { TYPE_YES_NO,       &setup.override_level_graphics, "Graphics:"     },
@@ -1661,7 +1678,7 @@ static void DrawSetupScreen_Generic()
   else if (setup_mode == SETUP_MODE_ARTWORK)
   {
     setup_info = setup_info_artwork;
-    title_string = "Setup Sound";
+    title_string = "Custom Artwork";
   }
   else if (setup_mode == SETUP_MODE_SHORTCUT)
   {
@@ -2089,7 +2106,7 @@ void CustomizeKeyboard(int player_nr)
       {
         case EVENT_KEYPRESS:
          {
-           Key key = GetEventKey((KeyEvent *)&event, TRUE);
+           Key key = GetEventKey((KeyEvent *)&event, FALSE);
 
            if (key == KSYM_Escape || (key == KSYM_Return && step_nr == 6))
            {