/* forward declaration for internal use */
static int getGraphicAnimationPhase(int, int, int);
+static void DrawGraphicAnimationShiftedThruMask(int, int, int, int, int,
+ int, int, int);
static void UnmapToolButtons();
static void HandleToolButtons(struct GadgetInfo *);
DrawGraphicShiftedThruMask(sx, sy, sxx, syy, graphic, NO_CUTTING);
+ if (FORCE_FIELD_ON(player))
+ DrawGraphicAnimationShiftedThruMask(sx, sy, sxx, syy, GFX_FUNKELN_BLAU,
+ 3, 8, ANIM_OSCILLATE);
+
if (player->Pushing && player->GfxPos)
{
int px = SCREENX(next_jx), py = SCREENY(next_jy);
DrawGraphicAnimationExt(x, y, graphic, frames, delay, mode, USE_MASKING);
}
+static void DrawGraphicAnimationShiftedThruMask(int sx, int sy,
+ int sxx, int syy,
+ int graphic,
+ int frames, int delay,
+ int mode)
+{
+ int phase = getGraphicAnimationPhase(frames, delay, mode);
+
+ DrawGraphicShiftedThruMask(sx, sy, sxx, syy, graphic + phase, NO_CUTTING);
+}
+
void getGraphicSource(int graphic, int *pixmap_nr, int *x, int *y)
{
if (graphic >= GFX_START_ROCKSSCREEN && graphic <= GFX_END_ROCKSSCREEN)
else if (rechts_massiv)
graphic = GFX_MAUER_L;
}
+ else if ((element == EL_INVISIBLE_STEEL ||
+ element == EL_UNSICHTBAR ||
+ element == EL_SAND_INVISIBLE) && game.light_time_left)
+ {
+ graphic = (element == EL_INVISIBLE_STEEL ? GFX_INVISIBLE_STEEL_ON :
+ element == EL_UNSICHTBAR ? GFX_UNSICHTBAR_ON :
+ GFX_SAND_INVISIBLE_ON);
+ }
if (dx || dy)
DrawGraphicShifted(x, y, dx, dy, graphic, cut_mode, mask_mode);
element = Feld[ux][uy];
- if (element == EL_ERDREICH)
+ if (element == EL_ERDREICH || element == EL_LANDMINE)
{
if (!IN_SCR_FIELD(x, y))
return;
else
element = Feld[uxx][uyy];
- if (element == EL_ERDREICH)
+ if (element == EL_ERDREICH || element == EL_LANDMINE)
continue;
if (i == 1 || i == 2)
uxx = ux + xy[i][0];
uyy = uy + xy[i][1];
- if (!IN_LEV_FIELD(uxx, uyy) || Feld[uxx][uyy] != EL_ERDREICH ||
+ if (!IN_LEV_FIELD(uxx, uyy) ||
+ (Feld[uxx][uyy] != EL_ERDREICH && Feld[uxx][uyy] != EL_LANDMINE) ||
!IN_SCR_FIELD(xx, yy))
continue;
case EL_DOOR_WHITE: return GFX_DOOR_WHITE;
case EL_DOOR_WHITE_GRAY: return GFX_DOOR_WHITE_GRAY;
case EL_KEY_WHITE: return GFX_KEY_WHITE;
- case EL_FORCE_FIELD: return GFX_FORCE_FIELD;
+ case EL_FORCE_FIELD_PASSIVE:return GFX_FORCE_FIELD_PASSIVE;
+ case EL_FORCE_FIELD_ACTIVE: return GFX_FORCE_FIELD_ACTIVE;
case EL_EXTRA_TIME: return GFX_EXTRA_TIME;
case EL_SWITCHGATE_OPEN: return GFX_SWITCHGATE_OPEN;
case EL_SWITCHGATE_CLOSED: return GFX_SWITCHGATE_CLOSED;
- case EL_SWITCHGATE_SWITCH_L:return GFX_SWITCHGATE_SWITCH_L;
- case EL_SWITCHGATE_SWITCH_R:return GFX_SWITCHGATE_SWITCH_R;
+ case EL_SWITCHGATE_SWITCH_1:return GFX_SWITCHGATE_SWITCH_1;
+ case EL_SWITCHGATE_SWITCH_2:return GFX_SWITCHGATE_SWITCH_2;
case EL_TIME_GATE: return GFX_TIME_GATE;
case EL_TIME_GATE_WHEEL: return GFX_TIME_GATE_WHEEL;
case EL_BELT1_LEFT: return GFX_BELT1_LEFT;
case EL_BELT4_SWITCH_R: return GFX_BELT4_SWITCH_R;
case EL_LANDMINE: return GFX_LANDMINE;
case EL_ENVELOPE: return GFX_ENVELOPE;
- case EL_LIGHT_SWITCH: return GFX_LIGHT_SWITCH;
+ case EL_LIGHT_SWITCH_OFF: return GFX_LIGHT_SWITCH_OFF;
+ case EL_LIGHT_SWITCH_ON: return GFX_LIGHT_SWITCH_ON;
case EL_SIGN_EXCLAMATION: return GFX_SIGN_EXCLAMATION;
case EL_SIGN_RADIOACTIVITY: return GFX_SIGN_RADIOACTIVITY;
case EL_SIGN_STOP: return GFX_SIGN_STOP;
case EL_MOLE_DOWN: return GFX_MOLE_DOWN;
case EL_STEEL_SLANTED: return GFX_STEEL_SLANTED;
case EL_SAND_INVISIBLE: return GFX_SAND_INVISIBLE;
+ case EL_DX_UNKNOWN_15: return GFX_DX_UNKNOWN_15;
+ case EL_DX_UNKNOWN_42: return GFX_DX_UNKNOWN_42;
+ case EL_DX_UNKNOWN_229: return GFX_DX_UNKNOWN_229;
+ case EL_DX_UNKNOWN_233: return GFX_DX_UNKNOWN_233;
default:
{