static struct GadgetInfo *tool_gadget[NUM_TOOL_BUTTONS];
static int request_gadget_id = -1;
+void DumpTile(int x, int y)
+{
+ int sx = SCREENX(x);
+ int sy = SCREENX(y);
+
+ printf_line("-", 79);
+ printf("Field Info: SCREEN(%d, %d), LEVEL(%d, %d)\n", sx, sy, x, y);
+ printf_line("-", 79);
+
+ if (!IN_LEV_FIELD(x, y))
+ {
+ printf("(not in level field)\n");
+ printf("\n");
+
+ return;
+ }
+
+ printf(" Feld: %d ['%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(" MovPos: %d\n", MovPos[x][y]);
+ printf(" MovDir: %d\n", MovDir[x][y]);
+ printf(" MovDelay: %d\n", MovDelay[x][y]);
+ printf(" ChangeDelay: %d\n", ChangeDelay[x][y]);
+ printf(" GfxElement: %d\n", GfxElement[x][y]);
+ printf(" GfxAction: %d\n", GfxAction[x][y]);
+ printf(" GfxFrame: %d\n", GfxFrame[x][y]);
+ printf("\n");
+}
+
void SetDrawtoField(int mode)
{
if (mode == DRAW_BUFFERED && setup.soft_scrolling)
DrawScreenElementShifted(x, y, 0, MovPos[lx][ly], content, cut_mode);
if (content == EL_ACID)
- DrawLevelElementThruMask(lx, ly + 1, EL_ACID);
+ {
+ int dir = MovDir[lx][ly];
+ int newlx = lx + (dir == MV_LEFT ? -1 : dir == MV_RIGHT ? +1 : 0);
+ int newly = ly + (dir == MV_UP ? -1 : dir == MV_DOWN ? +1 : 0);
+
+ DrawLevelElementThruMask(newlx, newly, EL_ACID);
+ }
}
else if (IS_BLOCKED(lx, ly))
{
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);
unsigned long anim_delay = 0;
- int anim_delay_value = (ffwd_delay ? FfwdFrameDelay : GameFrameDelay);
+ int frame_delay_value = (ffwd_delay ? FfwdFrameDelay : GameFrameDelay);
+ int anim_delay_value = (no_delay ? 0 : frame_delay_value);
int font_nr = FONT_ENVELOPE_1 + envelope_nr;
int font_width = getFontWidth(font_nr);
int font_height = getFontHeight(font_nr);
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);
- int wait_delay_value = (ffwd_delay ? 500 : 1000);
+ boolean no_delay = (tape.index_search);
+ 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;
int main_anim_mode = (anim_mode == ANIM_NONE ? ANIM_VERTICAL|ANIM_HORIZONTAL:
anim_mode == ANIM_DEFAULT ? ANIM_VERTICAL : anim_mode);
stepsize = 20; /* must be choosen to always draw last frame */
door_delay_value = 0;
+#if 0
StopSound(SND_DOOR_OPENING);
StopSound(SND_DOOR_CLOSING);
+#endif
}
if (global.autoplay_leveldir)
door_1.anim_mode == ANIM_VERTICAL ? DYSIZE : DXSIZE);
int x;
- if (!(door_state & DOOR_NO_DELAY))
+ 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))
}
}
+#if 0
if (setup.quick_doors)
{
StopSound(SND_DOOR_OPENING);
StopSound(SND_DOOR_CLOSING);
}
+#endif
if (door_state & DOOR_ACTION_1)
door1 = door_state & DOOR_ACTION_1;