rnd-20020906-3-src
[rocksndiamonds.git] / src / init.c
index 8f957e30837f16165db67f41dee238b7f5fcc3ca..bb5dd45075a1945b90d2acf65df2a00fbda6c391 100644 (file)
@@ -100,7 +100,6 @@ void OpenAll(void)
   InitGfx();
   InitElementProperties();     /* initializes IS_CHAR() for el2gfx() */
   InitElementInfo();
-  InitGraphicInfo();
 
   InitLevelInfo();
   InitLevelArtworkInfo();
@@ -176,16 +175,37 @@ void InitNetworkServer()
 
 static void InitImages()
 {
-  InitImageList(image_config, NUM_IMAGE_CONFIG_ENTRIES);
+  static char *suffix_list[] =
+  {
+    ".frame_xpos",
+    ".frame_ypos",
+    ".num_frames",
+    NULL
+  };
+
+  image_files =
+    getFileListFromConfigList(image_config, suffix_list, NUM_IMAGE_FILES);
+
+  InitImageList(image_files, NUM_IMAGE_FILES);
 
   /* load custom images */
   ReloadCustomImages();
+  InitGraphicInfo();
 }
 
 static void InitMixer()
 {
+  static char *suffix_list[] =
+  {
+    NULL
+  };
+
   OpenAudio();
-  InitSoundList(sound_config, NUM_SOUND_CONFIG_ENTRIES);
+
+  sound_files =
+    getFileListFromConfigList(sound_config, suffix_list, NUM_SOUND_FILES);
+
+  InitSoundList(sound_files, NUM_SOUND_FILES);
 
   StartMixer();
 }
@@ -497,6 +517,7 @@ void ReloadCustomArtwork()
     }
 
     ReloadCustomImages();
+    InitGraphicInfo();
 
     FreeTileClipmasks();
     InitTileClipmasks();
@@ -855,17 +876,16 @@ void InitGraphicInfo()
   /* always start with reliable default values */
   for(i=0; i<MAX_GRAPHICS; i++)
   {
-    graphic_info[i].bitmap = pix[PIX_SP];      /* graphic that ... */
-    graphic_info[i].src_x = 0;                 /* ... contains ... */
-    graphic_info[i].src_y = 0;                 /* ... empty space. */
+    graphic_info[i].bitmap = NULL;
+    graphic_info[i].src_x = 0;
+    graphic_info[i].src_y = 0;
     graphic_info[i].anim_frames = 1;
     graphic_info[i].anim_delay = 0;
     graphic_info[i].anim_mode = ANIM_NORMAL;
-  }
 
-  for(i=0; i<MAX_GRAPHICS; i++)
     getGraphicSource(i, &graphic_info[i].bitmap,
                     &graphic_info[i].src_x, &graphic_info[i].src_y);
+  }
 }
 
 void InitElementProperties()
@@ -2069,10 +2089,10 @@ void Execute_Debug_Command(char *command)
     printf("%s\n", getFormattedSetupEntry("sort_priority", "100"));
     printf("\n");
 
-    for (i=0; i<NUM_IMAGE_CONFIG_ENTRIES; i++)
+    for (i=0; image_config[i].token != NULL; i++)
       printf("# %s\n",
             getFormattedSetupEntry(image_config[i].token,
-                                   image_config[i].default_filename));
+                                   image_config[i].value));
   }
   else if (strcmp(command, "create soundsinfo.conf") == 0)
   {
@@ -2086,10 +2106,10 @@ void Execute_Debug_Command(char *command)
     printf("%s\n", getFormattedSetupEntry("sort_priority", "100"));
     printf("\n");
 
-    for (i=0; i<NUM_SOUND_CONFIG_ENTRIES; i++)
+    for (i=0; sound_config[i].token != NULL; i++)
       printf("# %s\n",
             getFormattedSetupEntry(sound_config[i].token,
-                                   sound_config[i].default_filename));
+                                   sound_config[i].value));
   }
   else if (strcmp(command, "create musicinfo.conf") == 0)
   {
@@ -2117,6 +2137,8 @@ void CloseAllAndExit(int exit_value)
   FreeAllMusic();
   CloseAudio();                /* called after freeing sounds (needed for SDL) */
 
+  FreeAllImages();
+
   FreeTileClipmasks();
   for(i=0; i<NUM_BITMAPS; i++)
     FreeBitmap(pix[i]);