+static char *getSetupArtworkDir(TreeInfo *ti)
+{
+ static char *artwork_dir = NULL;
+
+ if (artwork_dir != NULL)
+ free(artwork_dir);
+
+ artwork_dir = getPath2(ti->basepath, ti->fullpath);
+
+ return artwork_dir;
+}
+
+void setLevelArtworkDir(TreeInfo *ti)
+{
+ char **artwork_path_ptr, **artwork_set_ptr;
+ TreeInfo *level_artwork;
+
+ TreeInfo *tst1 = getTreeInfoFromIdentifier(leveldir_first, "jue1");
+ printf("::: XXX 0.1 '%s'\n", tst1->graphics_path);
+
+ if (ti == NULL || leveldir_current == NULL)
+ return;
+
+ artwork_path_ptr = &(LEVELDIR_ARTWORK_PATH(leveldir_current, ti->type));
+ artwork_set_ptr = &(LEVELDIR_ARTWORK_SET( leveldir_current, ti->type));
+
+ printf("::: ['%s', '%s']\n", tst1->identifier, leveldir_current->identifier);
+
+ printf("::: XXX 0.2 '%s' [%x]\n", tst1->graphics_path, tst1->graphics_path);
+
+#if 1
+ if (*artwork_path_ptr != NULL)
+ {
+ if (ti->type == 0)
+ printf("::: free'ing '%s' [%x] [%x] [type %d] ...\n",
+ *artwork_path_ptr, *artwork_path_ptr,
+ leveldir_current->graphics_path, ti->type);
+
+ free(*artwork_path_ptr);
+ }
+#endif
+
+ printf("::: XXX 0.3 '%s' [%x]\n", tst1->graphics_path, tst1->graphics_path);
+
+ if ((level_artwork = getTreeInfoFromIdentifier(ti, *artwork_set_ptr)))
+ {
+ *artwork_path_ptr = getStringCopy(getSetupArtworkDir(level_artwork));
+
+ printf(":1: setting to '%s' [type %d] ...\n", *artwork_path_ptr, ti->type);
+ }
+ else
+ {
+ /* No (or non-existing) artwork configured in "levelinfo.conf". This would
+ normally result in using the artwork configured in the setup menu. But
+ if an artwork subdirectory exists (which might contain custom artwork
+ or an artwork configuration file), this level artwork must be treated
+ as relative to the default "classic" artwork, not to the artwork that
+ is currently configured in the setup menu. */
+
+ char *dir = getPath2(getCurrentLevelDir(), ARTWORK_DIRECTORY(ti->type));
+
+ if (*artwork_set_ptr != NULL)
+ free(*artwork_set_ptr);
+
+ if (fileExists(dir))
+ {
+ *artwork_path_ptr = getStringCopy(getDefaultArtworkDir(ti->type));
+ *artwork_set_ptr = getStringCopy(getDefaultArtworkSet(ti->type));
+
+ if (ti->type == 0)
+ printf(":2: setting to '%s' [type %d] ...\n",
+ *artwork_path_ptr, ti->type);
+ }
+ else
+ {
+ *artwork_path_ptr = getStringCopy(UNDEFINED_FILENAME);
+ *artwork_set_ptr = NULL;
+
+ if (ti->type == 0)
+ printf(":3: setting to '%s' [type %d] ...\n",
+ *artwork_path_ptr, ti->type);
+ }
+
+ free(dir);
+ }
+}
+
+inline static char *getLevelArtworkSet(int type)
+{
+ if (leveldir_current == NULL)
+ return NULL;
+
+ return LEVELDIR_ARTWORK_SET(leveldir_current, type);
+}
+
+inline static char *getLevelArtworkDir(int type)
+{
+ if (leveldir_current == NULL)
+ return UNDEFINED_FILENAME;
+
+ return LEVELDIR_ARTWORK_PATH(leveldir_current, type);
+}
+