fixed broken door animations when switching between custom graphics
authorHolger Schemel <info@artsoft.org>
Fri, 21 Nov 2014 16:13:04 +0000 (17:13 +0100)
committerHolger Schemel <info@artsoft.org>
Fri, 21 Nov 2014 16:13:04 +0000 (17:13 +0100)
ChangeLog
src/conftime.h
src/init.c
src/tools.c

index e3441b098e65db86c60e0f877f370e816b280f3b..f89b044824084b3e17551cf0b15641ea977d55f8 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,6 @@
+2014-11-19
+       * fixed broken door animations when switching between custom graphics
+
 2014-11-06
        * fixed layout for "level set info" to support custom playfield size
        * fixed changing from title to info screen with custom playfield size
index 32baad7413a38adb93b7d97541105fe48729269f..6640ee06d92313a92b43a069b55a6a5d029e396c 100644 (file)
@@ -1 +1 @@
-#define COMPILE_DATE_STRING "2014-11-06 22:15"
+#define COMPILE_DATE_STRING "2014-11-19 21:47"
index 18a5a2c16199f38dfe9521f9419fe330fb5ccddc..e4b15279a401e5024b84b343b1fb16613e1f0f06 100644 (file)
@@ -5014,6 +5014,9 @@ void InitGfxBuffers()
   InitGfxScrollbufferInfo(FXSIZE, FYSIZE);
   InitGfxClipRegion(FALSE, -1, -1, -1, -1);
 
+  /* required if door size definitions have changed */
+  InitGraphicCompatibilityInfo_Doors();
+
   InitGfxBuffers_EM();
   InitGfxBuffers_SP();
 }
index ad2b3b32619ad586e3118f4e279974f3f40ec23a..d5dc6909490e514acd3bed4cf2d814ac2926420d 100644 (file)
@@ -3936,11 +3936,13 @@ void InitGraphicCompatibilityInfo_Doors()
        {
          num_panel_steps = 2 * door_rect->height / door->step_offset;
          door->panel.start_step = num_panel_steps - num_door_steps;
+         door->panel.start_step_closing = door->panel.start_step;
        }
        else
        {
          num_panel_steps = door_rect->height / door->step_offset;
          door->panel.start_step = num_panel_steps - num_door_steps / 2;
+         door->panel.start_step_closing = door->panel.start_step;
          door->panel.step_delay *= 2;
        }
       }
@@ -4041,15 +4043,6 @@ unsigned int MoveDoor(unsigned int door_state)
   unsigned int door_delay_value;
   int i;
 
-  if (door_1.width < 0 || door_1.width > DXSIZE)
-    door_1.width = DXSIZE;
-  if (door_1.height < 0 || door_1.height > DYSIZE)
-    door_1.height = DYSIZE;
-  if (door_2.width < 0 || door_2.width > VXSIZE)
-    door_2.width = VXSIZE;
-  if (door_2.height < 0 || door_2.height > VYSIZE)
-    door_2.height = VYSIZE;
-
   if (door_state == DOOR_GET_STATE)
     return (door1 | door2);