X-Git-Url: https://git.artsoft.org/?p=rocksndiamonds.git;a=blobdiff_plain;f=src%2Ftools.c;h=0c9cd1766e69264bcacc83ed69a7f278ac7d9e96;hp=57fb652d2c3a58bc0b1cc7426bc251fba259127b;hb=8d46c5298f0fcce7bdb52f3835b2fbbdc403dfe0;hpb=f806f2ad0dfa82c3abd3d027250a549ca22f4374 diff --git a/src/tools.c b/src/tools.c index 57fb652d..0c9cd176 100644 --- a/src/tools.c +++ b/src/tools.c @@ -338,6 +338,15 @@ int getFontHeight(int font_size, int font_type) void DrawInitText(char *text, int ypos, int color) { +#ifdef USE_SDL_LIBRARY + if (sdl_window && sdl_pix[PIX_SMALLFONT]) + { + SDLFillRectangle(sdl_window, 0, ypos, WIN_XSIZE, FONT2_YSIZE, 0x000000); + DrawTextExt(window, gc, (WIN_XSIZE - strlen(text) * FONT2_XSIZE)/2, + ypos,text,FS_SMALL,color); + SDL_Flip(sdl_window); + } +#else if (display && window && pix[PIX_SMALLFONT]) { XFillRectangle(display, window, gc, 0, ypos, WIN_XSIZE, FONT2_YSIZE); @@ -345,6 +354,7 @@ void DrawInitText(char *text, int ypos, int color) ypos,text,FS_SMALL,color); XFlush(display); } +#endif } void DrawTextFCentered(int y, int font_type, char *format, ...) @@ -447,8 +457,15 @@ void DrawTextExt(Drawable d, GC gc, int x, int y, 0, 0, font_width, font_height, dest_x, dest_y); } else + { +#ifdef USE_SDL_LIBRARY + SDLCopyArea(sdl_pix[font_pixmap], sdl_window, + src_x, src_y, font_width, font_height, dest_x, dest_y); +#else XCopyArea(display, pix[font_pixmap], d, gc, src_x, src_y, font_width, font_height, dest_x, dest_y); +#endif + } } x += font_width; @@ -586,6 +603,8 @@ void DrawPlayer(struct PlayerInfo *player) 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); } @@ -645,7 +664,9 @@ void DrawPlayer(struct PlayerInfo *player) 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)); @@ -1170,12 +1191,16 @@ void DrawScreenElementExt(int x, int y, int dx, int dy, int element, { graphic += phase4; } - else if ((element == EL_FELSBROCKEN || element == EL_SP_ZONK || + 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; @@ -1188,8 +1213,10 @@ void DrawScreenElementExt(int x, int y, int dx, int dy, int element, 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); } @@ -1417,13 +1444,13 @@ void DrawScreenField(int x, int y) 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) @@ -1453,8 +1480,8 @@ void DrawScreenField(int x, int y) 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; @@ -2447,10 +2474,10 @@ int el2gfx(int element) 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; @@ -2508,10 +2535,10 @@ int el2gfx(int element) 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; @@ -2650,8 +2677,13 @@ int el2gfx(int element) 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: {