rnd-20100615-2-src
authorHolger Schemel <info@artsoft.org>
Tue, 15 Jun 2010 20:52:12 +0000 (22:52 +0200)
committerHolger Schemel <info@artsoft.org>
Sat, 30 Aug 2014 08:59:27 +0000 (10:59 +0200)
* added compatibility stuff for redefined "global.door" (which affects
  all parts of that image that have their own graphics definition now)

ChangeLog
src/conftime.h
src/init.c
src/main.h

index 059ade08fbd9f2ae230da4a0d78ca7d0870d4672..491cf301a31b04191a4cab4628e7abad3a7ebf9c 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,7 @@
+2010-06-15
+       * added compatibility stuff for redefined "global.door" (which affects
+         all parts of that image that have their own graphics definition now)
+
 2010-06-14
        * added sound button graphics to graphics config
 
index c6eacc50f2b169bc806be5f491a434362a466cf6..15b7eb6b6972c0a6f533f3fb5f58d96b8d457a1e 100644 (file)
@@ -1 +1 @@
-#define COMPILE_DATE_STRING "2010-06-15 00:25"
+#define COMPILE_DATE_STRING "2010-06-15 22:47"
index 526154eac4c7f1e009c61a8f9e975e01add27b2b..4f7ca41ab30ee78edf0f5ebf7f043af760b05bf3 100644 (file)
@@ -2037,6 +2037,60 @@ static void InitGraphicInfo()
 #endif
 }
 
+static void InitGraphicCompatibilityInfo()
+{
+  struct FileInfo *fi_global_door =
+    getImageListEntryFromImageID(IMG_GLOBAL_DOOR);
+  int num_images = getImageListSize();
+  int i;
+
+  /* the following compatibility handling is needed for the following case:
+     versions up to 3.3.0.0 used one large bitmap "global.door" for various
+     graphics mainly used for door and panel graphics, like editor, tape and
+     in-game buttons with hard-coded bitmap positions and button sizes; as
+     these graphics now have individual definitions, redefining "global.door"
+     to change all these graphics at once like before does not work anymore
+     (because all those individual definitions still have their default values);
+     to solve this, remap all those individual definitions that are not
+     redefined to the new bitmap of "global.door" if it was redefined */
+
+  /* special compatibility handling if image "global.door" was redefined */
+  if (fi_global_door->redefined)
+  {
+    for (i = 0; i < num_images; i++)
+    {
+      struct FileInfo *fi = getImageListEntryFromImageID(i);
+
+      /* process only those images that still use the default settings */
+      if (!fi->redefined)
+      {
+       /* process all images which default to same image as "global.door" */
+       if (strEqual(fi->default_filename, fi_global_door->default_filename))
+       {
+         // printf("::: special treatment needed for token '%s'\n", fi->token);
+
+         graphic_info[i].bitmap = graphic_info[IMG_GLOBAL_DOOR].bitmap;
+       }
+      }
+    }
+  }
+
+#if 0
+  for (i = 0; i < num_images; i++)
+  {
+    struct FileInfo *fi = getImageListEntryFromImageID(i);
+
+    if (i == IMG_GLOBAL_DOOR)
+    {
+      printf("::: %s, %s, %d\n",
+            fi->default_filename,
+            fi->filename,
+            fi->redefined);
+    }
+  }
+#endif
+}
+
 static void InitElementSoundInfo()
 {
   struct PropertyMapping *property_mapping = getSoundListPropertyMapping();
@@ -2432,6 +2486,9 @@ static void ReinitializeGraphics()
   InitGraphicInfo_EM();                        /* graphic mapping for EM engine */
   print_timestamp_time("InitGraphicInfo_EM");
 
+  InitGraphicCompatibilityInfo();
+  print_timestamp_time("InitGraphicCompatibilityInfo");
+
   SetMainBackgroundImage(IMG_BACKGROUND);
   print_timestamp_time("SetMainBackgroundImage");
   SetDoorBackgroundImage(IMG_BACKGROUND_DOOR);
index 088842a05d8c42bf4154f8ef35e4fac2b5652a08..b37e21c50ebf6c13670763a9f23dd9dff66d0b26 100644 (file)
 #define GFX_SPECIAL_ARG_SETUP          9
 #define GFX_SPECIAL_ARG_PLAYING                10
 #define GFX_SPECIAL_ARG_DOOR           11
-#define GFX_SPECIAL_ARG_PANEL          12
-#define GFX_SPECIAL_ARG_PREVIEW                13
-#define GFX_SPECIAL_ARG_CRUMBLED       14
+#define GFX_SPECIAL_ARG_TAPE           12
+#define GFX_SPECIAL_ARG_PANEL          13
+#define GFX_SPECIAL_ARG_PREVIEW                14
+#define GFX_SPECIAL_ARG_CRUMBLED       15
 
-#define NUM_SPECIAL_GFX_ARGS           15
+#define NUM_SPECIAL_GFX_ARGS           16
 
 /* these additional definitions are currently only used for draw offsets */
 #define GFX_SPECIAL_ARG_INFO_MAIN      0
 #define GAME_MODE_SETUP                        9
 #define GAME_MODE_PLAYING              10
 #define GAME_MODE_PSEUDO_DOOR          11
-#define GAME_MODE_PSEUDO_PANEL         12
-#define GAME_MODE_PSEUDO_PREVIEW       13
-#define GAME_MODE_PSEUDO_CRUMBLED      14
+#define GAME_MODE_PSEUDO_TAPE          12
+#define GAME_MODE_PSEUDO_PANEL         13
+#define GAME_MODE_PSEUDO_PREVIEW       14
+#define GAME_MODE_PSEUDO_CRUMBLED      15
 
 /* there are no special config file suffixes for these modes */
-#define GAME_MODE_PSEUDO_TYPENAME      15
-#define GAME_MODE_QUIT                 16
+#define GAME_MODE_PSEUDO_TYPENAME      16
+#define GAME_MODE_QUIT                 17
 
 /* special definitions currently only used for custom artwork configuration */
 #define MUSIC_PREFIX_BACKGROUND                0