rnd-20060530-1-src
authorHolger Schemel <info@artsoft.org>
Tue, 30 May 2006 19:24:17 +0000 (21:24 +0200)
committerHolger Schemel <info@artsoft.org>
Sat, 30 Aug 2014 08:51:58 +0000 (10:51 +0200)
* fixed some bugs when displaying title screens from info screen menu

ChangeLog
src/conftime.h
src/main.h
src/screens.c

index 7d04fe146b89249663e0101420a480b9b4216e3c..49f4d9af7aea9b9d60267905da47d574a2b5ff0f 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,11 +1,16 @@
+2006-05-30
+       * fixed some bugs when displaying title screens from info screen menu
+
 2006-05-20
-       * changed file version identifier to reflect recent level file changes
+       * changed file major version to 3 to reflect level file format changes
+       * uploaded pre-release (test) version 3.2.0-8 binary and source code
 
 2006-05-19
        * added new chunk "NAME" to level file format for level name settings
        * added new chunk "NOTE" to level file format for envelope settings
        * changed name of chunk "CONF" to "ELEM" (for normal element settings)
        * updated magic(5) file to recognize changed and new level file chunks
+       * removed change events "change when CE value/score changes" as unneeded
 
 2006-05-17
        * changed gravity (which only affects the player) from level property
index 511b235608c9c2b54526d09db12183698070bca2..a4f17902cc715da039e254919f9c996eae2d63f5 100644 (file)
@@ -1 +1 @@
-#define COMPILE_DATE_STRING "[2006-05-20 01:03]"
+#define COMPILE_DATE_STRING "[2006-05-30 21:20]"
index a18e84849d60cedc60422fd1f2e89762a973fcf0..53fa767f9207b07f35aab39af2d7100bded4018c 100644 (file)
 #define PROGRAM_VERSION_MAJOR          3
 #define PROGRAM_VERSION_MINOR          2
 #define PROGRAM_VERSION_PATCH          0
-#define PROGRAM_VERSION_BUILD          8
+#define PROGRAM_VERSION_BUILD          9
 
 #define PROGRAM_TITLE_STRING           "Rocks'n'Diamonds"
 #define PROGRAM_AUTHOR_STRING          "Holger Schemel"
index 9dcf4dd7cd19a985c675eaee4d6649282e0e6bea..dc0a14ebcfc4e70876269e45ced4ddc4edac4d51 100644 (file)
@@ -48,7 +48,7 @@
 
 /* screens on the info screen */
 #define INFO_MODE_MAIN                 0
-#define INFO_MODE_TITLESCREEN          1
+#define INFO_MODE_TITLE                        1
 #define INFO_MODE_ELEMENTS             2
 #define INFO_MODE_MUSIC                        3
 #define INFO_MODE_CREDITS              4
@@ -117,6 +117,7 @@ static void DrawInfoScreen(void);
 static void DrawSetupScreen(void);
 
 static void DrawInfoScreenExt(int);
+static void DrawInfoScreen_NotAvailable(char *, char *);
 static void DrawInfoScreen_HelpAnim(int, int, boolean);
 static void DrawInfoScreen_HelpText(int, int, int, int);
 static void HandleInfoScreen_Main(int, int, int, int, int);
@@ -299,9 +300,6 @@ void DrawTitleScreen()
 
   SetMainBackgroundImage(IMG_BACKGROUND_TITLE);
 
-  PlayMenuSound();
-  PlayMenuMusic();
-
   HandleTitleScreen(0, 0, 0, 0, MB_MENU_INITIALIZE);
 
   StopAnimation();
@@ -593,15 +591,32 @@ void HandleTitleScreen(int mx, int my, int dx, int dy, int button)
 
   if (button == MB_MENU_INITIALIZE)
   {
+    int last_game_status = game_status;        /* save current game status */
     title_nr = 0;
 
     if (game_status == GAME_MODE_INFO)
     {
+      if (graphic_info[IMG_TITLESCREEN_1].bitmap == NULL)
+      {
+       DrawInfoScreen_NotAvailable("Title screen information:",
+                                   "No title screen for this level set.");
+
+       return;
+      }
+
       FadeSoundsAndMusic();
 
       FadeOut(fade_delay, post_delay);
     }
 
+    /* force TITLE music on title info screen */
+    game_status = GAME_MODE_TITLE;
+
+    PlayMenuSound();
+    PlayMenuMusic();
+
+    game_status = last_game_status;    /* restore current game status */
+
     DrawTitleScreenImage(title_nr);
 
     FadeIn(fade_delay);
@@ -615,6 +630,15 @@ void HandleTitleScreen(int mx, int my, int dx, int dy, int button)
   }
   else if (button == MB_MENU_CHOICE)
   {
+    if (game_status == GAME_MODE_INFO &&
+       graphic_info[IMG_TITLESCREEN_1].bitmap == NULL)
+    {
+      info_mode = INFO_MODE_MAIN;
+      DrawInfoScreen();
+
+      return;
+    }
+
     title_nr++;
 
     if (!use_cross_fading)
@@ -840,7 +864,7 @@ static int num_info_info;
 
 static void execInfoTitleScreen()
 {
-  info_mode = INFO_MODE_TITLESCREEN;
+  info_mode = INFO_MODE_TITLE;
   DrawInfoScreen();
 }
 
@@ -1035,6 +1059,24 @@ void HandleInfoScreen_Main(int mx, int my, int dx, int dy, int button)
   }
 }
 
+void DrawInfoScreen_NotAvailable(char *text_title, char *text_error)
+{
+  int ystart = 150;
+  int ybottom = SYSIZE - 20;
+
+  SetMainBackgroundImageIfDefined(IMG_BACKGROUND_INFO_LEVELSET);
+
+  ClearWindow();
+  DrawHeadline();
+
+  DrawTextSCentered(100, FONT_TEXT_1, text_title);
+
+  DrawTextSCentered(ybottom, FONT_TEXT_4,
+                   "Press any key or button for info menu");
+
+  DrawTextSCentered(ystart, FONT_TEXT_2, text_error);
+}
+
 void DrawInfoScreen_HelpAnim(int start, int max_anims, boolean init)
 {
   static int infoscreen_step[MAX_INFO_ELEMENTS_ON_SCREEN];
@@ -1754,7 +1796,7 @@ static void DrawInfoScreenExt(int fade_delay)
 {
   SetMainBackgroundImage(IMG_BACKGROUND_INFO);
 
-  if (info_mode == INFO_MODE_TITLESCREEN)
+  if (info_mode == INFO_MODE_TITLE)
     DrawInfoScreen_TitleScreen();
   else if (info_mode == INFO_MODE_ELEMENTS)
     DrawInfoScreen_Elements();
@@ -1769,7 +1811,9 @@ static void DrawInfoScreenExt(int fade_delay)
   else
     DrawInfoScreen_Main(fade_delay);
 
-  if (info_mode != INFO_MODE_MUSIC)
+  if (info_mode != INFO_MODE_MAIN &&
+      info_mode != INFO_MODE_TITLE &&
+      info_mode != INFO_MODE_MUSIC)
   {
     PlayMenuSound();
     PlayMenuMusic();
@@ -1783,7 +1827,7 @@ void DrawInfoScreen()
 
 void HandleInfoScreen(int mx, int my, int dx, int dy, int button)
 {
-  if (info_mode == INFO_MODE_TITLESCREEN)
+  if (info_mode == INFO_MODE_TITLE)
     HandleInfoScreen_TitleScreen(button);
   else if (info_mode == INFO_MODE_ELEMENTS)
     HandleInfoScreen_Elements(button);