int getFontWidth(int font_size, int font_type)
{
return (font_size == FS_BIG ? FONT1_XSIZE :
+ font_size == FS_MEDIUM ? FONT6_XSIZE :
font_type == FC_SPECIAL1 ? FONT3_XSIZE :
font_type == FC_SPECIAL2 ? FONT4_XSIZE :
font_type == FC_SPECIAL3 ? FONT5_XSIZE :
int getFontHeight(int font_size, int font_type)
{
return (font_size == FS_BIG ? FONT1_YSIZE :
+ font_size == FS_MEDIUM ? FONT6_YSIZE :
font_type == FC_SPECIAL1 ? FONT3_YSIZE :
font_type == FC_SPECIAL2 ? FONT4_YSIZE :
font_type == FC_SPECIAL3 ? FONT5_YSIZE :
int font_pixmap;
boolean print_inverse = FALSE;
- if (font_size != FS_SMALL && font_size != FS_BIG)
+ if (font_size != FS_SMALL && font_size != FS_BIG && font_size != FS_MEDIUM)
font_size = FS_SMALL;
if (font_type < FC_RED || font_type > FC_SPECIAL3)
font_type = FC_RED;
font_width = getFontWidth(font_size, font_type);
font_height = getFontHeight(font_size, font_type);
- font_pixmap = (font_size == FS_BIG ? PIX_BIGFONT : PIX_SMALLFONT);
- font_start = (font_type * (font_size == FS_BIG ? FONT1_YSIZE : FONT2_YSIZE) *
+ font_pixmap = (font_size == FS_BIG ? PIX_BIGFONT :
+ font_size == FS_MEDIUM ? PIX_MEDIUMFONT :
+ PIX_SMALLFONT);
+ font_start = (font_type * (font_size == FS_BIG ? FONT1_YSIZE :
+ font_size == FS_MEDIUM ? FONT6_YSIZE :
+ FONT2_YSIZE) *
FONT_LINES_PER_FONT);
if (font_type == FC_SPECIAL3)
graphic = GFX_MURPHY_GO_LEFT;
else if (player->MovDir & (MV_UP | MV_DOWN) && last_dir == MV_RIGHT)
graphic = GFX_MURPHY_GO_RIGHT;
+ else
+ graphic = GFX_MURPHY_GO_LEFT;
graphic += getGraphicAnimationPhase(3, 2, ANIM_OSCILLATE);
}
int element = Feld[next_jx][next_jy];
int graphic = el2gfx(element);
- if ((element == EL_FELSBROCKEN || element == EL_SP_ZONK) && sxx)
+ if ((element == EL_FELSBROCKEN ||
+ element == EL_SP_ZONK ||
+ element == EL_BD_ROCK) && sxx)
{
int phase = (player->GfxPos / (TILEX / 4));
*x = (graphic % DC_PER_LINE) * TILEX;
*y = (graphic / DC_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_ROCKSFONT && graphic <= GFX_END_ROCKSFONT)
{
graphic -= GFX_START_ROCKSFONT;
*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_ROCKSMORE && graphic <= GFX_END_ROCKSMORE)
+ {
+ graphic -= GFX_START_ROCKSMORE;
+ *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;
+ }
else if (graphic >= GFX_START_ROCKSFONT && graphic <= GFX_END_ROCKSFONT)
{
graphic -= GFX_START_ROCKSFONT;
{
graphic += !phase2;
}
- else if ((element == EL_FELSBROCKEN || element == EL_SP_ZONK ||
+ else if (element == EL_BALLOON)
+ {
+ graphic += phase4;
+ }
+ else if ((element == EL_FELSBROCKEN ||
+ element == EL_SP_ZONK ||
+ element == EL_BD_ROCK ||
IS_GEM(element)) && !cut_mode)
{
if (uy >= lev_fieldy-1 || !IS_BELT(Feld[ux][uy+1]))
{
- if (element == EL_FELSBROCKEN || element == EL_SP_ZONK)
+ if (element == EL_FELSBROCKEN ||
+ element == EL_SP_ZONK ||
+ element == EL_BD_ROCK)
{
if (dir == MV_LEFT)
graphic += (4 - phase4) % 4;
graphic += phase2;
}
}
- else if (element == EL_SIEB_LEER || element == EL_SIEB2_LEER ||
- element == EL_SIEB_VOLL || element == EL_SIEB2_VOLL)
+ else if (element == EL_MAGIC_WALL_EMPTY ||
+ element == EL_MAGIC_WALL_BD_EMPTY ||
+ element == EL_MAGIC_WALL_FULL ||
+ element == EL_MAGIC_WALL_BD_FULL)
{
graphic += 3 + getGraphicAnimationPhase(4, 4, ANIM_REVERSE);
}
element = Feld[ux][uy];
- if (element == EL_ERDREICH || element == EL_LANDMINE)
+ if (element == EL_ERDREICH ||
+ element == EL_LANDMINE ||
+ element == EL_TRAP_INACTIVE ||
+ element == EL_TRAP_ACTIVE)
{
if (!IN_SCR_FIELD(x, y))
return;
else
element = Feld[uxx][uyy];
- if (element == EL_ERDREICH || element == EL_LANDMINE)
+ if (element == EL_ERDREICH ||
+ element == EL_LANDMINE ||
+ element == EL_TRAP_INACTIVE ||
+ element == EL_TRAP_ACTIVE)
continue;
if (i == 1 || i == 2)
uyy = uy + xy[i][1];
if (!IN_LEV_FIELD(uxx, uyy) ||
- (Feld[uxx][uyy] != EL_ERDREICH && Feld[uxx][uyy] != EL_LANDMINE) ||
+ (Feld[uxx][uyy] != EL_ERDREICH &&
+ Feld[uxx][uyy] != EL_LANDMINE &&
+ Feld[uxx][uyy] != EL_TRAP_INACTIVE &&
+ Feld[uxx][uyy] != EL_TRAP_ACTIVE) ||
!IN_SCR_FIELD(xx, yy))
continue;
boolean cut_mode = NO_CUTTING;
if (Store[ux][uy] == EL_MORAST_LEER ||
- Store[ux][uy] == EL_SIEB_LEER ||
- Store[ux][uy] == EL_SIEB2_LEER ||
+ Store[ux][uy] == EL_MAGIC_WALL_EMPTY ||
+ Store[ux][uy] == EL_MAGIC_WALL_BD_EMPTY ||
Store[ux][uy] == EL_AMOEBE_NASS)
cut_mode = CUT_ABOVE;
else if (Store[ux][uy] == EL_MORAST_VOLL ||
- Store[ux][uy] == EL_SIEB_VOLL ||
- Store[ux][uy] == EL_SIEB2_VOLL)
+ Store[ux][uy] == EL_MAGIC_WALL_FULL ||
+ Store[ux][uy] == EL_MAGIC_WALL_BD_FULL)
cut_mode = CUT_BELOW;
if (cut_mode == CUT_ABOVE)
MovDir[oldx][oldy] == MV_RIGHT);
if (Store[oldx][oldy] == EL_MORAST_LEER ||
- Store[oldx][oldy] == EL_SIEB_LEER ||
- Store[oldx][oldy] == EL_SIEB2_LEER ||
+ Store[oldx][oldy] == EL_MAGIC_WALL_EMPTY ||
+ Store[oldx][oldy] == EL_MAGIC_WALL_BD_EMPTY ||
Store[oldx][oldy] == EL_AMOEBE_NASS)
cut_mode = CUT_ABOVE;
MICRO_DC_STARTY + (graphic / MICRO_DC_PER_LINE) * MICRO_TILEY,
MICRO_TILEX, MICRO_TILEY, xpos, ypos);
}
+ else if (graphic >= GFX_START_ROCKSMORE && graphic <= GFX_END_ROCKSMORE)
+ {
+ graphic -= GFX_START_ROCKSMORE;
+ 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,
+ MICRO_TILEX, MICRO_TILEY, xpos, ypos);
+ }
else
XCopyArea(display, pix[PIX_BACK], drawto, gc,
MICRO_GFX_STARTX + (graphic % MICRO_GFX_PER_LINE) * MICRO_TILEX,
mode == MICROLABEL_LEVEL_AUTHOR ? level.author :
mode == MICROLABEL_IMPORTED_FROM ? "imported from" :
mode == MICROLABEL_LEVEL_IMPORT_INFO ?
- leveldir[leveldir_nr].imported_from : ""),
+ leveldir_current->imported_from : ""),
MAX_MICROLABEL_SIZE);
label_text[MAX_MICROLABEL_SIZE] = '\0';
/* redraw micro level label, if needed */
if (strcmp(level.name, NAMELESS_LEVEL_NAME) != 0 &&
strcmp(level.author, ANONYMOUS_NAME) != 0 &&
- strcmp(level.author, leveldir[leveldir_nr].name) != 0 &&
+ strcmp(level.author, leveldir_current->name) != 0 &&
DelayReached(&label_delay, MICROLEVEL_LABEL_DELAY))
{
int max_label_counter = 23;
- if (leveldir[leveldir_nr].imported_from != NULL)
+ if (leveldir_current->imported_from != NULL)
max_label_counter += 14;
label_counter = (label_counter + 1) % max_label_counter;
case EL_MORAST_VOLL: return GFX_MORAST_VOLL;
case EL_TROPFEN: return GFX_TROPFEN;
case EL_BOMBE: return GFX_BOMBE;
- case EL_SIEB_INAKTIV: return GFX_SIEB_INAKTIV;
- case EL_SIEB_LEER: return GFX_SIEB_LEER;
- case EL_SIEB_VOLL: return GFX_SIEB_VOLL;
- case EL_SIEB_TOT: return GFX_SIEB_TOT;
+ case EL_MAGIC_WALL_OFF: return GFX_MAGIC_WALL_OFF;
+ case EL_MAGIC_WALL_EMPTY: return GFX_MAGIC_WALL_EMPTY;
+ case EL_MAGIC_WALL_FULL: return GFX_MAGIC_WALL_FULL;
+ case EL_MAGIC_WALL_DEAD: return GFX_MAGIC_WALL_DEAD;
case EL_SALZSAEURE: return GFX_SALZSAEURE;
case EL_AMOEBE_TOT: return GFX_AMOEBE_TOT;
case EL_AMOEBE_NASS: return GFX_AMOEBE_NASS;
case EL_ERZ_EDEL_ROT: return GFX_ERZ_EDEL_ROT;
case EL_ERZ_EDEL_LILA: return GFX_ERZ_EDEL_LILA;
case EL_MAMPFER2: return GFX_MAMPFER2;
- case EL_SIEB2_INAKTIV: return GFX_SIEB2_INAKTIV;
- case EL_SIEB2_LEER: return GFX_SIEB2_LEER;
- case EL_SIEB2_VOLL: return GFX_SIEB2_VOLL;
- case EL_SIEB2_TOT: return GFX_SIEB2_TOT;
+ case EL_MAGIC_WALL_BD_OFF: return GFX_MAGIC_WALL_BD_OFF;
+ case EL_MAGIC_WALL_BD_EMPTY:return GFX_MAGIC_WALL_BD_EMPTY;
+ case EL_MAGIC_WALL_BD_FULL: return GFX_MAGIC_WALL_BD_FULL;
+ case EL_MAGIC_WALL_BD_DEAD: return GFX_MAGIC_WALL_BD_DEAD;
case EL_DYNABOMB_ACTIVE_1: return GFX_DYNABOMB;
case EL_DYNABOMB_ACTIVE_2: return GFX_DYNABOMB;
case EL_DYNABOMB_ACTIVE_3: return GFX_DYNABOMB;
case EL_EMC_WALL_6: return GFX_EMC_WALL_6;
case EL_EMC_WALL_7: return GFX_EMC_WALL_7;
case EL_EMC_WALL_8: return GFX_EMC_WALL_8;
+ case EL_TUBE_CROSS: return GFX_TUBE_CROSS;
+ case EL_TUBE_VERTICAL: return GFX_TUBE_VERTICAL;
+ case EL_TUBE_HORIZONTAL: return GFX_TUBE_HORIZONTAL;
+ case EL_TUBE_VERT_LEFT: return GFX_TUBE_VERT_LEFT;
+ case EL_TUBE_VERT_RIGHT: return GFX_TUBE_VERT_RIGHT;
+ case EL_TUBE_HORIZ_UP: return GFX_TUBE_HORIZ_UP;
+ case EL_TUBE_HORIZ_DOWN: return GFX_TUBE_HORIZ_DOWN;
+ case EL_TUBE_LEFT_UP: return GFX_TUBE_LEFT_UP;
+ case EL_TUBE_LEFT_DOWN: return GFX_TUBE_LEFT_DOWN;
+ case EL_TUBE_RIGHT_UP: return GFX_TUBE_RIGHT_UP;
+ case EL_TUBE_RIGHT_DOWN: return GFX_TUBE_RIGHT_DOWN;
+ case EL_SPRING: return GFX_SPRING;
+ case EL_SPRING_MOVING: return GFX_SPRING;
+ case EL_TRAP_INACTIVE: return GFX_TRAP_INACTIVE;
+ case EL_TRAP_ACTIVE: return GFX_TRAP_ACTIVE;
+ case EL_BD_WALL: return GFX_BD_WALL;
+ case EL_BD_ROCK: return GFX_BD_ROCK;
+ case EL_DX_SUPABOMB: return GFX_DX_SUPABOMB;
+ case EL_SP_MURPHY_CLONE: return GFX_SP_MURPHY_CLONE;
default:
{