X-Git-Url: https://git.artsoft.org/?a=blobdiff_plain;f=src%2Flibgame%2Fsystem.c;h=fee0b17c332b2860ef43fd5d955c0d698e410332;hb=92b6a44481d43254055576a02ce4e335eeab12e9;hp=988a97fae17f47e8b2d44deafc2a1f68e7d58836;hpb=a8816d6e5319f9ec26a45346b08250f61e95c011;p=rocksndiamonds.git diff --git a/src/libgame/system.c b/src/libgame/system.c index 988a97fa..fee0b17c 100644 --- a/src/libgame/system.c +++ b/src/libgame/system.c @@ -75,7 +75,11 @@ int FrameCounter = 0; void InitProgramInfo(char *argv0, char *userdata_subdir, char *userdata_subdir_unix, - char *program_title, char *window_title, char *icon_title, + char *program_title, +#if 0 + char *window_title, +#endif + char *icon_title, char *x11_icon_filename, char *x11_iconmask_filename, char *sdl_icon_filename, char *msdos_cursor_filename, char *cookie_prefix, char *filename_prefix, @@ -89,7 +93,11 @@ void InitProgramInfo(char *argv0, program.userdata_path = getUserGameDataDir(); program.program_title = program_title; +#if 1 + program.window_title = "(undefined)"; +#else program.window_title = window_title; +#endif program.icon_title = icon_title; program.x11_icon_filename = x11_icon_filename; @@ -108,6 +116,20 @@ void InitProgramInfo(char *argv0, program.error_file = stderr; } +void SetWindowTitle() +{ + program.window_title = program.window_title_function(); + +#if defined(TARGET_SDL) + SDLSetWindowTitle(); +#endif +} + +void InitWindowTitleFunction(char *(*window_title_function)(void)) +{ + program.window_title_function = window_title_function; +} + void InitExitMessageFunction(void (*exit_message_function)(char *, va_list)) { program.exit_message_function = exit_message_function; @@ -214,6 +236,14 @@ void InitGfxDoor2Info(int vx, int vy, int vxsize, int vysize) gfx.vysize = vysize; } +void InitGfxDoor3Info(int ex, int ey, int exsize, int eysize) +{ + gfx.ex = ex; + gfx.ey = ey; + gfx.exsize = exsize; + gfx.eysize = eysize; +} + void InitGfxWindowInfo(int win_xsize, int win_ysize) { gfx.win_xsize = win_xsize; @@ -318,11 +348,9 @@ void SetBackgroundBitmap(Bitmap *background_bitmap_tile, int mask) gfx.real_sx, gfx.real_sy, gfx.full_sxsize, gfx.full_sysize); else if (mask == REDRAW_DOOR_1) - { DrawBitmapFromTile(gfx.background_bitmap, background_bitmap_tile, gfx.dx, gfx.dy, gfx.dxsize, gfx.dysize); - } } #else @@ -350,10 +378,8 @@ void SetBackgroundBitmap(Bitmap *background_bitmap_tile, int mask) BlitBitmapTiled(background_bitmap_tile, gfx.background_bitmap, 0, 0, 0, 0, gfx.real_sx, gfx.real_sy, gfx.full_sxsize, gfx.full_sysize); else if (mask == REDRAW_DOOR_1) - { BlitBitmapTiled(background_bitmap_tile, gfx.background_bitmap, 0, 0, 0, 0, gfx.dx, gfx.dy, gfx.dxsize, gfx.dysize); - } } #endif @@ -415,6 +441,13 @@ inline static void sysCopyArea(Bitmap *src_bitmap, Bitmap *dst_bitmap, #endif } +void LimitScreenUpdates(boolean enable) +{ +#if defined(TARGET_SDL) + SDLLimitScreenUpdates(enable); +#endif +} + void InitVideoDisplay(void) { #if defined(TARGET_SDL) @@ -438,17 +471,24 @@ void CloseVideoDisplay(void) void InitVideoBuffer(int width, int height, int depth, boolean fullscreen) { +#if 0 + printf("::: InitVideoBuffer\n"); +#endif + video.width = width; video.height = height; video.depth = GetRealDepth(depth); video.fullscreen_available = FULLSCREEN_STATUS; video.fullscreen_enabled = FALSE; + // video.fullscreen_initial = FALSE; #if 0 video.fullscreen_mode_current = NULL; video.fullscreen_modes = NULL; #endif + video.window_scaling_available = WINDOW_SCALING_STATUS; + #if defined(TARGET_SDL) SDLInitVideoBuffer(&backbuffer, &window, fullscreen); #else @@ -553,6 +593,19 @@ inline static boolean CheckDrawingArea(int x, int y, int width, int height, if (draw_mask & REDRAW_ALL) return TRUE; +#if 1 + if ((draw_mask & REDRAW_FIELD) && IN_GFX_FIELD_FULL(x, y)) + return TRUE; + + if ((draw_mask & REDRAW_DOOR_1) && IN_GFX_DOOR_1(x, y)) + return TRUE; + + if ((draw_mask & REDRAW_DOOR_2) && IN_GFX_DOOR_2(x, y)) + return TRUE; + + if ((draw_mask & REDRAW_DOOR_3) && IN_GFX_DOOR_3(x, y)) + return TRUE; +#else if ((draw_mask & REDRAW_FIELD) && x >= gfx.real_sx && x < gfx.real_sx + gfx.full_sxsize) return TRUE; @@ -564,6 +617,7 @@ inline static boolean CheckDrawingArea(int x, int y, int width, int height, if ((draw_mask & REDRAW_DOOR_2) && x >= gfx.dx && y >= gfx.vy) return TRUE; +#endif return FALSE; } @@ -675,6 +729,9 @@ void BlitBitmap(Bitmap *src_bitmap, Bitmap *dst_bitmap, int dst_x_unclipped = dst_x; int dst_y_unclipped = dst_y; + if (src_bitmap == NULL || dst_bitmap == NULL) + return; + if (DrawingDeactivated(dst_x, dst_y, width, height)) return;