changed resizing window instead of recreating it on window size changes
[rocksndiamonds.git] / src / libgame / setup.c
index 1c3a5dc73ea3429abc4b7f16e84bf2fefe5a36ac..5c16feb5bb4d770855383946b907554db66e5583 100644 (file)
@@ -1371,10 +1371,13 @@ void InitUserLevelDirectory(char *level_subdir)
   {
     createDirectory(getMainUserGameDataDir(), "main user data");
     createDirectory(getUserLevelDir(NULL), "main user level");
-    createDirectory(getUserLevelDir(level_subdir), "user level");
 
     if (setup.internal.create_user_levelset)
+    {
+      createDirectory(getUserLevelDir(level_subdir), "user level");
+
       SaveUserLevelInfo();
+    }
   }
 }
 
@@ -2727,10 +2730,11 @@ SetupFileHash *loadSetupFileHash(char *filename)
 #define LEVELINFO_TOKEN_EMPTY_LEVEL_NAME       27
 #define LEVELINFO_TOKEN_FORCE_LEVEL_NAME       28
 #define LEVELINFO_TOKEN_HANDICAP               29
-#define LEVELINFO_TOKEN_SKIP_LEVELS            30
-#define LEVELINFO_TOKEN_USE_EMC_TILES          31
+#define LEVELINFO_TOKEN_TIME_LIMIT             30
+#define LEVELINFO_TOKEN_SKIP_LEVELS            31
+#define LEVELINFO_TOKEN_USE_EMC_TILES          32
 
-#define NUM_LEVELINFO_TOKENS                   32
+#define NUM_LEVELINFO_TOKENS                   33
 
 static LevelDirTree ldi;
 
@@ -2767,6 +2771,7 @@ static struct TokenInfo levelinfo_tokens[] =
   { TYPE_STRING,       &ldi.empty_level_name,  "empty_level_name"      },
   { TYPE_BOOLEAN,      &ldi.force_level_name,  "force_level_name"      },
   { TYPE_BOOLEAN,      &ldi.handicap,          "handicap"              },
+  { TYPE_BOOLEAN,      &ldi.time_limit,        "time_limit"            },
   { TYPE_BOOLEAN,      &ldi.skip_levels,       "skip_levels"           },
   { TYPE_BOOLEAN,      &ldi.use_emc_tiles,     "use_emc_tiles"         }
 };
@@ -2873,6 +2878,7 @@ static void setTreeInfoToDefaults(TreeInfo *ti, int type)
     ti->handicap_level = 0;
     ti->readonly = TRUE;
     ti->handicap = TRUE;
+    ti->time_limit = TRUE;
     ti->skip_levels = FALSE;
 
     ti->use_emc_tiles = FALSE;
@@ -2958,6 +2964,7 @@ static void setTreeInfoToDefaultsFromParent(TreeInfo *ti, TreeInfo *parent)
     ti->handicap_level = parent->handicap_level;
     ti->readonly = parent->readonly;
     ti->handicap = parent->handicap;
+    ti->time_limit = parent->time_limit;
     ti->skip_levels = parent->skip_levels;
 
     ti->use_emc_tiles = parent->use_emc_tiles;
@@ -3030,6 +3037,7 @@ static TreeInfo *getTreeInfoCopy(TreeInfo *ti)
   ti_copy->user_defined                = ti->user_defined;
   ti_copy->readonly            = ti->readonly;
   ti_copy->handicap            = ti->handicap;
+  ti_copy->time_limit          = ti->time_limit;
   ti_copy->skip_levels         = ti->skip_levels;
 
   ti_copy->use_emc_tiles       = ti->use_emc_tiles;
@@ -3890,9 +3898,13 @@ static void LoadLevelInfoFromLevelDir(TreeInfo **node_first,
                                                    level_directory, ".");
   }
 
-  if (!valid_entry_found)
+  boolean valid_entry_expected =
+    (strEqual(level_directory, options.level_directory) ||
+     setup.internal.create_user_levelset);
+
+  if (valid_entry_expected && !valid_entry_found)
     Warn("cannot find any valid level series in directory '%s'",
-         level_directory);
+        level_directory);
 }
 
 boolean AdjustGraphicsForEMC(void)