X-Git-Url: https://git.artsoft.org/?a=blobdiff_plain;f=src%2Flibgame%2Fsystem.c;h=a1f009f77c8470f5d0b7e0fcbe85eb97db53ecd0;hb=edaa850fd2d2cae7ec31961fae3d56487e710c71;hp=5a63172f72421e6c0fe58095bce1864945d636cb;hpb=71cea4c5471c3924c9b40e314d38fc209a48a499;p=rocksndiamonds.git diff --git a/src/libgame/system.c b/src/libgame/system.c index 5a63172f..a1f009f7 100644 --- a/src/libgame/system.c +++ b/src/libgame/system.c @@ -121,7 +121,7 @@ void InitNetworkInfo(boolean enabled, boolean connected, boolean serveronly, network.is_server_thread = FALSE; } -void InitRuntimeInfo() +void InitRuntimeInfo(void) { #if defined(HAS_TOUCH_DEVICE) runtime.uses_touch_device = TRUE; @@ -287,11 +287,16 @@ void InitGfxDrawGlobalBorderFunction(void (*draw_global_border_function)(int)) gfx.draw_global_border_function = draw_global_border_function; } -void InitGfxDrawTileCursorFunction(void (*draw_tile_cursor_function)(int)) +void InitGfxDrawTileCursorFunction(void (*draw_tile_cursor_function)(int, int)) { gfx.draw_tile_cursor_function = draw_tile_cursor_function; } +void InitGfxDrawEnvelopeRequestFunction(void (*draw_envelope_request_function)(int)) +{ + gfx.draw_envelope_request_function = draw_envelope_request_function; +} + void InitGfxCustomArtworkInfo(void) { gfx.override_level_graphics = FALSE; @@ -594,9 +599,22 @@ void FreeBitmap(Bitmap *bitmap) free(bitmap); } +void ResetBitmapAlpha(Bitmap *bitmap) +{ + bitmap->alpha[0][0] = -1; + bitmap->alpha[0][1] = -1; + bitmap->alpha[1][0] = -1; + bitmap->alpha[1][1] = -1; + bitmap->alpha_next_blit = -1; +} + Bitmap *CreateBitmapStruct(void) { - return checked_calloc(sizeof(Bitmap)); + Bitmap *new_bitmap = checked_calloc(sizeof(Bitmap)); + + ResetBitmapAlpha(new_bitmap); + + return new_bitmap; } Bitmap *CreateBitmap(int width, int height, int depth) @@ -606,7 +624,7 @@ Bitmap *CreateBitmap(int width, int height, int depth) int real_height = MAX(1, height); // prevent zero bitmap height int real_depth = GetRealDepth(depth); - SDLCreateBitmapContent(new_bitmap, real_width, real_height, real_depth); + new_bitmap->surface = SDLCreateNativeSurface(real_width, real_height, real_depth); new_bitmap->width = real_width; new_bitmap->height = real_height; @@ -767,6 +785,12 @@ static boolean InClippedRectangle(Bitmap *bitmap, int *x, int *y, return TRUE; } +void SetBitmapAlphaNextBlit(Bitmap *bitmap, int alpha) +{ + // set alpha value for next blitting of bitmap + bitmap->alpha_next_blit = alpha; +} + void BlitBitmap(Bitmap *src_bitmap, Bitmap *dst_bitmap, int src_x, int src_y, int width, int height, int dst_x, int dst_y) @@ -914,6 +938,12 @@ void BlitBitmapMasked(Bitmap *src_bitmap, Bitmap *dst_bitmap, int src_x, int src_y, int width, int height, int dst_x, int dst_y) { + if (program.headless) + return; + + if (src_bitmap == NULL || dst_bitmap == NULL) + return; + if (DrawingDeactivated(dst_x, dst_y)) return; @@ -1638,6 +1668,8 @@ void OpenAudio(void) audio.device_name = NULL; audio.device_fd = -1; + audio.sample_rate = DEFAULT_AUDIO_SAMPLE_RATE; + audio.num_channels = 0; audio.music_channel = 0; audio.first_sound_channel = 0;