X-Git-Url: https://git.artsoft.org/?a=blobdiff_plain;f=src%2Ftools.c;h=41fd86eb12a560033ca6864d414deb58862f4cbe;hb=2fe139696892ee39f804b5c7315b8f0977ab01ec;hp=39e327cc24936bd6b67634fd0bada6feb04123ff;hpb=20e58eb6573a45a41c25958e17e8d9c20f738edc;p=rocksndiamonds.git diff --git a/src/tools.c b/src/tools.c index 39e327cc..41fd86eb 100644 --- a/src/tools.c +++ b/src/tools.c @@ -314,22 +314,35 @@ void ClearWindow() redraw_mask |= REDRAW_FIELD; } +int getFontWidth(int font_size, int font_type) +{ + return (font_size == FS_BIG ? FONT1_XSIZE : + font_type == FC_SPECIAL1 ? FONT3_XSIZE : + font_type == FC_SPECIAL2 ? FONT4_XSIZE : + font_type == FC_SPECIAL3 ? FONT5_XSIZE : + FONT2_XSIZE); +} + +int getFontHeight(int font_size, int font_type) +{ + return (font_size == FS_BIG ? FONT1_YSIZE : + font_type == FC_SPECIAL1 ? FONT3_YSIZE : + font_type == FC_SPECIAL2 ? FONT4_YSIZE : + font_type == FC_SPECIAL3 ? FONT5_YSIZE : + FONT2_YSIZE); +} + void DrawTextFCentered(int y, int font_type, char *format, ...) { char buffer[FULL_SXSIZE / FONT5_XSIZE + 10]; - int font_xsize; + int font_width = getFontWidth(FS_SMALL, font_type); va_list ap; - font_xsize = (font_type < FC_SPECIAL1 ? FONT2_XSIZE : - font_type < FC_SPECIAL2 ? FONT3_XSIZE : - font_type < FC_SPECIAL3 ? FONT4_XSIZE : - FONT5_XSIZE); - va_start(ap, format); vsprintf(buffer, format, ap); va_end(ap); - DrawText(SX + (SXSIZE - strlen(buffer) * font_xsize) / 2, SY + y, + DrawText(SX + (SXSIZE - strlen(buffer) * font_width) / 2, SY + y, buffer, FS_SMALL, font_type); } @@ -367,28 +380,21 @@ void DrawTextExt(Drawable d, GC gc, int x, int y, if (font_type < FC_RED || font_type > FC_SPECIAL3) font_type = FC_RED; - font_width = (font_size == FS_BIG ? FONT1_XSIZE : - font_type < FC_SPECIAL1 ? FONT2_XSIZE : - font_type < FC_SPECIAL2 ? FONT3_XSIZE : - font_type < FC_SPECIAL3 ? FONT4_XSIZE : - FONT5_XSIZE); - font_height = (font_size == FS_BIG ? FONT1_YSIZE : - font_type < FC_SPECIAL1 ? FONT2_YSIZE : - font_type < FC_SPECIAL2 ? FONT3_YSIZE : - font_type < FC_SPECIAL3 ? FONT4_YSIZE : - FONT5_YSIZE); + 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_LINES_PER_FONT); if (font_type == FC_SPECIAL3) - font_start += (FONT4_YSIZE - FONT2_YSIZE) * FONT_LINES_PER_FONT + 3; + font_start += (FONT4_YSIZE - FONT2_YSIZE) * FONT_LINES_PER_FONT; while (*text) { char c = *text++; - if (c == '~' && font_size == FS_SMALL && font_type <= FC_YELLOW) + if (c == '~' && font_size == FS_SMALL) { print_inverse = TRUE; continue; @@ -483,7 +489,7 @@ void DrawPlayer(struct PlayerInfo *player) DrawLevelElement(last_jx, last_jy, Store[last_jx][last_jy]); DrawLevelFieldThruMask(last_jx, last_jy); } - else if (last_element == EL_DYNAMIT) + else if (last_element == EL_DYNAMITE_ACTIVE) DrawDynamite(last_jx, last_jy); else DrawLevelField(last_jx, last_jy); @@ -512,7 +518,7 @@ void DrawPlayer(struct PlayerInfo *player) if (Store[jx][jy]) DrawLevelElement(jx, jy, Store[jx][jy]); - else if (element != EL_DYNAMIT && element != EL_DYNABOMB) + else if (!IS_ACTIVE_BOMB(element)) DrawLevelField(jx, jy); /* draw player himself */ @@ -625,13 +631,13 @@ void DrawPlayer(struct PlayerInfo *player) } } - /* draw things in front of player (EL_DYNAMIT or EL_DYNABOMB) */ + /* draw things in front of player (active dynamite or dynabombs) */ - if (element == EL_DYNAMIT || element == EL_DYNABOMB) + if (IS_ACTIVE_BOMB(element)) { graphic = el2gfx(element); - if (element == EL_DYNAMIT) + if (element == EL_DYNAMITE_ACTIVE) { if ((phase = (96 - MovDelay[jx][jy]) / 12) > 6) phase = 6; @@ -735,13 +741,6 @@ void getGraphicSource(int graphic, int *pixmap_nr, int *x, int *y) *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; @@ -749,6 +748,20 @@ void getGraphicSource(int graphic, int *pixmap_nr, int *x, int *y) *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; @@ -759,7 +772,7 @@ void getGraphicSource(int graphic, int *pixmap_nr, int *x, int *y) } else { - *pixmap_nr = PIX_MORE; + *pixmap_nr = PIX_SP; *x = 0; *y = 0; } @@ -854,13 +867,20 @@ void getMiniGraphicSource(int graphic, Pixmap *pixmap, int *x, int *y) *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) { @@ -872,9 +892,9 @@ void getMiniGraphicSource(int graphic, Pixmap *pixmap, int *x, int *y) } 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; } } @@ -973,6 +993,9 @@ void DrawGraphicShifted(int x,int y, int dx,int dy, int graphic, src_pixmap = pix[pixmap_nr]; drawing_gc = clip_gc[pixmap_nr]; + src_x += cx; + src_y += cy; + dest_x = FX + x * TILEX + dx; dest_y = FY + y * TILEY + dy; @@ -1093,32 +1116,20 @@ void DrawScreenElementExt(int x, int y, int dx, int dy, int element, else if ((element == EL_FELSBROCKEN || element == EL_SP_ZONK || IS_GEM(element)) && !cut_mode) { - 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; - - /* - if (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 * (element == EL_FELSBROCKEN ? 2 : 1); - */ - } else if (element == EL_SIEB_LEER || element == EL_SIEB2_LEER || element == EL_SIEB_VOLL || element == EL_SIEB2_VOLL) @@ -1146,6 +1157,14 @@ void DrawScreenElementExt(int x, int y, int dx, int dy, int element, 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); @@ -1209,7 +1228,7 @@ void ErdreichAnbroeckeln(int x, int y) element = Feld[ux][uy]; - if (element == EL_ERDREICH) + if (element == EL_ERDREICH || element == EL_LANDMINE) { if (!IN_SCR_FIELD(x, y)) return; @@ -1227,7 +1246,7 @@ void ErdreichAnbroeckeln(int x, int y) else element = Feld[uxx][uyy]; - if (element == EL_ERDREICH) + if (element == EL_ERDREICH || element == EL_LANDMINE) continue; if (i == 1 || i == 2) @@ -1266,7 +1285,8 @@ void ErdreichAnbroeckeln(int x, int y) 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; @@ -1465,13 +1485,21 @@ void DrawMicroElement(int xpos, int ypos, int element) 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 @@ -1491,21 +1519,7 @@ void DrawLevel() for(y=BY1; y<=BY2; y++) DrawScreenField(x, y); - -#if 1 - redraw_mask |= REDRAW_FIELD; - -#else - - if (setup.soft_scrolling) - XCopyArea(display, fieldbuffer, backbuffer, gc, - FX, FY, SXSIZE, SYSIZE, SX, SY); - - redraw_mask |= (REDRAW_FIELD | REDRAW_FROM_BACKBUFFER); - -#endif - } void DrawMiniLevel(int size_x, int size_y, int scroll_x, int scroll_y) @@ -1552,26 +1566,35 @@ static void DrawMicroLevelExt(int xpos, int ypos, int from_x, int from_y) redraw_mask |= REDRAW_MICROLEVEL; } +#define MICROLABEL_EMPTY 0 +#define MICROLABEL_LEVEL_NAME 1 +#define MICROLABEL_CREATED_BY 2 +#define MICROLABEL_LEVEL_AUTHOR 3 +#define MICROLABEL_IMPORTED_FROM 4 +#define MICROLABEL_LEVEL_IMPORT_INFO 5 + +#define MAX_MICROLABEL_SIZE (SXSIZE / FONT4_XSIZE) + static void DrawMicroLevelLabelExt(int mode) { - char label_text[100]; + char label_text[MAX_MICROLABEL_SIZE + 1]; XFillRectangle(display, drawto,gc, SX, MICROLABEL_YPOS, SXSIZE, FONT4_YSIZE); - strcpy(label_text, (mode == 1 ? level.name : - mode == 2 ? "created by" : - mode == 3 ? level.author : "")); + strncpy(label_text, (mode == MICROLABEL_LEVEL_NAME ? level.name : + mode == MICROLABEL_CREATED_BY ? "created by" : + mode == MICROLABEL_LEVEL_AUTHOR ? level.author : + mode == MICROLABEL_IMPORTED_FROM ? "imported from" : + mode == MICROLABEL_LEVEL_IMPORT_INFO ? + leveldir[leveldir_nr].imported_from : ""), + MAX_MICROLABEL_SIZE); + label_text[MAX_MICROLABEL_SIZE] = '\0'; if (strlen(label_text) > 0) { - int size, lxpos, lypos; - - label_text[SXSIZE / FONT4_XSIZE] = '\0'; - - size = strlen(label_text); - lxpos = SX + (SXSIZE - size * FONT4_XSIZE) / 2; - lypos = MICROLABEL_YPOS; + int lxpos = SX + (SXSIZE - strlen(label_text) * FONT4_XSIZE) / 2; + int lypos = MICROLABEL_YPOS; DrawText(lxpos, lypos, label_text, FS_SMALL, FC_SPECIAL2); } @@ -1650,10 +1673,22 @@ void DrawMicroLevel(int xpos, int ypos, boolean restart) strcmp(level.author, leveldir[leveldir_nr].name) != 0 && DelayReached(&label_delay, MICROLEVEL_LABEL_DELAY)) { - label_counter = (label_counter + 1) % 23; - label_state = (label_counter >= 0 && label_counter <= 7 ? 1 : - label_counter >= 9 && label_counter <= 12 ? 2 : - label_counter >= 14 && label_counter <= 21 ? 3 : 0); + int max_label_counter = 23; + + if (leveldir[leveldir_nr].imported_from != NULL) + max_label_counter += 14; + + label_counter = (label_counter + 1) % max_label_counter; + label_state = (label_counter >= 0 && label_counter <= 7 ? + MICROLABEL_LEVEL_NAME : + label_counter >= 9 && label_counter <= 12 ? + MICROLABEL_CREATED_BY : + label_counter >= 14 && label_counter <= 21 ? + MICROLABEL_LEVEL_AUTHOR : + label_counter >= 23 && label_counter <= 26 ? + MICROLABEL_IMPORTED_FROM : + label_counter >= 28 && label_counter <= 35 ? + MICROLABEL_LEVEL_IMPORT_INFO : MICROLABEL_EMPTY); DrawMicroLevelLabelExt(label_state); } } @@ -2088,11 +2123,7 @@ void DrawSpecialEditorDoor() { /* draw bigger toolbox window */ XCopyArea(display, pix[PIX_DOOR], drawto, gc, - DOOR_GFX_PAGEX7, 60, 108, 56, EX - 4, EY - 12); - - /* draw background for level selection gadgets */ - XCopyArea(display, pix[PIX_DOOR], drawto, gc, - DOOR_GFX_PAGEX7, 0, 108, 60, EX - 4, 0); + DOOR_GFX_PAGEX7, 0, 108, 56, EX - 4, EY - 12); redraw_mask |= REDRAW_ALL; } @@ -2103,10 +2134,6 @@ void UndrawSpecialEditorDoor() XCopyArea(display, pix[PIX_BACK], drawto, gc, 562, 344, 108, 56, EX - 4, EY - 12); - /* draw game title */ - XCopyArea(display, pix[PIX_BACK], drawto, gc, - 562, 0, 108, 60, EX - 4, 0); - redraw_mask |= REDRAW_ALL; } @@ -2360,7 +2387,7 @@ int el2gfx(int element) case EL_KOKOSNUSS: return GFX_KOKOSNUSS; case EL_LIFE: return GFX_LIFE; case EL_LIFE_ASYNC: return GFX_LIFE_ASYNC; - case EL_DYNAMIT: return GFX_DYNAMIT; + case EL_DYNAMITE_ACTIVE: return GFX_DYNAMIT; case EL_BADEWANNE: return GFX_BADEWANNE; case EL_BADEWANNE1: return GFX_BADEWANNE1; case EL_BADEWANNE2: return GFX_BADEWANNE2; @@ -2381,7 +2408,7 @@ int el2gfx(int element) case EL_PFORTE2X: return GFX_PFORTE2X; case EL_PFORTE3X: return GFX_PFORTE3X; case EL_PFORTE4X: return GFX_PFORTE4X; - case EL_DYNAMIT_AUS: return GFX_DYNAMIT_AUS; + case EL_DYNAMITE_INACTIVE: return GFX_DYNAMIT_AUS; case EL_PACMAN: return GFX_PACMAN; case EL_PACMAN_R: return GFX_PACMAN_R; case EL_PACMAN_O: return GFX_PACMAN_O; @@ -2411,7 +2438,10 @@ int el2gfx(int element) 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_DYNABOMB: return GFX_DYNABOMB; + 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_DYNABOMB_ACTIVE_4: return GFX_DYNABOMB; case EL_DYNABOMB_NR: return GFX_DYNABOMB_NR; case EL_DYNABOMB_SZ: return GFX_DYNABOMB_SZ; case EL_DYNABOMB_XL: return GFX_DYNABOMB_XL; @@ -2450,6 +2480,67 @@ int el2gfx(int element) case EL_EM_KEY_2: return GFX_EM_KEY_2; case EL_EM_KEY_3: return GFX_EM_KEY_3; case EL_EM_KEY_4: return GFX_EM_KEY_4; + case EL_PEARL: return GFX_PEARL; + case EL_CRYSTAL: return GFX_CRYSTAL; + case EL_WALL_PEARL: return GFX_WALL_PEARL; + case EL_WALL_CRYSTAL: return GFX_WALL_CRYSTAL; + 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_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_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_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_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_SIGN_WHEELCHAIR: return GFX_SIGN_WHEELCHAIR; + case EL_SIGN_PARKING: return GFX_SIGN_PARKING; + case EL_SIGN_ONEWAY: return GFX_SIGN_ONEWAY; + case EL_SIGN_HEART: return GFX_SIGN_HEART; + case EL_SIGN_TRIANGLE: return GFX_SIGN_TRIANGLE; + case EL_SIGN_ROUND: return GFX_SIGN_ROUND; + case EL_SIGN_EXIT: return GFX_SIGN_EXIT; + case EL_SIGN_YINYANG: return GFX_SIGN_YINYANG; + case EL_SIGN_OTHER: return GFX_SIGN_OTHER; + case EL_MOLE_LEFT: return GFX_MOLE_LEFT; + case EL_MOLE_RIGHT: return GFX_MOLE_RIGHT; + case EL_MOLE_UP: return GFX_MOLE_UP; + case EL_MOLE_DOWN: return GFX_MOLE_DOWN; + case EL_STEEL_SLANTED: return GFX_STEEL_SLANTED; + case EL_SAND_INVISIBLE: return GFX_SAND_INVISIBLE; default: { @@ -2460,10 +2551,10 @@ int el2gfx(int element) 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;