X-Git-Url: https://git.artsoft.org/?a=blobdiff_plain;f=src%2Finit.c;h=29f59e295375df4880caf064ef3e918bdc9cd125;hb=38c26472a6e9f0f037ddfe535d3919c00772b26f;hp=a10e8e6bf80ad5b0f277531c85fddf3ae54e2bad;hpb=994cb017022c658f115e3c9fc927d8a0cc83832c;p=rocksndiamonds.git diff --git a/src/init.c b/src/init.c index a10e8e6b..29f59e29 100644 --- a/src/init.c +++ b/src/init.c @@ -220,10 +220,8 @@ static void ReinitializeGraphics() new_graphic_info[IMG_FONT_SMALL].bitmap, new_graphic_info[IMG_FONT_EM].bitmap); - SetMainBackgroundBitmap(new_graphic_info[IMG_BACKGROUND_DEFAULT].bitmap); - SetDoorBackgroundBitmap(new_graphic_info[IMG_BACKGROUND_DOOR].bitmap ? - new_graphic_info[IMG_BACKGROUND_DOOR].bitmap : - new_graphic_info[IMG_BACKGROUND_DEFAULT].bitmap); + SetMainBackgroundImage(IMG_BACKGROUND_DEFAULT); + SetDoorBackgroundImage(IMG_BACKGROUND_DOOR); InitGadgets(); InitToons(); @@ -256,6 +254,7 @@ static void InitSound() static void InitTileClipmasks() { +#if 0 #if defined(TARGET_X11) XGCValues clip_gc_values; unsigned long clip_gc_valuemask; @@ -390,10 +389,12 @@ static void InitTileClipmasks() #endif /* TARGET_X11_NATIVE */ #endif /* TARGET_X11 */ +#endif } void FreeTileClipmasks() { +#if 0 #if defined(TARGET_X11) int i; @@ -422,6 +423,7 @@ void FreeTileClipmasks() #endif #endif /* TARGET_X11 */ +#endif } void InitGfx() @@ -691,7 +693,7 @@ void InitElementInfo() int i, act, dir; /* set values to -1 to identify later as "uninitialized" values */ - for (i=0; iwidth : TILEX) / TILEX; + int num_ytiles = (src_bitmap ? src_bitmap->height * 2 / 3 : TILEY) / TILEY; int *parameter = image_files[i].parameter; - new_graphic_info[i].bitmap = getBitmapFromImageID(i); + new_graphic_info[i].bitmap = src_bitmap; new_graphic_info[i].src_x = parameter[GFX_ARG_XPOS] * TILEX; new_graphic_info[i].src_y = parameter[GFX_ARG_YPOS] * TILEY; @@ -851,7 +855,15 @@ static void InitGraphicInfo() if (parameter[GFX_ARG_YOFFSET] != GFX_ARG_UNDEFINED_VALUE) new_graphic_info[i].offset_y = parameter[GFX_ARG_YOFFSET]; - new_graphic_info[i].anim_frames = parameter[GFX_ARG_FRAMES]; + /* automatically determine correct number of frames, if not defined */ + if (parameter[GFX_ARG_FRAMES] != GFX_ARG_UNDEFINED_VALUE) + new_graphic_info[i].anim_frames = parameter[GFX_ARG_FRAMES]; + else if (parameter[GFX_ARG_XPOS] == 0 && !parameter[GFX_ARG_VERTICAL]) + new_graphic_info[i].anim_frames = num_xtiles; + else if (parameter[GFX_ARG_YPOS] == 0 && parameter[GFX_ARG_VERTICAL]) + new_graphic_info[i].anim_frames = num_ytiles; + else + new_graphic_info[i].anim_frames = 1; new_graphic_info[i].anim_delay = parameter[GFX_ARG_DELAY]; if (new_graphic_info[i].anim_delay == 0) /* delay must be at least 1 */ @@ -866,7 +878,9 @@ static void InitGraphicInfo() new_graphic_info[i].anim_mode = ANIM_PINGPONG; else if (parameter[GFX_ARG_MODE_PINGPONG2]) new_graphic_info[i].anim_mode = ANIM_PINGPONG2; - else if (parameter[GFX_ARG_FRAMES] > 1) + else if (parameter[GFX_ARG_MODE_RANDOM]) + new_graphic_info[i].anim_mode = ANIM_RANDOM; + else if (new_graphic_info[i].anim_frames > 1) new_graphic_info[i].anim_mode = ANIM_LOOP; else new_graphic_info[i].anim_mode = ANIM_NONE; @@ -932,8 +946,8 @@ static void InitGraphicInfo() getTokenFromImageID(i)); Error(ERR_RETURN, "- image file: '%s'", src_bitmap->source_filename); - Error(ERR_EXIT, "error: last animation frame out of bounds (%d,%d)", - src_x, src_y); + Error(ERR_EXIT, "error: last animation frame (%d) out of bounds (%d,%d)", + last_frame, src_x, src_y); } #if defined(TARGET_X11_NATIVE_PERFORMANCE_WORKAROUND) @@ -1866,6 +1880,7 @@ void InitElementProperties() EL_SAND, EL_SP_BASE, EL_SP_BUGGY_BASE, + EL_SP_BUGGY_BASE_ACTIVATING, EL_TRAP, EL_INVISIBLE_SAND, EL_INVISIBLE_SAND_ACTIVE @@ -2178,21 +2193,21 @@ void InitElementProperties() static int num_properties1 = SIZEOF_ARRAY(ep1_num, int *); static int num_properties2 = SIZEOF_ARRAY(ep2_num, int *); - for (i=0; i