-#if 1
- 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;
-#endif
-
- if (door_state == DOOR_GET_STATE)
- return (door1 | door2);
-
- if (door_state & DOOR_SET_STATE)
- {
- if (door_state & DOOR_ACTION_1)
- door1 = door_state & DOOR_ACTION_1;
- if (door_state & DOOR_ACTION_2)
- door2 = door_state & DOOR_ACTION_2;
-
- return (door1 | door2);
- }
-
- if (!(door_state & DOOR_FORCE_REDRAW))
- {
- if (door1 == DOOR_OPEN_1 && door_state & DOOR_OPEN_1)
- door_state &= ~DOOR_OPEN_1;
- else if (door1 == DOOR_CLOSE_1 && door_state & DOOR_CLOSE_1)
- door_state &= ~DOOR_CLOSE_1;
- if (door2 == DOOR_OPEN_2 && door_state & DOOR_OPEN_2)
- door_state &= ~DOOR_OPEN_2;
- else if (door2 == DOOR_CLOSE_2 && door_state & DOOR_CLOSE_2)
- door_state &= ~DOOR_CLOSE_2;
- }
-
- door_delay_value = (door_state & DOOR_ACTION_1 ? door_1.step_delay :
- door_2.step_delay);
-
- // door_delay_value *= 4; // !!! TEST ONLY !!!
-
- if (setup.quick_doors)
- {
- stepsize = 20; /* must be chosen to always draw last frame */
- door_delay_value = 0;
- }
-
- if (global.autoplay_leveldir)
- {
- door_state |= DOOR_NO_DELAY;
- door_state &= ~DOOR_CLOSE_ALL;
- }
-
-#if 1
- if (game_status == GAME_MODE_EDITOR)
- door_state |= DOOR_NO_DELAY;
-#endif
-
- if (door_state & DOOR_ACTION)
- {
-#if 1
- struct GraphicInfo *g1_left = &graphic_info[IMG_DOOR_1_WING_LEFT];
- struct GraphicInfo *g1_right = &graphic_info[IMG_DOOR_1_WING_RIGHT];
- struct GraphicInfo *g2_left = &graphic_info[IMG_DOOR_2_WING_LEFT];
- struct GraphicInfo *g2_right = &graphic_info[IMG_DOOR_2_WING_RIGHT];
- int door_1_left_width = g1_left->width;
- int door_1_left_height = g1_left->height;
- int door_1_right_width = g1_right->width;
- int door_1_right_height = g1_right->height;
- int door_2_left_width = g2_left->width;
- int door_2_left_height = g2_left->height;
- int door_2_right_width = g2_right->width;
- int door_2_right_height = g2_right->height;
- int door_1_width = MAX(door_1_left_width, door_1_right_width);
- int door_1_height = MAX(door_1_left_height, door_1_right_height);
- int door_2_width = MAX(door_2_left_width, door_2_right_width);
- int door_2_height = MAX(door_2_left_height, door_2_right_height);
-#endif
- boolean handle_door_1 = (door_state & DOOR_ACTION_1);
- boolean handle_door_2 = (door_state & DOOR_ACTION_2);
- boolean door_1_done = (!handle_door_1);
- boolean door_2_done = (!handle_door_2);
- boolean door_1_vertical = (door_1.anim_mode & ANIM_VERTICAL);
- boolean door_2_vertical = (door_2.anim_mode & ANIM_VERTICAL);
-#if 1
-#if 1
- int door_size_1 = (door_1_vertical ? door_1_height : door_1_width);
- int door_size_2 = (door_2_vertical ? door_2_height : door_2_width);
-#else
- int door_size_1 = (door_1_vertical ? DYSIZE : DXSIZE);
- int door_size_2 = (door_2_vertical ? VYSIZE : VXSIZE);
-#endif
-#else
- int door_size_1 = (door_1_vertical ? door_1.height : door_1.width);
- int door_size_2 = (door_2_vertical ? door_2.height : door_2.width);
-#endif
- int max_door_size_1 = (door_1_vertical ? DYSIZE : DXSIZE);
- int max_door_size_2 = (door_2_vertical ? VYSIZE : VXSIZE);
- // int door_size = (handle_door_1 ? door_size_1 : door_size_2);
- int door_size = (handle_door_2 ? door_size_2 : door_size_1);
- int max_door_size = (handle_door_1 ? max_door_size_1 : max_door_size_2);
- int door_skip = max_door_size - door_size;
- int end = door_size;
- int start = ((door_state & DOOR_NO_DELAY) ? end : 0);
- int k;
-
- if (!(door_state & DOOR_NO_DELAY) && !setup.quick_doors)
- {
- /* opening door sound has priority over simultaneously closing door */
- if (door_state & (DOOR_OPEN_1 | DOOR_OPEN_2))
- PlayMenuSoundStereo(SND_DOOR_OPENING, SOUND_MIDDLE);
- else if (door_state & (DOOR_CLOSE_1 | DOOR_CLOSE_2))
- PlayMenuSoundStereo(SND_DOOR_CLOSING, SOUND_MIDDLE);
- }
-
- for (k = start; k <= end && !(door_1_done && door_2_done); k += stepsize)
- {
- int x = k;
-#if 0
- Bitmap *bitmap = graphic_info[IMG_GLOBAL_DOOR].bitmap;
- GC gc = bitmap->stored_clip_gc;
-#endif
-
- if (door_state & DOOR_ACTION_1 &&
- x * door_1.step_offset <= door_size_1)
- {
- int a = MIN(x * door_1.step_offset, end);
- int p = (door_state & DOOR_OPEN_1 ? end - a : a);
-#if 1
- int i = p;
-#else
- int i = p + door_skip;
-#endif
-
-#if 1
- struct GraphicInfo *g_left = &graphic_info[IMG_DOOR_1_WING_LEFT];
- struct GraphicInfo *g_right = &graphic_info[IMG_DOOR_1_WING_RIGHT];
- Bitmap *bm_left = g_left->bitmap;
- Bitmap *bm_right = g_right->bitmap;
- GC gc_left = bm_left->stored_clip_gc;
- GC gc_right = bm_right->stored_clip_gc;
-#endif
-
- int classic_dxsize = 100;
- int classic_dysize = 280;
- boolean classic_door_1_size = (DXSIZE == classic_dxsize &&
- DYSIZE == classic_dysize);
-
- if (door_1.anim_mode & ANIM_STATIC_PANEL)
- {
- BlitBitmap(bitmap_db_door, drawto,
- DOOR_GFX_PAGEX1, DOOR_GFX_PAGEY1,
- DXSIZE, DYSIZE, DX, DY);
- }
- else if (x <= a)
- {
- BlitBitmap(bitmap_db_door, drawto,
- DOOR_GFX_PAGEX1, DOOR_GFX_PAGEY1 + p / 2,
- DXSIZE, DYSIZE - p / 2, DX, DY);
-
-#if 1
- // printf("::: p == %d\n", p);
- ClearRectangle(drawto, DX, DY + DYSIZE - p / 2, DXSIZE, p / 2);
-#endif
- }
-
- if (door_1.anim_mode & ANIM_HORIZONTAL && x <= DXSIZE)
- {
-#if 1
- int src1_x = g_right->src_x;
- int src1_y = g_right->src_y;
- int src2_x = g_left->src_x + g_left->width - i;
- int src2_y = g_left->src_y;
- int dst1_x = DX + DXSIZE - i;
- int dst1_y = DY;
- int dst2_x = DX;
- int dst2_y = DY;
- int width = i;
- int height = DYSIZE;
-
- SetClipOrigin(bm_right, gc_right, dst1_x - src1_x, dst1_y - src1_y);
- BlitBitmapMasked(bm_right, drawto, src1_x, src1_y, width, height,
- dst1_x, dst1_y);
-
- SetClipOrigin(bm_left, gc_left, dst2_x - src2_x, dst2_y - src2_y);
- BlitBitmapMasked(bm_left, drawto, src2_x, src2_y, width, height,
- dst2_x, dst2_y);
-#else
- int src1_x = DXSIZE, src1_y = DOOR_GFX_PAGEY1;
- int src2_x = DXSIZE - i, src2_y = DOOR_GFX_PAGEY1;
- int dst1_x = DX + DXSIZE - i, dst1_y = DY;
- int dst2_x = DX, dst2_y = DY;
- int width = i, height = DYSIZE;
-
- SetClipOrigin(bitmap, gc, dst1_x - src1_x, dst1_y - src1_y);
- BlitBitmapMasked(bitmap, drawto, src1_x, src1_y, width, height,
- dst1_x, dst1_y);
-
- SetClipOrigin(bitmap, gc, dst2_x - src2_x, dst2_y - src2_y);
- BlitBitmapMasked(bitmap, drawto, src2_x, src2_y, width, height,
- dst2_x, dst2_y);
-#endif
- }
- else if (door_1.anim_mode & ANIM_VERTICAL && x <= DYSIZE)
- {
-#if 1
- int src1_x = g_right->src_x;
- int src1_y = g_right->src_y;
- int src2_x = g_left->src_x;
- int src2_y = g_left->src_y + g_left->height - i;
- int dst1_x = DX;
- int dst1_y = DY + DYSIZE - i;
- int dst2_x = DX;
- int dst2_y = DY;
- int width = DXSIZE;
- int height = i;
-
- SetClipOrigin(bm_right, gc_right, dst1_x - src1_x, dst1_y - src1_y);
- BlitBitmapMasked(bm_right, drawto, src1_x, src1_y, width, height,
- dst1_x, dst1_y);
-
- SetClipOrigin(bm_left, gc_left, dst2_x - src2_x, dst2_y - src2_y);
- BlitBitmapMasked(bm_left, drawto, src2_x, src2_y, width, height,
- dst2_x, dst2_y);
-#else
- int src1_x = DXSIZE, src1_y = DOOR_GFX_PAGEY1;
- int src2_x = 0, src2_y = DOOR_GFX_PAGEY1 + DYSIZE - i;
- int dst1_x = DX, dst1_y = DY + DYSIZE - i;
- int dst2_x = DX, dst2_y = DY;
- int width = DXSIZE, height = i;
-
- SetClipOrigin(bitmap, gc, dst1_x - src1_x, dst1_y - src1_y);
- BlitBitmapMasked(bitmap, drawto, src1_x, src1_y, width, height,
- dst1_x, dst1_y);
-
- SetClipOrigin(bitmap, gc, dst2_x - src2_x, dst2_y - src2_y);
- BlitBitmapMasked(bitmap, drawto, src2_x, src2_y, width, height,
- dst2_x, dst2_y);
-#endif
- }
- else if (classic_door_1_size && x <= DXSIZE) /* ANIM_DEFAULT */
- {
- int j = (door_1.anim_mode == ANIM_DEFAULT ? (DXSIZE - i) / 3 : 0);
-
-#if 1
- int src1_x = g_right->src_x;
- int src1_y = g_right->src_y;
- int src2_x = g_left->src_x + g_left->width - i;
- int src2_y = g_left->src_y;
- int dst1_x = DX + DXSIZE - i;
- int dst1_y = DY;
- int dst2_x = DX;
- int dst2_y = DY;
- int width = i;
- int height1 = 63, height2 = DYSIZE / 2 - height1;
- int ypos1 = 0, ypos2 = height2;
- int ypos3 = DYSIZE / 2, ypos4 = DYSIZE - height2;
-
- SetClipOrigin(bm_right, gc_right,
- dst1_x - src1_x, dst1_y - src1_y + j);
- BlitBitmapMasked(bm_right, drawto,
- src1_x, src1_y + ypos1, width, height2,
- dst1_x, dst1_y + ypos1 + j);
- BlitBitmapMasked(bm_right, drawto,
- src1_x, src1_y + ypos3, width, height1,
- dst1_x, dst1_y + ypos3 + j);
- SetClipOrigin(bm_left, gc_left,
- dst2_x - src2_x, dst2_y - src2_y - j);
- BlitBitmapMasked(bm_left, drawto,
- src2_x, src2_y + ypos1 + j, width, height2 - j,
- dst2_x, dst2_y + ypos1);
- BlitBitmapMasked(bm_left, drawto,
- src2_x, src2_y + ypos3, width, height1,
- dst2_x, dst2_y + ypos3 - j);
-
- SetClipOrigin(bm_left, gc_left,
- dst2_x - src2_x, dst2_y - src2_y - j);
- BlitBitmapMasked(bm_left, drawto,
- src2_x, src2_y + ypos2, width, height1,
- dst2_x, dst2_y + ypos2 - j);
- BlitBitmapMasked(bm_left, drawto,
- src2_x, src2_y + ypos4, width, height2,
- dst2_x, dst2_y + ypos4 - j);
- SetClipOrigin(bm_right, gc_right,
- dst1_x - src1_x, dst1_y - src1_y + j);
- BlitBitmapMasked(bm_right, drawto,
- src1_x, src1_y + ypos2, width, height1,
- dst1_x, dst1_y + ypos2 + j);
- BlitBitmapMasked(bm_right, drawto,
- src1_x, src1_y + ypos4, width, height2 - j,
- dst1_x, dst1_y + ypos4 + j);
-
-#else
- int src1_x = DXSIZE, src1_y = DOOR_GFX_PAGEY1;
- int src2_x = DXSIZE - i, src2_y = DOOR_GFX_PAGEY1;
- int dst1_x = DX + DXSIZE - i, dst1_y = DY;
- int dst2_x = DX, dst2_y = DY;
- int width = i, height = DYSIZE;
- int ypos1 = 63, ypos2 = 77, ypos3 = 140, ypos4 = 203;
-
- SetClipOrigin(bitmap, gc, dst1_x - src1_x, dst1_y - src1_y + j);
- BlitBitmapMasked(bitmap, drawto,
- src1_x, src1_y, width, ypos2,
- dst1_x, dst1_y + j);
- BlitBitmapMasked(bitmap, drawto,
- src1_x, src1_y + ypos3, width, ypos1,
- dst1_x, dst1_y + ypos3 + j);
- SetClipOrigin(bitmap, gc, dst2_x - src2_x, dst2_y - src2_y - j);
- BlitBitmapMasked(bitmap, drawto,
- src2_x, src2_y + j, width, ypos2 - j,
- dst2_x, dst2_y);
- BlitBitmapMasked(bitmap, drawto,
- src2_x, src2_y + ypos3, width, ypos1,
- dst2_x, dst2_y + ypos3 - j);
-
- SetClipOrigin(bitmap, gc, dst2_x - src2_x, dst2_y - src2_y - j);
- BlitBitmapMasked(bitmap, drawto,
- src2_x, src2_y + ypos2, width, ypos1,
- dst2_x, dst2_y + ypos2 - j);
- BlitBitmapMasked(bitmap, drawto,
- src2_x, src2_y + ypos4, width, ypos2,
- dst2_x, dst2_y + ypos4 - j);
- SetClipOrigin(bitmap, gc, dst1_x - src1_x, dst1_y - src1_y + j);
- BlitBitmapMasked(bitmap, drawto,
- src1_x, src1_y + ypos2, width, ypos1,
- dst1_x, dst1_y + ypos2 + j);
- BlitBitmapMasked(bitmap, drawto,
- src1_x, src1_y + ypos4, width, ypos2 - j,
- dst1_x, dst1_y + ypos4 + j);
-
- /*
- SetClipOrigin(bitmap, gc, DX - i, (DY + j) - DOOR_GFX_PAGEY1);
- BlitBitmapMasked(bitmap, drawto,
- DXSIZE, DOOR_GFX_PAGEY1, i, 77,
- DX + DXSIZE - i, DY + j);
- BlitBitmapMasked(bitmap, drawto,
- DXSIZE, DOOR_GFX_PAGEY1 + 140, i, 63,
- DX + DXSIZE - i, DY + 140 + j);
- SetClipOrigin(bitmap, gc, DX - DXSIZE + i,
- DY - (DOOR_GFX_PAGEY1 + j));
- BlitBitmapMasked(bitmap, drawto,
- DXSIZE - i, DOOR_GFX_PAGEY1 + j, i, 77 - j,
- DX, DY);
- BlitBitmapMasked(bitmap, drawto,
- DXSIZE-i, DOOR_GFX_PAGEY1 + 140, i, 63,
- DX, DY + 140 - j);
-
- BlitBitmapMasked(bitmap, drawto,
- DXSIZE - i, DOOR_GFX_PAGEY1 + 77, i, 63,
- DX, DY + 77 - j);
- BlitBitmapMasked(bitmap, drawto,
- DXSIZE - i, DOOR_GFX_PAGEY1 + 203, i, 77,
- DX, DY + 203 - j);
- SetClipOrigin(bitmap, gc, DX - i, (DY + j) - DOOR_GFX_PAGEY1);
- BlitBitmapMasked(bitmap, drawto,
- DXSIZE, DOOR_GFX_PAGEY1 + 77, i, 63,
- DX + DXSIZE - i, DY + 77 + j);
- BlitBitmapMasked(bitmap, drawto,
- DXSIZE, DOOR_GFX_PAGEY1 + 203, i, 77 - j,
- DX + DXSIZE - i, DY + 203 + j);
- */
-#endif
- }
-
- redraw_mask |= REDRAW_DOOR_1;
- door_1_done = (a == end);
- }
-
- if (door_state & DOOR_ACTION_2 &&
- x * door_2.step_offset <= door_size_2)
- {
- int a = MIN(x * door_2.step_offset, door_size);
- int p = (door_state & DOOR_OPEN_2 ? door_size - a : a);
- int i = p + door_skip;
-
-#if 1
- struct GraphicInfo *g_left = &graphic_info[IMG_DOOR_2_WING_LEFT];
- struct GraphicInfo *g_right = &graphic_info[IMG_DOOR_2_WING_RIGHT];
- Bitmap *bm_left = g_left->bitmap;
- Bitmap *bm_right = g_right->bitmap;
- GC gc_left = bm_left->stored_clip_gc;
- GC gc_right = bm_right->stored_clip_gc;
-#endif
-
- int classic_vxsize = 100;
- int classic_vysize = 100;
- boolean classic_door_2_size = (VXSIZE == classic_vxsize &&
- VYSIZE == classic_vysize);
-
- if (door_2.anim_mode & ANIM_STATIC_PANEL)
- {
- BlitBitmap(bitmap_db_door, drawto,
- DOOR_GFX_PAGEX1, DOOR_GFX_PAGEY2,
- VXSIZE, VYSIZE, VX, VY);
- }
- else if (x <= VYSIZE)
- {
- BlitBitmap(bitmap_db_door, drawto,
- DOOR_GFX_PAGEX1, DOOR_GFX_PAGEY2 + p / 2,
- VXSIZE, VYSIZE - p / 2, VX, VY);
-
- ClearRectangle(drawto, VX, VY + VYSIZE - p / 2, VXSIZE, p / 2);
- }
-
- if (door_2.anim_mode & ANIM_HORIZONTAL && x <= VXSIZE)
- {
-#if 1
- int src1_x = g_right->src_x;
- int src1_y = g_right->src_y;
- int src2_x = g_left->src_x + g_left->width - i;
- int src2_y = g_left->src_y;
- int dst1_x = VX + VXSIZE - i;
- int dst1_y = VY;
- int dst2_x = VX;
- int dst2_y = VY;
- int width = i;
- int height = VYSIZE;
-
- SetClipOrigin(bm_right, gc_right, dst1_x - src1_x, dst1_y - src1_y);
- BlitBitmapMasked(bm_right, drawto, src1_x, src1_y, width, height,
- dst1_x, dst1_y);
-
- SetClipOrigin(bm_left, gc_left, dst2_x - src2_x, dst2_y - src2_y);
- BlitBitmapMasked(bm_left, drawto, src2_x, src2_y, width, height,
- dst2_x, dst2_y);
-#else
- int src1_x = VXSIZE, src1_y = DOOR_GFX_PAGEY2;
- int src2_x = VXSIZE - i, src2_y = DOOR_GFX_PAGEY2;
- int dst1_x = VX + VXSIZE - i, dst1_y = VY;
- int dst2_x = VX, dst2_y = VY;
- int width = i, height = VYSIZE;
-
- SetClipOrigin(bitmap, gc, dst1_x - src1_x, dst1_y - src1_y);
- BlitBitmapMasked(bitmap, drawto, src1_x, src1_y, width, height,
- dst1_x, dst1_y);
-
- SetClipOrigin(bitmap, gc, dst2_x - src2_x, dst2_y - src2_y);
- BlitBitmapMasked(bitmap, drawto, src2_x, src2_y, width, height,
- dst2_x, dst2_y);
-#endif
- }
- else if (door_2.anim_mode & ANIM_VERTICAL && x <= VYSIZE)
- {
-#if 1
- int src1_x = g_right->src_x;
- int src1_y = g_right->src_y;
- int src2_x = g_left->src_x;
- int src2_y = g_left->src_y + g_left->height - i;
- int dst1_x = VX;
- int dst1_y = VY + VYSIZE - i;
- int dst2_x = VX;
- int dst2_y = VY;
- int width = VXSIZE;
- int height = i;
-
- SetClipOrigin(bm_right, gc_right, dst1_x - src1_x, dst1_y - src1_y);
- BlitBitmapMasked(bm_right, drawto, src1_x, src1_y, width, height,
- dst1_x, dst1_y);
-
- SetClipOrigin(bm_left, gc_left, dst2_x - src2_x, dst2_y - src2_y);
- BlitBitmapMasked(bm_left, drawto, src2_x, src2_y, width, height,
- dst2_x, dst2_y);
-#else
- int src1_x = VXSIZE, src1_y = DOOR_GFX_PAGEY2;
- int src2_x = 0, src2_y = DOOR_GFX_PAGEY2 + VYSIZE - i;
- int dst1_x = VX, dst1_y = VY + VYSIZE - i;
- int dst2_x = VX, dst2_y = VY;
- int width = VXSIZE, height = i;
-
- SetClipOrigin(bitmap, gc, dst1_x - src1_x, dst1_y - src1_y);
- BlitBitmapMasked(bitmap, drawto, src1_x, src1_y, width, height,
- dst1_x, dst1_y);
-
- SetClipOrigin(bitmap, gc, dst2_x - src2_x, dst2_y - src2_y);
- BlitBitmapMasked(bitmap, drawto, src2_x, src2_y, width, height,
- dst2_x, dst2_y);
-#endif
- }
- else if (classic_door_2_size && x <= VXSIZE) /* ANIM_DEFAULT */
- {
- int j = (door_2.anim_mode == ANIM_DEFAULT ? (VXSIZE - i) / 3 : 0);
-
-#if 1
- int src1_x = g_right->src_x;
- int src1_y = g_right->src_y;
- int src2_x = g_left->src_x + g_left->width - i;
- int src2_y = g_left->src_y;
- int dst1_x = VX + VXSIZE - i;
- int dst1_y = VY;
- int dst2_x = VX;
- int dst2_y = VY;
- int width = i;
- int height = VYSIZE / 2;
- int ypos1 = 0, ypos2 = VYSIZE / 2;
-
- SetClipOrigin(bm_right, gc_right,
- dst1_x - src1_x, dst1_y - src1_y + j);
- BlitBitmapMasked(bm_right, drawto,
- src1_x, src1_y + ypos1, width, height,
- dst1_x, dst1_y + ypos1 + j);
- SetClipOrigin(bm_left, gc_left,
- dst2_x - src2_x, dst2_y - src2_y - j);
- BlitBitmapMasked(bm_left, drawto,
- src2_x, src2_y + ypos1 + j, width, height - j,
- dst2_x, dst2_y + ypos1);
-
- SetClipOrigin(bm_left, gc_left,
- dst2_x - src2_x, dst2_y - src2_y - j);
- BlitBitmapMasked(bm_left, drawto,
- src2_x, src2_y + ypos2, width, height,
- dst2_x, dst2_y + ypos2 - j);
- SetClipOrigin(bm_right, gc_right,
- dst1_x - src1_x, dst1_y - src1_y + j);
- BlitBitmapMasked(bm_right, drawto,
- src1_x, src1_y + ypos2, width, height - j,
- dst1_x, dst1_y + ypos2 + j);
-#else
- int src1_x = VXSIZE, src1_y = DOOR_GFX_PAGEY2;
- int src2_x = VXSIZE - i, src2_y = DOOR_GFX_PAGEY2;
- int dst1_x = VX + VXSIZE - i, dst1_y = VY;
- int dst2_x = VX, dst2_y = VY;
- int width = i, height = VYSIZE;
- int ypos = VYSIZE / 2;
-
- SetClipOrigin(bitmap, gc, dst1_x - src1_x, dst1_y - src1_y + j);
- BlitBitmapMasked(bitmap, drawto,
- src1_x, src1_y, width, ypos,
- dst1_x, dst1_y + j);
- SetClipOrigin(bitmap, gc, dst2_x - src2_x, dst2_y - src1_y - j);
- BlitBitmapMasked(bitmap, drawto,
- src2_x, src2_y + j, width, ypos - j,
- dst2_x, dst2_y);
-
- SetClipOrigin(bitmap, gc, dst2_x - src2_x, dst2_y - src1_y - j);
- BlitBitmapMasked(bitmap, drawto,
- src2_x, src2_y + ypos, width, ypos,
- dst2_x, dst2_y + ypos - j);
- SetClipOrigin(bitmap, gc, dst1_x - src1_x, dst1_y - src1_y + j);
- BlitBitmapMasked(bitmap, drawto,
- src1_x, src1_y + ypos, width, ypos - j,
- dst1_x, dst1_y + ypos + j);
-
- /*
- SetClipOrigin(bitmap, gc, VX - i, (VY + j) - DOOR_GFX_PAGEY2);
- BlitBitmapMasked(bitmap, drawto,
- VXSIZE, DOOR_GFX_PAGEY2, i, VYSIZE / 2,
- VX + VXSIZE - i, VY + j);
- SetClipOrigin(bitmap, gc,
- VX - VXSIZE + i, VY - (DOOR_GFX_PAGEY2 + j));
- BlitBitmapMasked(bitmap, drawto,
- VXSIZE - i, DOOR_GFX_PAGEY2 + j, i, VYSIZE / 2 - j,
- VX, VY);
-
- BlitBitmapMasked(bitmap, drawto,
- VXSIZE - i, DOOR_GFX_PAGEY2 + VYSIZE / 2,
- i, VYSIZE / 2, VX, VY + VYSIZE / 2 - j);
- SetClipOrigin(bitmap, gc, VX - i, (VY + j) - DOOR_GFX_PAGEY2);
- BlitBitmapMasked(bitmap, drawto,
- VXSIZE, DOOR_GFX_PAGEY2 + VYSIZE / 2,
- i, VYSIZE / 2 - j,
- VX + VXSIZE - i, VY + VYSIZE / 2 + j);
- */
-#endif
- }
-
- redraw_mask |= REDRAW_DOOR_2;
- door_2_done = (a == VXSIZE);
- }
-
- if (!(door_state & DOOR_NO_DELAY))
- {
- BackToFront();
-
- if (game_status == GAME_MODE_MAIN)
- DoAnimation();
-
- WaitUntilDelayReached(&door_delay, door_delay_value);
- }
- }
- }
-
- if (door_state & DOOR_ACTION_1)
- door1 = door_state & DOOR_ACTION_1;
- if (door_state & DOOR_ACTION_2)
- door2 = door_state & DOOR_ACTION_2;
-
- return (door1 | door2);
-}
-
-void DrawSpecialEditorDoor()