X-Git-Url: https://git.artsoft.org/?a=blobdiff_plain;f=src%2Ftools.c;h=13512839ad64c9c39d409be12909e73923e635e8;hb=94b124e87edbd2e12d7b83f45254fcbfff8554cd;hp=77f574db3c25be10c396853295bf822bf25191ea;hpb=a8b2caa1d373c84c1b3fc2f615370c2a319051ca;p=rocksndiamonds.git diff --git a/src/tools.c b/src/tools.c index 77f574db..13512839 100644 --- a/src/tools.c +++ b/src/tools.c @@ -13,21 +13,21 @@ #include -#ifdef __FreeBSD__ +#if defined(PLATFORM_FREEBSD) #include #endif +#include "libgame/libgame.h" + #include "tools.h" #include "game.h" #include "events.h" -#include "sound.h" -#include "misc.h" -#include "buttons.h" #include "joystick.h" #include "cartoons.h" #include "network.h" +#include "tape.h" -#ifdef MSDOS +#if defined(PLATFORM_MSDOS) extern boolean wait_for_vsync; #endif @@ -248,7 +248,7 @@ void BackToFront() info1[0] = '\0'; sprintf(text, "%.1f fps%s", global.frames_per_second, info1); - DrawTextExt(window, gc, SX, SY, text, FS_SMALL, FC_YELLOW); + DrawTextExt(window, SX, SY, text, FS_SMALL, FC_YELLOW); } FlushDisplay(); @@ -352,6 +352,8 @@ void ClearWindow() redraw_mask |= REDRAW_FIELD; } + +#if 0 int getFontWidth(int font_size, int font_type) { return (font_size == FS_BIG ? FONT1_XSIZE : @@ -377,7 +379,7 @@ void DrawInitText(char *text, int ypos, int color) if (window && pix[PIX_SMALLFONT]) { ClearRectangle(window, 0, ypos, WIN_XSIZE, FONT2_YSIZE); - DrawTextExt(window, gc, (WIN_XSIZE - strlen(text) * FONT2_XSIZE)/2, + DrawTextExt(window, (WIN_XSIZE - strlen(text) * FONT2_XSIZE)/2, ypos, text, FS_SMALL, color); FlushDisplay(); } @@ -489,6 +491,39 @@ void DrawTextExt(DrawBuffer d, GC gc, int x, int y, x += font_width; } } +#endif + + +void MarkTileDirty(int x, int y) +{ + int xx = redraw_x1 + x; + int yy = redraw_y1 + y; + + if (!redraw[xx][yy]) + redraw_tiles++; + + redraw[xx][yy] = TRUE; + redraw_mask |= REDRAW_TILES; +} + +void SetBorderElement() +{ + int x, y; + + BorderElement = EL_LEERRAUM; + + for(y=0; ystored_clip_gc; if (tile_clipmask[tile] != None) { - SetClipMask(tile_clip_gc, tile_clipmask[tile]); - SetClipOrigin(tile_clip_gc, dest_x, dest_y); + SetClipMask(src_bitmap, tile_clip_gc, tile_clipmask[tile]); + SetClipOrigin(src_bitmap, tile_clip_gc, dest_x, dest_y); BlitBitmapMasked(src_bitmap, d, src_x, src_y, TILEX, TILEY, dest_x, dest_y); } @@ -932,7 +967,7 @@ void DrawGraphicThruMaskExt(DrawBuffer d, int dest_x, int dest_y, int graphic) #endif #endif - SetClipOrigin(drawing_gc, dest_x-src_x, dest_y-src_y); + SetClipOrigin(src_bitmap, drawing_gc, dest_x-src_x, dest_y-src_y); BlitBitmapMasked(src_bitmap, d, src_x, src_y, TILEX, TILEY, dest_x, dest_y); } @@ -940,7 +975,7 @@ void DrawGraphicThruMaskExt(DrawBuffer d, int dest_x, int dest_y, int graphic) void DrawMiniGraphic(int x, int y, int graphic) { - DrawMiniGraphicExt(drawto,gc, SX + x*MINI_TILEX, SY + y*MINI_TILEY, graphic); + DrawMiniGraphicExt(drawto, SX + x*MINI_TILEX, SY + y*MINI_TILEY, graphic); MarkTileDirty(x/2, y/2); } @@ -991,7 +1026,7 @@ void getMiniGraphicSource(int graphic, Bitmap *bitmap, int *x, int *y) } } -void DrawMiniGraphicExt(DrawBuffer d, GC gc, int x, int y, int graphic) +void DrawMiniGraphicExt(DrawBuffer d, int x, int y, int graphic) { Bitmap bitmap; int src_x, src_y; @@ -1008,6 +1043,7 @@ void DrawGraphicShifted(int x,int y, int dx,int dy, int graphic, int src_x, src_y, dest_x, dest_y; int tile = graphic; int bitmap_nr; + Bitmap src_bitmap; GC drawing_gc; if (graphic < 0) @@ -1081,7 +1117,8 @@ void DrawGraphicShifted(int x,int y, int dx,int dy, int graphic, } getGraphicSource(graphic, &bitmap_nr, &src_x, &src_y); - drawing_gc = clip_gc[bitmap_nr]; + src_bitmap = pix[bitmap_nr]; + drawing_gc = pix[bitmap_nr]->stored_clip_gc; src_x += cx; src_y += cy; @@ -1102,9 +1139,9 @@ void DrawGraphicShifted(int x,int y, int dx,int dy, int graphic, { if (tile_clipmask[tile] != None) { - SetClipMask(tile_clip_gc, tile_clipmask[tile]); - SetClipOrigin(tile_clip_gc, dest_x, dest_y); - BlitBitmapMasked(pix_masked[bitmap_nr], drawto_field, + SetClipMask(src_bitmap, tile_clip_gc, tile_clipmask[tile]); + SetClipOrigin(src_bitmap, tile_clip_gc, dest_x, dest_y); + BlitBitmapMasked(src_bitmap, drawto_field, src_x, src_y, TILEX, TILEY, dest_x, dest_y); } else @@ -1115,8 +1152,8 @@ void DrawGraphicShifted(int x,int y, int dx,int dy, int graphic, #endif #endif - SetClipOrigin(drawing_gc, dest_x - src_x, dest_y - src_y); - BlitBitmapMasked(pix_masked[bitmap_nr], drawto_field, + SetClipOrigin(src_bitmap, drawing_gc, dest_x - src_x, dest_y - src_y); + BlitBitmapMasked(src_bitmap, drawto_field, src_x, src_y, width, height, dest_x, dest_y); } } @@ -1827,7 +1864,7 @@ boolean Request(char *text, unsigned int req_state) int mx, my, ty, result = -1; unsigned int old_door_state; -#if !defined(MSDOS) && !defined(WIN32) +#if defined(PLATFORM_UNIX) /* pause network game while waiting for request to answer */ if (options.network && game_status == PLAYING && @@ -1872,8 +1909,7 @@ boolean Request(char *text, unsigned int req_state) } sprintf(txt, text); txt[tl] = 0; - DrawTextExt(drawto, gc, - DX + 51 - (tl * 14)/2, DY + 8 + ty * 16, + DrawTextExt(drawto, DX + 51 - (tl * 14)/2, DY + 8 + ty * 16, txt, FS_SMALL, FC_YELLOW); text += tl + (tc == 32 ? 1 : 0); } @@ -1991,11 +2027,11 @@ boolean Request(char *text, unsigned int req_state) case EVENT_KEYPRESS: switch(GetEventKey((KeyEvent *)&event, TRUE)) { - case KEY_Return: + case KSYM_Return: result = 1; break; - case KEY_Escape: + case KSYM_Escape: result = 0; break; @@ -2051,7 +2087,7 @@ boolean Request(char *text, unsigned int req_state) RemapAllGadgets(); -#if !defined(MSDOS) && !defined(WIN32) +#if defined(PLATFORM_UNIX) /* continue network game after request */ if (options.network && game_status == PLAYING && @@ -2134,6 +2170,9 @@ unsigned int MoveDoor(unsigned int door_state) for(x=start; x<=DXSIZE; x+=stepsize) { + Bitmap bitmap = pix[PIX_DOOR]; + GC gc = bitmap->stored_clip_gc; + WaitUntilDelayReached(&door_delay, door_delay_value); if (door_state & DOOR_ACTION_1) @@ -2147,33 +2186,32 @@ unsigned int MoveDoor(unsigned int door_state) ClearRectangle(drawto, DX, DY + DYSIZE - i/2, DXSIZE,i/2); - SetClipOrigin(clip_gc[PIX_DOOR], DX - i, (DY + j) - DOOR_GFX_PAGEY1); - BlitBitmapMasked(pix_masked[PIX_DOOR], drawto, + SetClipOrigin(bitmap, gc, DX - i, (DY + j) - DOOR_GFX_PAGEY1); + BlitBitmapMasked(bitmap, drawto, DXSIZE, DOOR_GFX_PAGEY1, i, 77, DX + DXSIZE - i, DY + j); - BlitBitmapMasked(pix_masked[PIX_DOOR], drawto, + BlitBitmapMasked(bitmap, drawto, DXSIZE, DOOR_GFX_PAGEY1 + 140, i, 63, DX + DXSIZE - i, DY + 140 + j); - SetClipOrigin(clip_gc[PIX_DOOR], - DX - DXSIZE + i, DY - (DOOR_GFX_PAGEY1 + j)); - BlitBitmapMasked(pix_masked[PIX_DOOR], drawto, + SetClipOrigin(bitmap, gc, DX - DXSIZE + i, DY - (DOOR_GFX_PAGEY1 + j)); + BlitBitmapMasked(bitmap, drawto, DXSIZE - i, DOOR_GFX_PAGEY1 + j, i, 77 - j, DX, DY); - BlitBitmapMasked(pix_masked[PIX_DOOR], drawto, + BlitBitmapMasked(bitmap, drawto, DXSIZE-i, DOOR_GFX_PAGEY1 + 140, i, 63, DX, DY + 140 - j); - BlitBitmapMasked(pix_masked[PIX_DOOR], drawto, + BlitBitmapMasked(bitmap, drawto, DXSIZE - i, DOOR_GFX_PAGEY1 + 77, i, 63, DX, DY + 77 - j); - BlitBitmapMasked(pix_masked[PIX_DOOR], drawto, + BlitBitmapMasked(bitmap, drawto, DXSIZE - i, DOOR_GFX_PAGEY1 + 203, i, 77, DX, DY + 203 - j); - SetClipOrigin(clip_gc[PIX_DOOR], DX - i, (DY + j) - DOOR_GFX_PAGEY1); - BlitBitmapMasked(pix_masked[PIX_DOOR], drawto, + SetClipOrigin(bitmap, gc, DX - i, (DY + j) - DOOR_GFX_PAGEY1); + BlitBitmapMasked(bitmap, drawto, DXSIZE, DOOR_GFX_PAGEY1 + 77, i, 63, DX + DXSIZE - i, DY + 77 + j); - BlitBitmapMasked(pix_masked[PIX_DOOR], drawto, + BlitBitmapMasked(bitmap, drawto, DXSIZE, DOOR_GFX_PAGEY1 + 203, i, 77 - j, DX + DXSIZE - i, DY + 203 + j); @@ -2191,21 +2229,21 @@ unsigned int MoveDoor(unsigned int door_state) ClearRectangle(drawto, VX, VY + VYSIZE-i/2, VXSIZE, i/2); - SetClipOrigin(clip_gc[PIX_DOOR], VX - i, (VY + j) - DOOR_GFX_PAGEY2); - BlitBitmapMasked(pix_masked[PIX_DOOR], drawto, + SetClipOrigin(bitmap, gc, VX - i, (VY + j) - DOOR_GFX_PAGEY2); + BlitBitmapMasked(bitmap, drawto, VXSIZE, DOOR_GFX_PAGEY2, i, VYSIZE / 2, VX + VXSIZE-i, VY+j); - SetClipOrigin(clip_gc[PIX_DOOR], + SetClipOrigin(bitmap, gc, VX - VXSIZE + i, VY - (DOOR_GFX_PAGEY2 + j)); - BlitBitmapMasked(pix_masked[PIX_DOOR], drawto, + BlitBitmapMasked(bitmap, drawto, VXSIZE - i, DOOR_GFX_PAGEY2 + j, i, VYSIZE / 2 - j, VX, VY); - BlitBitmapMasked(pix_masked[PIX_DOOR], drawto, + BlitBitmapMasked(bitmap, drawto, VXSIZE - i, DOOR_GFX_PAGEY2 + VYSIZE / 2, i, VYSIZE / 2, VX, VY + VYSIZE / 2 - j); - SetClipOrigin(clip_gc[PIX_DOOR], VX - i, (VY + j) - DOOR_GFX_PAGEY2); - BlitBitmapMasked(pix_masked[PIX_DOOR], drawto, + SetClipOrigin(bitmap, gc, VX - i, (VY + j) - DOOR_GFX_PAGEY2); + BlitBitmapMasked(bitmap, drawto, VXSIZE, DOOR_GFX_PAGEY2 + VYSIZE / 2, i, VYSIZE / 2 - j, VX + VXSIZE - i, VY + VYSIZE / 2 + j); @@ -2250,12 +2288,13 @@ void UndrawSpecialEditorDoor() } #ifndef TARGET_SDL -int ReadPixel(DrawBuffer d, int x, int y) +int ReadPixel(DrawBuffer bitmap, int x, int y) { XImage *pixel_image; unsigned long pixel_value; - pixel_image = XGetImage(display, d, x, y, 1, 1, AllPlanes, ZPixmap); + pixel_image = XGetImage(display, bitmap->drawable, + x, y, 1, 1, AllPlanes, ZPixmap); pixel_value = XGetPixel(pixel_image, 0, 0); XDestroyImage(pixel_image); @@ -2365,10 +2404,12 @@ static struct } }; +#if 0 static void DoNotDisplayInfoText(void *ptr) { return; } +#endif void CreateToolButtons() { @@ -2416,8 +2457,12 @@ void CreateToolButtons() GDI_DECORATION_SIZE, MINI_TILEX, MINI_TILEY, GDI_DECORATION_SHIFTING, 1, 1, GDI_EVENT_MASK, event_mask, - GDI_CALLBACK_ACTION, HandleToolButtons, + +#if 0 GDI_CALLBACK_INFO, DoNotDisplayInfoText, +#endif + + GDI_CALLBACK_ACTION, HandleToolButtons, GDI_END); if (gi == NULL)