rnd-20020907-2-src
authorHolger Schemel <info@artsoft.org>
Sat, 7 Sep 2002 13:05:59 +0000 (15:05 +0200)
committerHolger Schemel <info@artsoft.org>
Sat, 30 Aug 2014 08:38:21 +0000 (10:38 +0200)
src/conftime.h
src/init.c
src/libgame/image.c
src/libgame/image.h
src/libgame/misc.c
src/libgame/misc.h
src/libgame/sound.c
src/libgame/sound.h
src/libgame/system.h
src/main.c
src/main.h

index 0be54307f697b1b46ac92288cc778481e7e2e856..551ee18bfd88c51f24fe7179d1c243e8ac4207c3 100644 (file)
@@ -1 +1 @@
-#define COMPILE_DATE_STRING "[2002-09-07 12:06]"
+#define COMPILE_DATE_STRING "[2002-09-07 15:04]"
index 4c49a23762f59494ae018bca325f64fafc1ee85d..f2d07f4152a482bd8971e168bc9704e63383c7ef 100644 (file)
@@ -857,6 +857,8 @@ static void InitGraphicInfo()
 
   image_files = getCurrentImageList();
 
+  printf("--> %d\n", image_files[0].parameter[2]);
+
   for(i=0; i<MAX_GRAPHICS; i++)
   {
     /* always start with reliable default values */
index a65eb20dbb800368485d57def0dddd051236c328..3ec55f390ff6b313d64ac5f8f269904ac269745d 100644 (file)
@@ -700,7 +700,8 @@ struct FileInfo *getCurrentImageList()
   return image_info->file_list;
 }
 
-void InitImageList(struct ConfigInfo *config_list, char *config_suffix_list[],
+void InitImageList(struct ConfigInfo *config_list,
+                  struct ConfigInfo *config_suffix_list,
                   int num_file_list_entries)
 {
   int i;
@@ -711,7 +712,7 @@ void InitImageList(struct ConfigInfo *config_list, char *config_suffix_list[],
 
   image_info->num_file_list_entries = num_file_list_entries;
   image_info->num_suffix_list_entries = 0;
-  for (i=0; config_suffix_list[i] != NULL; i++)
+  for (i=0; config_suffix_list[i].token != NULL; i++)
     image_info->num_suffix_list_entries++;
 
   image_info->file_list =
index b968fee16623e5ef2e44c6b0d7253c4ff2706fc8..9d001aae86244a5e1ff58b44a917cbb4f4f98542 100644 (file)
@@ -73,7 +73,7 @@ int Read_PCX_to_Pixmap(Display *, Window, GC, char *, Pixmap *, Pixmap *);
 
 
 struct FileInfo *getCurrentImageList();
-void InitImageList(struct ConfigInfo *, char **, int);
+void InitImageList(struct ConfigInfo *, struct ConfigInfo *, int);
 void ReloadCustomImages();
 void FreeAllImages();
 
index 3c61d46dd77a1dd033383856ec5371fce1ca61bb..498a96e89231d3c9de9fa47ad680ba1d948a6e67 100644 (file)
@@ -403,6 +403,14 @@ char *getPath3(char *path1, char *path2, char *path3)
   return complete_path;
 }
 
+static char *getStringCat2(char *s1, char *s2)
+{
+  char *complete_string = checked_malloc(strlen(s1) + strlen(s2) + 1);
+
+  sprintf(complete_string, "%s%s", s1, s2);
+  return complete_string;
+}
+
 char *getStringCopy(char *s)
 {
   char *s_copy;
@@ -1349,7 +1357,7 @@ boolean FileIsArtworkType(char *basename, int type)
 /* ========================================================================= */
 
 struct FileInfo *getFileListFromConfigList(struct ConfigInfo *config_list,
-                                          char *suffix_list[],
+                                          struct ConfigInfo *suffix_list,
                                           int num_file_list_entries)
 {
   struct FileInfo *file_list;
@@ -1359,22 +1367,29 @@ struct FileInfo *getFileListFromConfigList(struct ConfigInfo *config_list,
 
   file_list = checked_calloc(num_file_list_entries * sizeof(struct FileInfo));
 
-  for (i=0; suffix_list[i] != NULL; i++)
+  for (i=0; suffix_list[i].token != NULL; i++)
     num_suffix_list_entries++;
 
-  if (num_suffix_list_entries > 0)
+  /* always start with reliable default values */
+  for (i=0; i<num_file_list_entries; i++)
   {
-    for (i=0; i<num_file_list_entries; i++)
+    file_list[list_pos].token = NULL;
+    file_list[list_pos].default_filename = NULL;
+    file_list[list_pos].filename = NULL;
+
+    if (num_suffix_list_entries > 0)
     {
-      file_list[i].default_parameter =
-       checked_calloc(num_suffix_list_entries * sizeof(int));
-      file_list[i].parameter =
-       checked_calloc(num_suffix_list_entries * sizeof(int));
+      int parameter_array_size = num_suffix_list_entries * sizeof(int);
+
+      file_list[i].default_parameter = checked_calloc(parameter_array_size);
+      file_list[i].parameter = checked_calloc(parameter_array_size);
 
       for (j=0; j<num_suffix_list_entries; j++)
       {
-       file_list[i].default_parameter[j] = -1;
-       file_list[i].parameter[j] = -1;
+       int default_parameter = atoi(suffix_list[j].value);
+
+       file_list[i].default_parameter[j] = default_parameter;
+       file_list[i].parameter[j] = default_parameter;
       }
     }
   }
@@ -1384,13 +1399,13 @@ struct FileInfo *getFileListFromConfigList(struct ConfigInfo *config_list,
     int len_config_token = strlen(config_list[i].token);
     boolean is_file_entry = TRUE;
 
-    for (j=0; suffix_list[j] != NULL; j++)
+    for (j=0; suffix_list[j].token != NULL; j++)
     {
-      int len_suffix = strlen(suffix_list[j]);
+      int len_suffix = strlen(suffix_list[j].token);
 
       if (len_suffix < len_config_token &&
          strcmp(&config_list[i].token[len_config_token - len_suffix],
-                suffix_list[j]) == 0)
+                suffix_list[j].token) == 0)
       {
        file_list[list_pos].default_parameter[j] = atoi(config_list[i].value);
 
@@ -1419,9 +1434,10 @@ struct FileInfo *getFileListFromConfigList(struct ConfigInfo *config_list,
 
 static void LoadArtworkConfig(struct ArtworkListInfo *artwork_info)
 {
+  struct FileInfo *file_list = artwork_info->file_list;
+  struct ConfigInfo *suffix_list = artwork_info->suffix_list;
   int num_file_list_entries = artwork_info->num_file_list_entries;
   int num_suffix_list_entries = artwork_info->num_suffix_list_entries;
-  struct FileInfo *file_list = artwork_info->file_list;
   char *filename = getCustomArtworkConfigFilename(artwork_info->type);
   struct SetupFileList *setup_file_list;
   int i, j;
@@ -1433,12 +1449,12 @@ static void LoadArtworkConfig(struct ArtworkListInfo *artwork_info)
   /* always start with reliable default values */
   for (i=0; i<num_file_list_entries; i++)
   {
+    if (file_list[i].filename != NULL)
+      free(file_list[i].filename);
     file_list[i].filename = NULL;
 
     for (j=0; j<num_suffix_list_entries; j++)
-    {
       file_list[i].parameter[j] = file_list[i].default_parameter[j];
-    }
   }
 
   if (filename == NULL)
@@ -1447,9 +1463,20 @@ static void LoadArtworkConfig(struct ArtworkListInfo *artwork_info)
   if ((setup_file_list = loadSetupFileList(filename)))
   {
     for (i=0; i<num_file_list_entries; i++)
+    {
       file_list[i].filename =
        getStringCopy(getTokenValue(setup_file_list, file_list[i].token));
 
+      for (j=0; j<num_suffix_list_entries; j++)
+      {
+       char *token = getStringCat2(file_list[i].token, suffix_list[j].token);
+       char *value = getTokenValue(setup_file_list, token);
+
+       if (value != NULL)
+         file_list[i].parameter[j] = atoi(value);
+      }
+    }
+
     freeSetupFileList(setup_file_list);
 
 #if 0
index 8d0a5dce319a778bc77fb9b90536cf0b9e5de7a5..a616d226e006e0abf9601a1b741d40d2c4a2e686 100644 (file)
@@ -126,7 +126,8 @@ boolean FileIsSound(char *);
 boolean FileIsMusic(char *);
 boolean FileIsArtworkType(char *, int);
 
-struct FileInfo *getFileListFromConfigList(struct ConfigInfo *, char **, int);
+struct FileInfo *getFileListFromConfigList(struct ConfigInfo *,
+                                          struct ConfigInfo *, int);
 void ReloadCustomArtworkList(struct ArtworkListInfo *);
 void FreeCustomArtworkList(struct ArtworkListInfo *);
 
index f30c1d4cb4b91a58a91b24b535cb64a699e1a68a..14aacba0b5119f3e297a32258c1c6cfe24b4ed09 100644 (file)
@@ -1726,7 +1726,8 @@ struct FileInfo *getCurrentSoundList()
   return sound_info->file_list;
 }
 
-void InitSoundList(struct ConfigInfo *config_list, char *config_suffix_list[],
+void InitSoundList(struct ConfigInfo *config_list,
+                  struct ConfigInfo *config_suffix_list,
                   int num_file_list_entries)
 {
   int i;
@@ -1737,7 +1738,7 @@ void InitSoundList(struct ConfigInfo *config_list, char *config_suffix_list[],
 
   sound_info->num_file_list_entries = num_file_list_entries;
   sound_info->num_suffix_list_entries = 0;
-  for (i=0; config_suffix_list[i] != NULL; i++)
+  for (i=0; config_suffix_list[i].token != NULL; i++)
     sound_info->num_suffix_list_entries++;
 
   sound_info->file_list =
index 4b28e3ff205e88b51717bdf1d5f8440271d55bf9..310d7b851307e7cb14711736ca18ba00a232b5db 100644 (file)
@@ -140,7 +140,7 @@ void StopSound(int);
 void StopSounds(void);
 void StopSoundExt(int, int);
 struct FileInfo *getCurrentSoundList();
-void InitSoundList(struct ConfigInfo *, char **, int);
+void InitSoundList(struct ConfigInfo *, struct ConfigInfo *, int);
 void InitReloadSounds(char *);
 void InitReloadMusic(char *);
 void FreeAllSounds(void);
index 497a39585cd8091f30ac48d491cec08371072c21..9cebd02dda852d0c94755475d42a89589bcd2dc5 100644 (file)
@@ -467,7 +467,7 @@ struct ArtworkListInfo
   int num_suffix_list_entries;
 
   struct FileInfo *file_list;                  /* static artwork file array */
-  char **suffix_list;                          /* parameter suffixes array */
+  struct ConfigInfo *suffix_list;              /* parameter suffixes array */
 
   struct ListNodeInfo **artwork_list;          /* static artwork node array */
 
index 68466fe5d63e82b1225da3aabfe6f9680c1c1816..713b6a9b33157ff128369130f05157cc443be1d9 100644 (file)
@@ -136,17 +136,18 @@ char *sound_name[NUM_SOUNDS] =
   "gate.wav"
 };
 
-char *image_config_suffix[] =
+struct ConfigInfo image_config_suffix[] =
 {
-  ".frame_xpos",
-  ".frame_ypos",
-  ".num_frames",
-  NULL
+  { ".frame_xpos",                     "0"                     },
+  { ".frame_ypos",                     "0"                     },
+  { ".num_frames",                     "1"                     },
+
+  { NULL,                              NULL                    }
 };
 
-char *sound_config_suffix[] =
+struct ConfigInfo sound_config_suffix[] =
 {
-  NULL
+  { NULL,                              NULL                    }
 };
 
 struct ConfigInfo image_config[] =
@@ -159,7 +160,7 @@ struct ConfigInfo image_config[] =
   { "robot_wheel.frame_xpos",          "0"                     },
   { "robot_wheel.num_frames",          "4"                     },
 
-  { NULL,                              NULL                    },
+  { NULL,                              NULL                    }
 };
 
 struct ConfigInfo sound_config[] =
@@ -378,7 +379,7 @@ struct ConfigInfo sound_config[] =
   { "[not used]",                      "boom.wav"              },
 #endif
 
-  { NULL,                              NULL                    },
+  { NULL,                              NULL                    }
 };
 
 struct FileInfo *image_files;
index 976325dac8d68b13216a2f4f69d0563cebe76b4e..aa5f629688e82de3bfdda88b965c1bea5288c899 100644 (file)
@@ -416,8 +416,8 @@ extern struct GlobalInfo    global;
 extern struct ElementInfo      element_info[];
 extern struct GraphicInfo      graphic_info[];
 extern struct ConfigInfo       image_config[], sound_config[];
+extern struct ConfigInfo       image_config_suffix[], sound_config_suffix[];
 extern struct FileInfo        *image_files, *sound_files;
-extern char                   *image_config_suffix[], *sound_config_suffix[];
 
 /* often used screen positions */
 #define SX                     8