rnd-20071001-1-src
[rocksndiamonds.git] / src / files.c
index 01c166e12a857dab0ef3212b5e0d0087e311620e..3b51e6e28b92236f2126c769e29d3f78f924735a 100644 (file)
@@ -1694,8 +1694,8 @@ static int getFileTypeFromBasename(char *basename)
     return LEVEL_FILE_TYPE_SP;
 
   /* check for typical filename of a Diamond Caves II level package file */
-  if (strEqualSuffix(basename, ".dc") ||
-      strEqualSuffix(basename, ".dc2"))
+  if (strSuffix(basename, ".dc") ||
+      strSuffix(basename, ".dc2"))
     return LEVEL_FILE_TYPE_DC;
 
   /* ---------- try to determine file type from filesize ---------- */
@@ -5767,7 +5767,7 @@ static void LoadLevelFromFileInfo_DC(struct LevelInfo *level,
     fgets(magic_bytes, num_magic_bytes + 1, file);
 
     /* check "magic bytes" for correct file format */
-    if (!strEqualPrefix(magic_bytes, "DC2"))
+    if (!strPrefix(magic_bytes, "DC2"))
     {
       level->no_valid_file = TRUE;
 
@@ -5777,8 +5777,8 @@ static void LoadLevelFromFileInfo_DC(struct LevelInfo *level,
       return;
     }
 
-    if (strEqualPrefix(magic_bytes, "DC2Win95") ||
-       strEqualPrefix(magic_bytes, "DC2Win98"))
+    if (strPrefix(magic_bytes, "DC2Win95") ||
+       strPrefix(magic_bytes, "DC2Win98"))
     {
       int position_first_level = 0x00fa;
       int extra_bytes = 4;
@@ -8013,8 +8013,9 @@ void SaveScore(int nr)
 #define SETUP_TOKEN_OVERRIDE_LEVEL_GRAPHICS    28
 #define SETUP_TOKEN_OVERRIDE_LEVEL_SOUNDS      29
 #define SETUP_TOKEN_OVERRIDE_LEVEL_MUSIC       30
+#define SETUP_TOKEN_AUTO_OVERRIDE_ARTWORK      31
 
-#define NUM_GLOBAL_SETUP_TOKENS                        31
+#define NUM_GLOBAL_SETUP_TOKENS                        32
 
 /* editor setup */
 #define SETUP_TOKEN_EDITOR_EL_BOULDERDASH      0
@@ -8142,6 +8143,7 @@ static struct TokenInfo global_setup_tokens[] =
   { TYPE_SWITCH, &si.override_level_graphics, "override_level_graphics"        },
   { TYPE_SWITCH, &si.override_level_sounds,   "override_level_sounds"  },
   { TYPE_SWITCH, &si.override_level_music,    "override_level_music"   },
+  { TYPE_SWITCH, &si.auto_override_artwork,   "auto_override_artwork"  },
 };
 
 static boolean not_used = FALSE;
@@ -8270,8 +8272,6 @@ static void setSetupInfoToDefaults(struct SetupInfo *si)
   si->sound_music = TRUE;
   si->sound_simple = TRUE;
   si->toons = TRUE;
-  si->double_buffering = TRUE;
-  si->direct_draw = !si->double_buffering;
   si->scroll_delay = TRUE;
   si->scroll_delay_value = STD_SCROLL_DELAY;
   si->soft_scrolling = TRUE;
@@ -8292,12 +8292,13 @@ static void setSetupInfoToDefaults(struct SetupInfo *si)
   si->prefer_aga_graphics = TRUE;
   si->game_frame_delay = GAME_FRAME_DELAY;
 
-  si->graphics_set = getStringCopy(GFX_CLASSIC_SUBDIR);
-  si->sounds_set = getStringCopy(SND_CLASSIC_SUBDIR);
-  si->music_set = getStringCopy(MUS_CLASSIC_SUBDIR);
+  si->graphics_set = getStringCopy(GFX_DEFAULT_SUBDIR);
+  si->sounds_set = getStringCopy(SND_DEFAULT_SUBDIR);
+  si->music_set = getStringCopy(MUS_DEFAULT_SUBDIR);
   si->override_level_graphics = FALSE;
   si->override_level_sounds = FALSE;
   si->override_level_music = FALSE;
+  si->auto_override_artwork = FALSE;
 
   si->editor.el_boulderdash            = TRUE;
   si->editor.el_emerald_mine           = TRUE;
@@ -8352,6 +8353,12 @@ static void setSetupInfoToDefaults(struct SetupInfo *si)
   si->system.audio_fragment_size = DEFAULT_AUDIO_FRAGMENT_SIZE;
 
   si->options.verbose = FALSE;
+
+#if defined(CREATE_SPECIAL_EDITION_RND_JUE)
+  si->handicap = FALSE;
+  si->fullscreen = TRUE;
+  si->auto_override_artwork = TRUE;
+#endif
 }
 
 static void setSetupInfoToDefaults_EditorCascade(struct SetupInfo *si)
@@ -8469,8 +8476,6 @@ void LoadSetup()
     checkSetupFileHashIdentifier(setup_file_hash, filename,getCookie("SETUP"));
     decodeSetupFileHash(setup_file_hash);
 
-    setup.direct_draw = !setup.double_buffering;
-
     freeSetupFileHash(setup_file_hash);
 
     /* needed to work around problems with fixed length strings */
@@ -8651,12 +8656,19 @@ void LoadCustomElementDescriptions()
 
 static int getElementFromToken(char *token)
 {
+#if 1
+  char *value = getHashEntry(element_token_hash, token);
+
+  if (value != NULL)
+    return atoi(value);
+#else
   int i;
 
   /* !!! OPTIMIZE THIS BY USING HASH !!! */
   for (i = 0; i < MAX_NUM_ELEMENTS; i++)
     if (strEqual(token, element_info[i].token_name))
       return i;
+#endif
 
   Error(ERR_WARN, "unknown element token '%s'", token);
 
@@ -8700,9 +8712,12 @@ static int get_token_parameter_value(char *token, char *value_raw)
 
 void InitMenuDesignSettings_Static()
 {
+#if 0
   static SetupFileHash *image_config_hash = NULL;
+#endif
   int i;
 
+#if 0
   if (image_config_hash == NULL)
   {
     image_config_hash = newSetupFileHash();
@@ -8712,6 +8727,7 @@ void InitMenuDesignSettings_Static()
                   image_config[i].token,
                   image_config[i].value);
   }
+#endif
 
 #if 1
   /* always start with reliable default values from static default config */
@@ -8945,7 +8961,8 @@ static void LoadMenuDesignSettingsFromFilename(char *filename)
   {
     char *value = getHashEntry(setup_file_hash, image_config_vars[i].token);
 
-    if (value != NULL)
+    /* (ignore definitions set to "[DEFAULT]" which are already initialized) */
+    if (value != NULL && !strEqual(value, ARG_DEFAULT))
       *image_config_vars[i].value =
        get_token_parameter_value(image_config_vars[i].token, value);
   }
@@ -8960,7 +8977,11 @@ void LoadMenuDesignSettings()
   InitMenuDesignSettings_Static();
   InitMenuDesignSettings_SpecialPreProcessing();
 
+#if 1
+  if (!GFX_OVERRIDE_ARTWORK(ARTWORK_TYPE_GRAPHICS))
+#else
   if (!SETUP_OVERRIDE_ARTWORK(setup, ARTWORK_TYPE_GRAPHICS))
+#endif
   {
     /* first look for special settings configured in level series config */
     filename_base = getCustomArtworkLevelConfigFilename(ARTWORK_TYPE_GRAPHICS);