*x = SX + (graphic % GFX_PER_LINE) * TILEX;
*y = SY + (graphic / GFX_PER_LINE) * TILEY;
}
- else if (graphic >= GFX_START_ROCKSMORE && graphic <= GFX_END_ROCKSMORE)
- {
- graphic -= GFX_START_ROCKSMORE;
- *pixmap_nr = PIX_MORE;
- *x = (graphic % MORE_PER_LINE) * TILEX;
- *y = (graphic / MORE_PER_LINE) * TILEY;
- }
else if (graphic >= GFX_START_ROCKSHEROES && graphic <= GFX_END_ROCKSHEROES)
{
graphic -= GFX_START_ROCKSHEROES;
*x = (graphic % HEROES_PER_LINE) * TILEX;
*y = (graphic / HEROES_PER_LINE) * TILEY;
}
+ else if (graphic >= GFX_START_ROCKSSP && graphic <= GFX_END_ROCKSSP)
+ {
+ graphic -= GFX_START_ROCKSSP;
+ *pixmap_nr = PIX_SP;
+ *x = (graphic % SP_PER_LINE) * TILEX;
+ *y = (graphic / SP_PER_LINE) * TILEY;
+ }
+ else if (graphic >= GFX_START_ROCKSDC && graphic <= GFX_END_ROCKSDC)
+ {
+ graphic -= GFX_START_ROCKSDC;
+ *pixmap_nr = PIX_DC;
+ *x = (graphic % DC_PER_LINE) * TILEX;
+ *y = (graphic / DC_PER_LINE) * TILEY;
+ }
else if (graphic >= GFX_START_ROCKSFONT && graphic <= GFX_END_ROCKSFONT)
{
graphic -= GFX_START_ROCKSFONT;
}
else
{
- *pixmap_nr = PIX_MORE;
+ *pixmap_nr = PIX_SP;
*x = 0;
*y = 0;
}
*x = MINI_GFX_STARTX + (graphic % MINI_GFX_PER_LINE) * MINI_TILEX;
*y = MINI_GFX_STARTY + (graphic / MINI_GFX_PER_LINE) * MINI_TILEY;
}
- else if (graphic >= GFX_START_ROCKSMORE && graphic <= GFX_END_ROCKSMORE)
+ else if (graphic >= GFX_START_ROCKSSP && graphic <= GFX_END_ROCKSSP)
+ {
+ graphic -= GFX_START_ROCKSSP;
+ graphic -= ((graphic / SP_PER_LINE) * SP_PER_LINE) / 2;
+ *pixmap = pix[PIX_SP];
+ *x = MINI_SP_STARTX + (graphic % MINI_SP_PER_LINE) * MINI_TILEX;
+ *y = MINI_SP_STARTY + (graphic / MINI_SP_PER_LINE) * MINI_TILEY;
+ }
+ else if (graphic >= GFX_START_ROCKSDC && graphic <= GFX_END_ROCKSDC)
{
- graphic -= GFX_START_ROCKSMORE;
- graphic -= ((graphic / MORE_PER_LINE) * MORE_PER_LINE) / 2;
- *pixmap = pix[PIX_MORE];
- *x = MINI_MORE_STARTX + (graphic % MINI_MORE_PER_LINE) * MINI_TILEX;
- *y = MINI_MORE_STARTY + (graphic / MINI_MORE_PER_LINE) * MINI_TILEY;
+ graphic -= GFX_START_ROCKSDC;
+ *pixmap = pix[PIX_DC];
+ *x = MINI_DC_STARTX + (graphic % MINI_DC_PER_LINE) * MINI_TILEX;
+ *y = MINI_DC_STARTY + (graphic / MINI_DC_PER_LINE) * MINI_TILEY;
}
else if (graphic >= GFX_START_ROCKSFONT && graphic <= GFX_END_ROCKSFONT)
{
}
else
{
- *pixmap = pix[PIX_MORE];
- *x = MINI_MORE_STARTX;
- *y = MINI_MORE_STARTY;
+ *pixmap = pix[PIX_SP];
+ *x = MINI_SP_STARTX;
+ *y = MINI_SP_STARTY;
}
}
else if ((element == EL_FELSBROCKEN || element == EL_SP_ZONK ||
IS_GEM(element)) && !cut_mode)
{
- if (element == EL_FELSBROCKEN || element == EL_SP_ZONK)
+ if (uy >= lev_fieldy-1 || !IS_BELT(Feld[ux][uy+1]))
{
- if (dir == MV_LEFT)
- graphic += (4 - phase4) % 4;
- else if (dir == MV_RIGHT)
- graphic += phase4;
- else
- graphic += phase2 * 2;
+ if (element == EL_FELSBROCKEN || element == EL_SP_ZONK)
+ {
+ if (dir == MV_LEFT)
+ graphic += (4 - phase4) % 4;
+ else if (dir == MV_RIGHT)
+ graphic += phase4;
+ else
+ graphic += phase2 * 2;
+ }
+ else if (element != EL_SP_INFOTRON)
+ graphic += phase2;
}
- else if (element != EL_SP_INFOTRON)
- graphic += phase2;
}
else if (element == EL_SIEB_LEER || element == EL_SIEB2_LEER ||
element == EL_SIEB_VOLL || element == EL_SIEB2_VOLL)
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;
graphic = el2gfx(element);
- if (graphic >= GFX_START_ROCKSMORE && graphic <= GFX_END_ROCKSMORE)
+ if (graphic >= GFX_START_ROCKSSP && graphic <= GFX_END_ROCKSSP)
+ {
+ graphic -= GFX_START_ROCKSSP;
+ graphic -= ((graphic / SP_PER_LINE) * SP_PER_LINE) / 2;
+ XCopyArea(display, pix[PIX_SP], drawto, gc,
+ MICRO_SP_STARTX + (graphic % MICRO_SP_PER_LINE) * MICRO_TILEX,
+ MICRO_SP_STARTY + (graphic / MICRO_SP_PER_LINE) * MICRO_TILEY,
+ MICRO_TILEX, MICRO_TILEY, xpos, ypos);
+ }
+ else if (graphic >= GFX_START_ROCKSDC && graphic <= GFX_END_ROCKSDC)
{
- graphic -= GFX_START_ROCKSMORE;
- graphic -= ((graphic / MORE_PER_LINE) * MORE_PER_LINE) / 2;
- XCopyArea(display, pix[PIX_MORE], drawto, gc,
- MICRO_MORE_STARTX + (graphic % MICRO_MORE_PER_LINE) *MICRO_TILEX,
- MICRO_MORE_STARTY + (graphic / MICRO_MORE_PER_LINE) *MICRO_TILEY,
+ graphic -= GFX_START_ROCKSDC;
+ XCopyArea(display, pix[PIX_DC], drawto, gc,
+ MICRO_DC_STARTX + (graphic % MICRO_DC_PER_LINE) * MICRO_TILEX,
+ MICRO_DC_STARTY + (graphic / MICRO_DC_PER_LINE) * MICRO_TILEY,
MICRO_TILEX, MICRO_TILEY, xpos, ypos);
}
else
case EL_KEY_WHITE: return GFX_KEY_WHITE;
case EL_FORCE_FIELD: return GFX_FORCE_FIELD;
case EL_EXTRA_TIME: return GFX_EXTRA_TIME;
- case EL_SWITCH_GATE_OPEN: return GFX_SWITCH_GATE_OPEN;
- case EL_SWITCH_GATE_CLOSED: return GFX_SWITCH_GATE_CLOSED;
- case EL_SWITCH_GATE_SWITCH: return GFX_SWITCH_GATE_SWITCH;
+ case EL_SWITCHGATE_OPEN: return GFX_SWITCHGATE_OPEN;
+ case EL_SWITCHGATE_CLOSED: return GFX_SWITCHGATE_CLOSED;
+ 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_BELT_GREEN_LEFT: return GFX_BELT_GREEN_LEFT;
- case EL_BELT_GREEN_MIDDLE: return GFX_BELT_GREEN_MIDDLE;
- case EL_BELT_GREEN_RIGHT: return GFX_BELT_GREEN_RIGHT;
- case EL_BELT_GREEN_SWITCH: return GFX_BELT_GREEN_SWITCH;
- case EL_BELT_RED_LEFT: return GFX_BELT_RED_LEFT;
- case EL_BELT_RED_MIDDLE: return GFX_BELT_RED_MIDDLE;
- case EL_BELT_RED_RIGHT: return GFX_BELT_RED_RIGHT;
- case EL_BELT_RED_SWITCH: return GFX_BELT_RED_SWITCH;
- case EL_BELT_BLUE_LEFT: return GFX_BELT_BLUE_LEFT;
- case EL_BELT_BLUE_MIDDLE: return GFX_BELT_BLUE_MIDDLE;
- case EL_BELT_BLUE_RIGHT: return GFX_BELT_BLUE_RIGHT;
- case EL_BELT_BLUE_SWITCH: return GFX_BELT_BLUE_SWITCH;
+ case EL_BELT1_LEFT: return GFX_BELT1_LEFT;
+ case EL_BELT1_MIDDLE: return GFX_BELT1_MIDDLE;
+ case EL_BELT1_RIGHT: return GFX_BELT1_RIGHT;
+ case EL_BELT1_SWITCH_L: return GFX_BELT1_SWITCH_L;
+ case EL_BELT1_SWITCH_M: return GFX_BELT1_SWITCH_M;
+ case EL_BELT1_SWITCH_R: return GFX_BELT1_SWITCH_R;
+ case EL_BELT2_LEFT: return GFX_BELT2_LEFT;
+ case EL_BELT2_MIDDLE: return GFX_BELT2_MIDDLE;
+ case EL_BELT2_RIGHT: return GFX_BELT2_RIGHT;
+ case EL_BELT2_SWITCH_L: return GFX_BELT2_SWITCH_L;
+ case EL_BELT2_SWITCH_M: return GFX_BELT2_SWITCH_M;
+ case EL_BELT2_SWITCH_R: return GFX_BELT2_SWITCH_R;
+ case EL_BELT3_LEFT: return GFX_BELT3_LEFT;
+ case EL_BELT3_MIDDLE: return GFX_BELT3_MIDDLE;
+ case EL_BELT3_RIGHT: return GFX_BELT3_RIGHT;
+ case EL_BELT3_SWITCH_L: return GFX_BELT3_SWITCH_L;
+ case EL_BELT3_SWITCH_M: return GFX_BELT3_SWITCH_M;
+ case EL_BELT3_SWITCH_R: return GFX_BELT3_SWITCH_R;
+ case EL_BELT4_LEFT: return GFX_BELT4_LEFT;
+ case EL_BELT4_MIDDLE: return GFX_BELT4_MIDDLE;
+ case EL_BELT4_RIGHT: return GFX_BELT4_RIGHT;
+ case EL_BELT4_SWITCH_L: return GFX_BELT4_SWITCH_L;
+ case EL_BELT4_SWITCH_M: return GFX_BELT4_SWITCH_M;
+ 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;
int nr_element = element - EL_SP_START;
int gfx_per_line = 8;
int nr_graphic =
- (nr_element / gfx_per_line) * MORE_PER_LINE +
+ (nr_element / gfx_per_line) * SP_PER_LINE +
(nr_element % gfx_per_line);
- return GFX_START_ROCKSMORE + nr_graphic;
+ return GFX_START_ROCKSSP + nr_graphic;
}
else
return -1;