fixed graphic problems caused by tile size bugs in custom graphics
authorHolger Schemel <info@artsoft.org>
Fri, 28 Aug 2015 17:32:08 +0000 (19:32 +0200)
committerHolger Schemel <info@artsoft.org>
Fri, 28 Aug 2015 17:32:08 +0000 (19:32 +0200)
(also see commit '8125bee6411975e55f2f571748782b11e9b6aae9')

src/libgame/image.c

index 7f789cff7d28b14ce7e8b62dc4d0e934c7b59bfa..7fc7e2b82bca4edbaad546b5e996ac623b545658 100644 (file)
@@ -270,7 +270,6 @@ static boolean CheckIfImageContainsSmallImages(ImageInfo *img_info,
   // custom artwork set redefines classic (or default) graphics with wrong tile
   // size (by mistake or by intention), it will be corrected to its original
   // tile size here by forcing complete re-creation of all small images again
-  // (this does not work if different tile sizes are used in same image file)
 
   if (!strEqual(img_info->leveldir, leveldir_current->identifier) &&
       img_info->conf_tile_size != tile_size)
@@ -304,6 +303,16 @@ static boolean CheckIfImageContainsSmallImages(ImageInfo *img_info,
     return FALSE;
   }
 
+  // special case 1 (continued):
+  //
+  // if different tile sizes are used in same image file (usually by mistake,
+  // like forgetting option ".tile_size" for one or more graphic definitions),
+  // make sure to use only the first tile size that is processed for this image
+  // (and ignore all subsequent, potentially different tile size definitions
+  // for this image within the current level set by disabling the above check)
+
+  setString(&img_info->leveldir, leveldir_current->identifier);
+
   // special case 2:
   //
   // graphic config setting "game.tile_size" has changed since last level set;