added marking all images from non-default graphics directory as "redefined"
authorHolger Schemel <info@artsoft.org>
Sat, 29 May 2021 09:25:39 +0000 (11:25 +0200)
committerHolger Schemel <info@artsoft.org>
Sat, 29 May 2021 09:38:46 +0000 (11:38 +0200)
This change is required for the case of custom graphics sets that
replace graphics by simply adding an image file with the same filename
as the default graphics, like "RocksElements.png", but without adding
changed graphics definitions in a "graphicsinfo.conf" config file.

This caused the new (custom) image file to be loaded instead of the
default image file, but did not mark the affected game graphics in the
custom image file to be "redefined" so far (which is required to
invalidate related action or direction graphics loaded from other
image files, which are now overridden by the new base graphics).

This change marks all graphics in such images files as "redefined".

src/libgame/misc.c

index ff64284eee2061a52b267666418b1a95d63100c5..36e576bc59c15a8e2945cb7e24f199f6de372026 100644 (file)
@@ -3769,6 +3769,11 @@ static void replaceArtworkListEntry(struct ArtworkListInfo *artwork_info,
   char *basename = file_list_entry->filename;
   char *filename = getCustomArtworkFilename(basename, artwork_info->type);
 
+  // mark all images from non-default graphics directory as "redefined"
+  if (artwork_info->type == ARTWORK_TYPE_GRAPHICS &&
+      !strPrefix(filename, options.graphics_directory))
+    file_list_entry->redefined = TRUE;
+
   if (filename == NULL)
   {
     Warn("cannot find artwork file '%s'", basename);