int preview_height = preview.ysize * tile_size;
int real_preview_xsize = MIN(level_xsize, preview.xsize);
int real_preview_ysize = MIN(level_ysize, preview.ysize);
+ int real_preview_width = real_preview_xsize * tile_size;
+ int real_preview_height = real_preview_ysize * tile_size;
int dst_x = SX + ALIGNED_XPOS(preview.x, preview_width, preview.align);
int dst_y = SY + ALIGNED_YPOS(preview.y, preview_height, preview.valign);
int x, y;
+#if 1
+ if (!IN_GFX_FIELD_FULL(dst_x, dst_y + preview_height - 1))
+ return;
+#endif
+
+#if 0
+ dst_x += (preview_width - real_preview_width) / 2;
+ dst_y += (preview_height - real_preview_height) / 2;
+
+ DrawBackground(dst_x, dst_y, real_preview_width, real_preview_height);
+#else
DrawBackground(dst_x, dst_y, preview_width, preview_height);
- dst_x += (preview_width - real_preview_xsize * tile_size) / 2;
- dst_y += (preview_height - real_preview_ysize * tile_size) / 2;
+ dst_x += (preview_width - real_preview_width) / 2;
+ dst_y += (preview_height - real_preview_height) / 2;
+#endif
for (x = 0; x < real_preview_xsize; x++)
{
int font_nr = pos->font;
int i;
+ if (!IN_GFX_FIELD_FULL(pos->x, pos->y + getFontHeight(pos->font)))
+ return;
+
if (mode == MICROLABEL_LEVEL_AUTHOR_HEAD ||
mode == MICROLABEL_IMPORTED_FROM_HEAD ||
mode == MICROLABEL_IMPORTED_BY_HEAD)
label_text[max_len_label_text] = '\0';
#if 1
- DrawTextSAligned(pos->x, pos->y, label_text, font_nr, pos->align);
+ if (IN_GFX_FIELD_FULL(pos->x, pos->y + getFontHeight(pos->font)))
+ DrawTextSAligned(pos->x, pos->y, label_text, font_nr, pos->align);
#else
lxpos = SX + (SXSIZE - getTextWidth(label_text, font_nr)) / 2;
lypos = SY + MICROLABEL1_YPOS;
CloseDoor(DOOR_CLOSE_1);
/* save old door content */
+#if 1
+ BlitBitmap(bitmap_db_door_1, bitmap_db_door_1,
+ 0 * DXSIZE, 0, DXSIZE, DYSIZE, 1 * DXSIZE, 0);
+#else
BlitBitmap(bitmap_db_door, bitmap_db_door,
DOOR_GFX_PAGEX1, DOOR_GFX_PAGEY1, DXSIZE, DYSIZE,
DOOR_GFX_PAGEX2, DOOR_GFX_PAGEY1);
+#endif
}
SetDoorBackgroundImage(IMG_BACKGROUND_DOOR);
}
/* copy request gadgets to door backbuffer */
+#if 1
+ BlitBitmap(drawto, bitmap_db_door_1, DX, DY, DXSIZE, DYSIZE, 0, 0);
+#else
BlitBitmap(drawto, bitmap_db_door,
DX, DY, DXSIZE, DYSIZE,
DOOR_GFX_PAGEX1, DOOR_GFX_PAGEY1);
+#endif
OpenDoor(DOOR_OPEN_1);
{
if (door_state & DOOR_COPY_BACK)
{
+#if 1
+ if (door_state & DOOR_OPEN_1)
+ BlitBitmap(bitmap_db_door_1, bitmap_db_door_1,
+ 1 * DXSIZE, 0, DXSIZE, DYSIZE, 0 * DXSIZE, 0);
+
+ if (door_state & DOOR_OPEN_2)
+ BlitBitmap(bitmap_db_door_2, bitmap_db_door_2,
+ 1 * VXSIZE, 0, VXSIZE, VYSIZE, 0 * VXSIZE, 0);
+#else
if (door_state & DOOR_OPEN_1)
BlitBitmap(bitmap_db_door, bitmap_db_door,
DOOR_GFX_PAGEX2, DOOR_GFX_PAGEY1, DXSIZE, DYSIZE,
BlitBitmap(bitmap_db_door, bitmap_db_door,
DOOR_GFX_PAGEX2, DOOR_GFX_PAGEY2, VXSIZE, VYSIZE,
DOOR_GFX_PAGEX1, DOOR_GFX_PAGEY2);
+#endif
door_state &= ~DOOR_COPY_BACK;
}
if (!(door_state & DOOR_NO_COPY_BACK))
{
+#if 1
+ if (old_door_state & DOOR_OPEN_1)
+ BlitBitmap(backbuffer, bitmap_db_door_1,
+ DX, DY, DXSIZE, DYSIZE, 0, 0);
+
+ if (old_door_state & DOOR_OPEN_2)
+ BlitBitmap(backbuffer, bitmap_db_door_2,
+ VX, VY, VXSIZE, VYSIZE, 0, 0);
+#else
if (old_door_state & DOOR_OPEN_1)
BlitBitmap(backbuffer, bitmap_db_door,
DX, DY, DXSIZE, DYSIZE, DOOR_GFX_PAGEX1, DOOR_GFX_PAGEY1);
if (old_door_state & DOOR_OPEN_2)
BlitBitmap(backbuffer, bitmap_db_door,
VX, VY, VXSIZE, VYSIZE, DOOR_GFX_PAGEX1, DOOR_GFX_PAGEY2);
+#endif
door_state &= ~DOOR_NO_COPY_BACK;
}
unsigned int MoveDoor(unsigned int door_state)
{
+#if 0
struct XY panel_pos_list[] =
{
{ DOOR_GFX_PAGEX1, DOOR_GFX_PAGEY1 },
{ DOOR_GFX_PAGEX1, DOOR_GFX_PAGEY2 },
};
+#endif
struct Rect door_rect_list[] =
{
{ DX, DY, DXSIZE, DYSIZE },
int door_token = dpc->door_token;
int door_index = DOOR_INDEX_FROM_TOKEN(door_token);
boolean is_panel = DOOR_PART_IS_PANEL(nr);
+#if 0
struct XY *panel_pos = &panel_pos_list[door_index];
+#endif
struct Rect *door_rect = &door_rect_list[door_index];
+ Bitmap *bitmap_db_door = (door_token == DOOR_1 ? bitmap_db_door_1 :
+ bitmap_db_door_2);
Bitmap *bitmap = (is_panel ? bitmap_db_door : g->bitmap);
int current_door_state = door_state & door_token;
boolean door_opening = ((current_door_state & DOOR_OPEN) != 0);
int dst_x, dst_y, dst_xx, dst_yy;
int width, height;
+#if 0
+ if (k == 0 && is_panel && door_token == DOOR_2)
+ printf("::: %d, %d\n", g->width, g->height);
+#endif
+
#if 0
if (DOOR_PART_IS_PANEL(nr))
{
if (is_panel)
{
+#if 1
+ src_x = src_xx;
+ src_y = src_yy;
+#else
src_x = panel_pos->x + src_xx;
src_y = panel_pos->y + src_yy;
+#endif
}
else
{