rnd-20140311-1-src
[rocksndiamonds.git] / src / init.c
index ab342b8a3de917dd2490c2ecbd960f1c254976bb..d6df6a85dc64a814c066c26bb9570ddd56fd2218 100644 (file)
@@ -1771,6 +1771,7 @@ static void InitGraphicInfo()
     IMG_BACKGROUND_ENVELOPE_2,
     IMG_BACKGROUND_ENVELOPE_3,
     IMG_BACKGROUND_ENVELOPE_4,
+    IMG_BACKGROUND_REQUEST,
 
     IMG_BACKGROUND,
     IMG_BACKGROUND_TITLE_INITIAL,
@@ -1785,11 +1786,15 @@ static void InitGraphicInfo()
     IMG_BACKGROUND_INFO_MUSIC,
     IMG_BACKGROUND_INFO_CREDITS,
     IMG_BACKGROUND_INFO_PROGRAM,
+    IMG_BACKGROUND_INFO_VERSION,
     IMG_BACKGROUND_INFO_LEVELSET,
     IMG_BACKGROUND_SETUP,
+    IMG_BACKGROUND_PLAYING,
     IMG_BACKGROUND_DOOR,
     IMG_BACKGROUND_TAPE,
     IMG_BACKGROUND_PANEL,
+    IMG_BACKGROUND_PALETTE,
+    IMG_BACKGROUND_TOOLBOX,
 
     IMG_TITLESCREEN_INITIAL_1,
     IMG_TITLESCREEN_INITIAL_2,
@@ -1802,6 +1807,17 @@ static void InitGraphicInfo()
     IMG_TITLESCREEN_4,
     IMG_TITLESCREEN_5,
 
+    IMG_BACKGROUND_TITLEMESSAGE_INITIAL_1,
+    IMG_BACKGROUND_TITLEMESSAGE_INITIAL_2,
+    IMG_BACKGROUND_TITLEMESSAGE_INITIAL_3,
+    IMG_BACKGROUND_TITLEMESSAGE_INITIAL_4,
+    IMG_BACKGROUND_TITLEMESSAGE_INITIAL_5,
+    IMG_BACKGROUND_TITLEMESSAGE_1,
+    IMG_BACKGROUND_TITLEMESSAGE_2,
+    IMG_BACKGROUND_TITLEMESSAGE_3,
+    IMG_BACKGROUND_TITLEMESSAGE_4,
+    IMG_BACKGROUND_TITLEMESSAGE_5,
+
     -1
   };
 
@@ -2002,6 +2018,54 @@ static void InitGraphicCompatibilityInfo()
     }
   }
 
+#if 1
+  InitGraphicCompatibilityInfo_Doors();
+#endif
+
+#if 0
+  struct
+  {
+    int graphic;
+    int *width, *height;
+    boolean right_wing;
+  }
+  doors[] =
+  {
+    { IMG_DOOR_1_WING_LEFT,    &door_1.width,  &door_1.height, FALSE   },
+    { IMG_DOOR_1_WING_RIGHT,   &door_1.width,  &door_1.height, TRUE    },
+    { IMG_DOOR_2_WING_LEFT,    &door_2.width,  &door_2.height, FALSE   },
+    { IMG_DOOR_2_WING_RIGHT,   &door_2.width,  &door_2.height, TRUE    },
+
+    { 0,                       NULL,           NULL,           FALSE   }
+  };
+
+  for (i = 0; doors[i].graphic != 0; i++)
+  {
+    int graphic = doors[i].graphic;
+    int *width  = doors[i].width;
+    int *height = doors[i].height;
+    boolean right_wing = doors[i].right_wing;
+
+    struct FileInfo *fi = getImageListEntryFromImageID(graphic);
+    struct GraphicInfo *g = &graphic_info[graphic];
+
+    if (!fi->redefined)
+    {
+      if (*width != -1)
+      {
+       // correct start position for right wing of "standard" door graphic
+       if (right_wing)
+         g->src_x += g->width - *width;
+
+       g->width = *width;
+      }
+
+      if (*height != -1)
+       g->height = *height;
+    }
+  }
+#endif
+
 #if 0
   for (i = 0; i < num_images; i++)
   {
@@ -2425,6 +2489,8 @@ static void ReinitializeGraphics()
   print_timestamp_time("InitGadgets");
   InitToons();
   print_timestamp_time("InitToons");
+  InitDoors();
+  print_timestamp_time("InitDoors");
 
   print_timestamp_done("ReinitializeGraphics");
 }
@@ -5493,11 +5559,16 @@ static void InitMixer()
 
 void InitGfxBuffers()
 {
+  /* create additional image buffers for double-buffering and cross-fading */
   ReCreateBitmap(&bitmap_db_store, WIN_XSIZE, WIN_YSIZE, DEFAULT_DEPTH);
   ReCreateBitmap(&bitmap_db_cross, WIN_XSIZE, WIN_YSIZE, DEFAULT_DEPTH);
   ReCreateBitmap(&bitmap_db_field, FXSIZE, FYSIZE, DEFAULT_DEPTH);
   ReCreateBitmap(&bitmap_db_panel, DXSIZE, DYSIZE, DEFAULT_DEPTH);
+#if 0
   ReCreateBitmap(&bitmap_db_door, 3 * DXSIZE, DYSIZE + VYSIZE, DEFAULT_DEPTH);
+#endif
+  ReCreateBitmap(&bitmap_db_door_1, 3 * DXSIZE, DYSIZE, DEFAULT_DEPTH);
+  ReCreateBitmap(&bitmap_db_door_2, 3 * VXSIZE, VYSIZE, DEFAULT_DEPTH);
   ReCreateBitmap(&bitmap_db_toons, FULL_SXSIZE, FULL_SYSIZE, DEFAULT_DEPTH);
 
   /* initialize screen properties */
@@ -5506,6 +5577,7 @@ void InitGfxBuffers()
                   bitmap_db_field);
   InitGfxDoor1Info(DX, DY, DXSIZE, DYSIZE);
   InitGfxDoor2Info(VX, VY, VXSIZE, VYSIZE);
+  InitGfxDoor3Info(EX, EY, EXSIZE, EYSIZE);
   InitGfxWindowInfo(WIN_XSIZE, WIN_YSIZE);
   InitGfxScrollbufferInfo(FXSIZE, FYSIZE);
   InitGfxClipRegion(FALSE, -1, -1, -1, -1);
@@ -5560,27 +5632,7 @@ void InitGfx()
   if (filename_font_initial == NULL)   /* should not happen */
     Error(ERR_EXIT, "cannot get filename for '%s'", CONFIG_TOKEN_FONT_INITIAL);
 
-#if 1
   InitGfxBuffers();
-#else
-  /* create additional image buffers for double-buffering and cross-fading */
-  bitmap_db_store = CreateBitmap(WIN_XSIZE, WIN_YSIZE, DEFAULT_DEPTH);
-  bitmap_db_cross = CreateBitmap(WIN_XSIZE, WIN_YSIZE, DEFAULT_DEPTH);
-  bitmap_db_field = CreateBitmap(FXSIZE, FYSIZE, DEFAULT_DEPTH);
-  bitmap_db_panel = CreateBitmap(DXSIZE, DYSIZE, DEFAULT_DEPTH);
-  bitmap_db_door  = CreateBitmap(3 * DXSIZE, DYSIZE + VYSIZE, DEFAULT_DEPTH);
-  bitmap_db_toons = CreateBitmap(FULL_SXSIZE, FULL_SYSIZE, DEFAULT_DEPTH);
-
-  /* initialize screen properties */
-  InitGfxFieldInfo(SX, SY, SXSIZE, SYSIZE,
-                  REAL_SX, REAL_SY, FULL_SXSIZE, FULL_SYSIZE,
-                  bitmap_db_field);
-  InitGfxDoor1Info(DX, DY, DXSIZE, DYSIZE);
-  InitGfxDoor2Info(VX, VY, VXSIZE, VYSIZE);
-  InitGfxWindowInfo(WIN_XSIZE, WIN_YSIZE);
-  InitGfxScrollbufferInfo(FXSIZE, FYSIZE);
-#endif
-
   InitGfxCustomArtworkInfo();
 
   bitmap_font_initial = LoadCustomImage(filename_font_initial);
@@ -5592,7 +5644,7 @@ void InitGfx()
 
   font_height = getFontHeight(FC_RED);
 
-#if 1
+#if 0
   DrawInitTextAlways(getWindowTitleString(), 20, FC_YELLOW);
 #else
   DrawInitTextAlways(getProgramInitString(), 20, FC_YELLOW);