added looking for editor element descriptions in level set directory
authorHolger Schemel <info@artsoft.org>
Mon, 26 Jan 2015 23:57:45 +0000 (00:57 +0100)
committerHolger Schemel <info@artsoft.org>
Mon, 26 Jan 2015 23:57:45 +0000 (00:57 +0100)
ChangeLog
src/editor.c

index fd54470deef6ff1a27fe08bbbc0ecd40252e8976..adc9c2bc614b3bc003cbef62e441b57dc3c6c6f1 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,7 @@
+2015-01-27
+       * added looking for editor element descriptions in level set directory
+         (for example, in file "<my-level-folder>/docs/elements/custom_1.txt")
+
 2015-01-25
        * moved "element properties" button in editor from toolbox to palette
        * added "zoom level tile size" button in editor to toolbox (currently
index 5b1b756031cdc295082a09d7e0f524ddfaeffcbc..a9d575a50d3ceae155d908df2126b5c530c4ba70 100644 (file)
@@ -4787,27 +4787,47 @@ static char *getElementInfoText(int element)
   return info_text;
 }
 
-char *getElementDescriptionFilename(int element)
+static char *getElementDescriptionFilenameExt(char *basename)
 {
-  char *docs_dir = options.docs_directory;
   char *elements_subdir = "elements";
+  static char *elements_subdir2 = NULL;
   static char *filename = NULL;
-  char basename[MAX_FILENAME_LEN];
+
+  if (elements_subdir2 == NULL)
+    elements_subdir2 = getPath2(DOCS_DIRECTORY, elements_subdir);
 
   checked_free(filename);
 
-  /* 1st try: look for element description file for exactly this element */
-  sprintf(basename, "%s.txt", element_info[element].token_name);
-  filename = getPath3(docs_dir, elements_subdir, basename);
+  /* 1st try: look for element description in current level set directory */
+  filename = getPath3(getCurrentLevelDir(), elements_subdir2, basename);
   if (fileExists(filename))
     return filename;
 
   free(filename);
 
+  /* 2nd try: look for element description in the game's base directory */
+  filename = getPath3(options.docs_directory, elements_subdir, basename);
+  if (fileExists(filename))
+    return filename;
+
+  return NULL;
+}
+
+char *getElementDescriptionFilename(int element)
+{
+  char basename[MAX_FILENAME_LEN];
+  char *filename;
+
+  /* 1st try: look for element description file for exactly this element */
+  sprintf(basename, "%s.txt", element_info[element].token_name);
+  filename = getElementDescriptionFilenameExt(basename);
+  if (filename != NULL)
+    return filename;
+
   /* 2nd try: look for element description file for this element's class */
   sprintf(basename, "%s.txt", element_info[element].class_name);
-  filename = getPath3(docs_dir, elements_subdir, basename);
-  if (fileExists(filename))
+  filename = getElementDescriptionFilenameExt(basename);
+  if (filename != NULL)
     return filename;
 
   return NULL;