X-Git-Url: https://git.artsoft.org/?a=blobdiff_plain;f=src%2Flibgame%2Fsystem.c;h=cd24b1340b005722068bd252a58e64c381c46b22;hb=37a06df577bbfd00f4b361f92cacb0d97036ba93;hp=ed73cb5bf3c5129092af6f764c38cd8f725ddd23;hpb=9583e9c55b889974e0df9a8ca1930efdf29bda29;p=rocksndiamonds.git diff --git a/src/libgame/system.c b/src/libgame/system.c index ed73cb5b..cd24b134 100644 --- a/src/libgame/system.c +++ b/src/libgame/system.c @@ -75,8 +75,8 @@ void InitProgramInfo(char *argv0, char *cookie_prefix, char *filename_prefix, int program_version) { - program.command_basename = - (strrchr(argv0, '/') ? strrchr(argv0, '/') + 1 : argv0); + program.command_basepath = getBasePath(argv0); + program.command_basename = getBaseName(argv0); program.userdata_directory = userdata_directory; program.program_title = program_title; @@ -213,27 +213,7 @@ static void DrawBitmapFromTile(Bitmap *bitmap, Bitmap *tile, void SetBackgroundBitmap(Bitmap *background_bitmap_tile, int mask) { - static Bitmap *main_bitmap_tile = NULL; - static Bitmap *door_bitmap_tile = NULL; - - if (mask == REDRAW_FIELD) - { - if (background_bitmap_tile == main_bitmap_tile) - return; /* main background tile has not changed */ - - main_bitmap_tile = background_bitmap_tile; - } - else if (mask == REDRAW_DOOR_1) - { - if (background_bitmap_tile == door_bitmap_tile) - return; /* main background tile has not changed */ - - door_bitmap_tile = background_bitmap_tile; - } - else /* should not happen */ - return; - - if (background_bitmap_tile) + if (background_bitmap_tile != NULL) gfx.background_bitmap_mask |= mask; else gfx.background_bitmap_mask &= ~mask; @@ -249,10 +229,12 @@ void SetBackgroundBitmap(Bitmap *background_bitmap_tile, int mask) DrawBitmapFromTile(gfx.background_bitmap, background_bitmap_tile, gfx.real_sx, gfx.real_sy, gfx.full_sxsize, gfx.full_sysize); - else + else if (mask == REDRAW_DOOR_1) + { DrawBitmapFromTile(gfx.background_bitmap, background_bitmap_tile, gfx.dx, gfx.dy, gfx.dxsize, gfx.dysize); + } } void SetMainBackgroundBitmap(Bitmap *background_bitmap_tile) @@ -439,7 +421,7 @@ inline boolean DrawingDeactivated(int x, int y, int width, int height) inline boolean DrawingOnBackground(int x, int y) { - return ((gfx.draw_background_mask & gfx.background_bitmap_mask) && + return (CheckDrawingArea(x, y, 1, 1, gfx.background_bitmap_mask) && CheckDrawingArea(x, y, 1, 1, gfx.draw_background_mask)); } @@ -477,12 +459,6 @@ inline void ClearRectangleOnBackground(Bitmap *bitmap, int x, int y, ClearRectangle(bitmap, x, y, width, height); } -#if 0 -#ifndef TARGET_SDL -static GC last_clip_gc = 0; /* needed for XCopyArea() through clip mask */ -#endif -#endif - inline void SetClipMask(Bitmap *bitmap, GC clip_gc, Pixmap clip_pixmap) { #if defined(TARGET_X11) @@ -491,9 +467,6 @@ inline void SetClipMask(Bitmap *bitmap, GC clip_gc, Pixmap clip_pixmap) bitmap->clip_gc = clip_gc; XSetClipMask(display, bitmap->clip_gc, clip_pixmap); } -#if 0 - last_clip_gc = clip_gc; -#endif #endif } @@ -505,9 +478,6 @@ inline void SetClipOrigin(Bitmap *bitmap, GC clip_gc, int clip_x, int clip_y) bitmap->clip_gc = clip_gc; XSetClipOrigin(display, bitmap->clip_gc, clip_x, clip_y); } -#if 0 - last_clip_gc = clip_gc; -#endif #endif } @@ -545,6 +515,16 @@ inline void BlitBitmapOnBackground(Bitmap *src_bitmap, Bitmap *dst_bitmap, dst_x, dst_y); } +inline void DrawSimpleBlackLine(Bitmap *bitmap, int from_x, int from_y, + int to_x, int to_y) +{ +#if defined(TARGET_SDL) + SDLDrawSimpleLine(bitmap, from_x, from_y, to_x, to_y, BLACK_PIXEL); +#else + X11DrawSimpleLine(bitmap, from_x, from_y, to_x, to_y, BLACK_PIXEL); +#endif +} + inline void DrawSimpleWhiteLine(Bitmap *bitmap, int from_x, int from_y, int to_x, int to_y) { @@ -890,20 +870,6 @@ void CreateBitmapWithSmallBitmaps(Bitmap *old_bitmap, int zoom_factor) if (zoom_factor != 8) FreeBitmap(tmp_bitmap_8); -#if 0 - -#if defined(TARGET_SDL) - /* !!! what about the old old_bitmap->surface ??? FIX ME !!! */ - old_bitmap->surface = new_bitmap->surface; - new_bitmap->surface = NULL; -#else - /* !!! see above !!! */ - old_bitmap->drawable = new_bitmap->drawable; - new_bitmap->drawable = None; -#endif - -#else - /* replace image with extended image (containing normal, 1/2 and 1/8 size) */ #if defined(TARGET_SDL) swap_bitmap.surface = old_bitmap->surface; @@ -913,8 +879,6 @@ void CreateBitmapWithSmallBitmaps(Bitmap *old_bitmap, int zoom_factor) swap_bitmap.drawable = old_bitmap->drawable; old_bitmap->drawable = new_bitmap->drawable; new_bitmap->drawable = swap_bitmap.drawable; -#endif - #endif old_bitmap->width = new_bitmap->width; @@ -964,7 +928,9 @@ static const char *cursor_image_playfield[] = /* hot spot */ "0,0" + #else + /* pixels */ " X ", "X.X ", @@ -1143,9 +1109,19 @@ inline void NextEvent(Event *event) #endif } +inline void PeekEvent(Event *event) +{ +#if defined(TARGET_SDL) + SDL_PeepEvents(event, 1, SDL_PEEKEVENT, SDL_ALLEVENTS); +#else + XPeekEvent(display, event); +#endif +} + inline Key GetEventKey(KeyEvent *event, boolean with_modifiers) { #if defined(TARGET_SDL) + #if 0 printf("unicode == '%d', sym == '%d', mod == '0x%04x'\n", (int)event->keysym.unicode, @@ -1159,7 +1135,9 @@ inline Key GetEventKey(KeyEvent *event, boolean with_modifiers) return event->keysym.unicode; else return event->keysym.sym; + #else + #if 0 printf("with modifiers == '0x%04x', without modifiers == '0x%04x'\n", (int)XLookupKeysym(event, event->state),