rnd-20030304-1-src
[rocksndiamonds.git] / src / init.c
index 8026ab9d510a6d1cc898a446c4dcde3d1e44314b..b24944ee7aa95eb5302e9a8f29ecd48e4f2f2d12 100644 (file)
@@ -118,6 +118,8 @@ void OpenAll()
     return;
   }
 
+  game_status = MAINMENU;
+
   DrawMainMenu();
 
   InitNetworkServer();
@@ -737,8 +739,27 @@ void InitElementSmallImages()
 
 static int getFontBitmapID(int font_nr)
 {
-  if (game_status == LEVELED)
-    return font_info[font_nr].special_bitmap_id[GFX_SPECIAL_ARG_EDITOR];
+  int special = -1;
+
+  if (game_status == MAINMENU || game_status == TYPENAME)
+    special = GFX_SPECIAL_ARG_MAIN;
+  else if (game_status == CHOOSELEVEL)
+    special = GFX_SPECIAL_ARG_LEVELS;
+  else if (game_status == HALLOFFAME)
+    special = GFX_SPECIAL_ARG_SCORES;
+  else if (game_status == LEVELED)
+    special = GFX_SPECIAL_ARG_EDITOR;
+  else if (game_status == HELPSCREEN)
+    special = GFX_SPECIAL_ARG_INFO;
+  else if (game_status == SETUP)
+    special = GFX_SPECIAL_ARG_SETUP;
+  else if (game_status == PSEUDO_PREVIEW)
+    special = GFX_SPECIAL_ARG_PREVIEW;
+  else if (game_status == PLAYING || game_status == PSEUDO_DOOR)
+    special = GFX_SPECIAL_ARG_DOOR;
+
+  if (special != -1)
+    return font_info[font_nr].special_bitmap_id[special];
   else
     return font_nr;
 }
@@ -1019,7 +1040,8 @@ static void set_graphic_parameters(int graphic, char **parameter_raw)
   /* get integer values from string parameters */
   for (i=0; i < NUM_GFX_ARGS; i++)
     parameter[i] =
-      get_parameter_value(image_config_suffix[i].type, parameter_raw[i]);
+      get_parameter_value(image_config_suffix[i].token, parameter_raw[i],
+                         image_config_suffix[i].type);
 
   graphic_info[graphic].bitmap = src_bitmap;
 
@@ -1085,25 +1107,10 @@ static void set_graphic_parameters(int graphic, char **parameter_raw)
   if (graphic_info[graphic].anim_delay == 0)   /* delay must be at least 1 */
     graphic_info[graphic].anim_delay = 1;
 
-  /* set mode for animation frame order */
-  if (parameter[GFX_ARG_MODE_LOOP])
-    graphic_info[graphic].anim_mode = ANIM_LOOP;
-  else if (parameter[GFX_ARG_MODE_LINEAR])
-    graphic_info[graphic].anim_mode = ANIM_LINEAR;
-  else if (parameter[GFX_ARG_MODE_PINGPONG])
-    graphic_info[graphic].anim_mode = ANIM_PINGPONG;
-  else if (parameter[GFX_ARG_MODE_PINGPONG2])
-    graphic_info[graphic].anim_mode = ANIM_PINGPONG2;
-  else if (parameter[GFX_ARG_MODE_RANDOM])
-    graphic_info[graphic].anim_mode = ANIM_RANDOM;
+  if (parameter[GFX_ARG_ANIM_MODE] != ANIM_NONE)
+    graphic_info[graphic].anim_mode = parameter[GFX_ARG_ANIM_MODE];
   else if (graphic_info[graphic].anim_frames > 1)
     graphic_info[graphic].anim_mode = ANIM_LOOP;
-  else
-    graphic_info[graphic].anim_mode = ANIM_NONE;
-
-  /* set additional flag to play animation frames in reverse order */
-  if (parameter[GFX_ARG_MODE_REVERSE])
-    graphic_info[graphic].anim_mode |= ANIM_REVERSE;
 
   /* automatically determine correct start frame, if not defined */
   if (parameter[GFX_ARG_START_FRAME] == ARG_UNDEFINED_VALUE)
@@ -1284,7 +1291,8 @@ static void set_sound_parameters(int sound, char **parameter_raw)
   /* get integer values from string parameters */
   for (i=0; i < NUM_SND_ARGS; i++)
     parameter[i] =
-      get_parameter_value(sound_config_suffix[i].type, parameter_raw[i]);
+      get_parameter_value(sound_config_suffix[i].token, parameter_raw[i],
+                         sound_config_suffix[i].type);
 
   /* explicit loop mode setting in configuration overrides default value */
   if (parameter[SND_ARG_MODE_LOOP] != ARG_UNDEFINED_VALUE)
@@ -2224,6 +2232,7 @@ void InitElementProperties()
     EL_DYNABOMB_NR,
     EL_DYNABOMB_SZ,
     EL_DYNABOMB_XL,
+    EL_SP_DISK_RED_ACTIVE,
     EL_BUG,
     EL_MOLE,
     EL_PENGUIN,
@@ -2411,7 +2420,8 @@ void InitElementProperties()
     EL_DYNABOMB_PLAYER1_ACTIVE,
     EL_DYNABOMB_PLAYER2_ACTIVE,
     EL_DYNABOMB_PLAYER3_ACTIVE,
-    EL_DYNABOMB_PLAYER4_ACTIVE
+    EL_DYNABOMB_PLAYER4_ACTIVE,
+    EL_SP_DISK_RED_ACTIVE
   };
   static int ep_active_bomb_num = SIZEOF_ARRAY_INT(ep_active_bomb);