static struct GadgetInfo *tool_gadget[NUM_TOOL_BUTTONS];
static int request_gadget_id = -1;
+static char *print_if_not_empty(int element)
+{
+ static char *s = NULL;
+ char *token_name = element_info[element].token_name;
+
+ if (s != NULL)
+ free(s);
+
+ s = checked_malloc(strlen(token_name) + 10 + 1);
+
+ if (element != EL_EMPTY)
+ sprintf(s, "%d\t['%s']", element, token_name);
+ else
+ sprintf(s, "%d", element);
+
+ return s;
+}
+
void DumpTile(int x, int y)
{
int sx = SCREENX(x);
return;
}
- printf(" Feld: %d ['%s']\n", Feld[x][y],
+ printf(" Feld: %d\t['%s']\n", Feld[x][y],
element_info[Feld[x][y]].token_name);
- printf(" Back: %d\n", Back[x][y]);
- printf(" Store: %d\n", Store[x][y]);
- printf(" Store2: %d\n", Store2[x][y]);
- printf(" StorePlayer: %d\n", StorePlayer[x][y]);
+ printf(" Back: %s\n", print_if_not_empty(Back[x][y]));
+ printf(" Store: %s\n", print_if_not_empty(Store[x][y]));
+ printf(" Store2: %s\n", print_if_not_empty(Store2[x][y]));
+ printf(" StorePlayer: %s\n", print_if_not_empty(StorePlayer[x][y]));
printf(" MovPos: %d\n", MovPos[x][y]);
printf(" MovDir: %d\n", MovDir[x][y]);
printf(" MovDelay: %d\n", MovDelay[x][y]);
{
if (redraw_mask & REDRAW_DOOR_1)
BlitBitmap(backbuffer, window, DX, DY, DXSIZE, DYSIZE, DX, DY);
+
if (redraw_mask & REDRAW_DOOR_2)
{
+#if 0
if ((redraw_mask & REDRAW_DOOR_2) == REDRAW_DOOR_2)
- BlitBitmap(backbuffer, window, VX,VY, VXSIZE,VYSIZE, VX,VY);
+#endif
+ BlitBitmap(backbuffer, window, VX, VY, VXSIZE, VYSIZE, VX, VY);
+#if 0
else
{
if (redraw_mask & REDRAW_VIDEO_1)
BlitBitmap(backbuffer, window,
- VX+VIDEO_DISPLAY1_XPOS,VY+VIDEO_DISPLAY1_YPOS,
- VIDEO_DISPLAY_XSIZE,VIDEO_DISPLAY_YSIZE,
- VX+VIDEO_DISPLAY1_XPOS,VY+VIDEO_DISPLAY1_YPOS);
+ VX + VIDEO_DISPLAY1_XPOS, VY + VIDEO_DISPLAY1_YPOS,
+ VIDEO_DISPLAY_XSIZE, VIDEO_DISPLAY_YSIZE,
+ VX + VIDEO_DISPLAY1_XPOS, VY + VIDEO_DISPLAY1_YPOS);
if (redraw_mask & REDRAW_VIDEO_2)
BlitBitmap(backbuffer, window,
- VX+VIDEO_DISPLAY2_XPOS,VY+VIDEO_DISPLAY2_YPOS,
- VIDEO_DISPLAY_XSIZE,VIDEO_DISPLAY_YSIZE,
- VX+VIDEO_DISPLAY2_XPOS,VY+VIDEO_DISPLAY2_YPOS);
+ VX + VIDEO_DISPLAY2_XPOS, VY + VIDEO_DISPLAY2_YPOS,
+ VIDEO_DISPLAY_XSIZE, VIDEO_DISPLAY_YSIZE,
+ VX + VIDEO_DISPLAY2_XPOS, VY + VIDEO_DISPLAY2_YPOS);
if (redraw_mask & REDRAW_VIDEO_3)
BlitBitmap(backbuffer, window,
- VX+VIDEO_CONTROL_XPOS,VY+VIDEO_CONTROL_YPOS,
- VIDEO_CONTROL_XSIZE,VIDEO_CONTROL_YSIZE,
- VX+VIDEO_CONTROL_XPOS,VY+VIDEO_CONTROL_YPOS);
+ VX + VIDEO_CONTROL_XPOS, VY + VIDEO_CONTROL_YPOS,
+ VIDEO_CONTROL_XSIZE, VIDEO_CONTROL_YSIZE,
+ VX + VIDEO_CONTROL_XPOS, VY + VIDEO_CONTROL_YPOS);
}
+#endif
}
if (redraw_mask & REDRAW_DOOR_3)
if (redraw_mask & REDRAW_TILES)
{
for (x = 0; x < SCR_FIELDX; x++)
- for (y =0 ; y < SCR_FIELDY; y++)
+ for (y = 0 ; y < SCR_FIELDY; y++)
if (redraw[redraw_x1 + x][redraw_y1 + y])
BlitBitmap(buffer, window,
- FX + x * TILEX, FX + y * TILEY, TILEX, TILEY,
+ FX + x * TILEX, FY + y * TILEY, TILEX, TILEY,
SX + x * TILEX, SY + y * TILEY);
}
else if (player_is_moving && IS_ACCESSIBLE_UNDER(last_element))
DrawLevelFieldThruMask(last_jx, last_jy);
- /* ... and the field the player is entering */
- if (IS_ACCESSIBLE_INSIDE(element))
- DrawLevelField(jx, jy);
- else if (IS_ACCESSIBLE_UNDER(element))
- DrawLevelFieldThruMask(jx, jy);
+#if 0
+ /* !!! I have forgotton what this should be good for !!! */
+ /* !!! causes player being visible when pushing from within tubes !!! */
+ if (!player->is_pushing)
+#endif
+ {
+ /* ... and the field the player is entering */
+ if (IS_ACCESSIBLE_INSIDE(element))
+ DrawLevelField(jx, jy);
+ else if (IS_ACCESSIBLE_UNDER(element))
+ DrawLevelFieldThruMask(jx, jy);
+ }
if (setup.direct_draw)
{
boolean draw_masked = graphic_info[graphic].draw_masked;
int mask_mode = (draw_masked ? BLIT_MASKED : BLIT_ON_BACKGROUND);
boolean ffwd_delay = (tape.playing && tape.fast_forward);
- boolean no_delay = (tape.index_search);
+ boolean no_delay = (tape.warp_forward);
unsigned long anim_delay = 0;
int frame_delay_value = (ffwd_delay ? FfwdFrameDelay : GameFrameDelay);
int anim_delay_value = (no_delay ? 0 : frame_delay_value);
int sound_opening = element_info[element].sound[ACTION_OPENING];
int sound_closing = element_info[element].sound[ACTION_CLOSING];
boolean ffwd_delay = (tape.playing && tape.fast_forward);
- boolean no_delay = (tape.index_search);
+ boolean no_delay = (tape.warp_forward);
int normal_delay_value = ONE_SECOND_DELAY / (ffwd_delay ? 2 : 1);
int wait_delay_value = (no_delay ? 0 : normal_delay_value);
int anim_mode = graphic_info[graphic].anim_mode;
}
}
+#if 1
+ /* disable deactivated drawing when quick-loading level tape recording */
+ if (tape.playing && tape.deactivate_display)
+ TapeDeactivateDisplayOff(TRUE);
+#endif
+
#if 1
SetMouseCursor(CURSOR_DEFAULT);
#endif
-#if defined(PLATFORM_UNIX)
+#if defined(NETWORK_AVALIABLE)
/* pause network game while waiting for request to answer */
if (options.network &&
game_status == GAME_MODE_PLAYING &&
if (!(req_state & REQ_STAY_CLOSED) && (old_door_state & DOOR_OPEN_1))
{
BlitBitmap(bitmap_db_door, bitmap_db_door,
- DOOR_GFX_PAGEX2,DOOR_GFX_PAGEY1, DXSIZE,DYSIZE,
- DOOR_GFX_PAGEX1,DOOR_GFX_PAGEY1);
+ DOOR_GFX_PAGEX2, DOOR_GFX_PAGEY1, DXSIZE, DYSIZE,
+ DOOR_GFX_PAGEX1, DOOR_GFX_PAGEY1);
OpenDoor(DOOR_OPEN_1);
}
}
SetDrawBackgroundMask(REDRAW_FIELD);
-#if defined(PLATFORM_UNIX)
+#if defined(NETWORK_AVALIABLE)
/* continue network game after request */
if (options.network &&
game_status == GAME_MODE_PLAYING &&
SendToServer_ContinuePlaying();
#endif
+#if 1
+ /* restore deactivated drawing when quick-loading level tape recording */
+ if (tape.playing && tape.deactivate_display)
+ TapeDeactivateDisplayOn();
+#endif
+
return result;
}
return el_act_dir2img(element, ACTION_DEFAULT, direction);
}
+int el2baseimg(int element)
+{
+ return element_info[element].graphic[ACTION_DEFAULT];
+}
+
int el2img(int element)
{
element = GFX_ELEMENT(element);