X-Git-Url: https://git.artsoft.org/?a=blobdiff_plain;f=src%2Finit.c;h=04d7f32a228cc26d53b5e85ce8143c3f6b83c194;hb=60905b7f08ae9a2c88299731a8ce490c31d8b6e0;hp=683bacdb44dcf328f2ce18389100ffe4a809de46;hpb=85019a08c195ac31e548b0549053fbc9f71b427f;p=rocksndiamonds.git diff --git a/src/init.c b/src/init.c index 683bacdb..04d7f32a 100644 --- a/src/init.c +++ b/src/init.c @@ -275,6 +275,19 @@ static void InitBitmapPointers(void) void InitImageTextures(void) { + static int texture_graphics[] = + { + IMG_GFX_REQUEST_BUTTON_TOUCH_YES, + IMG_GFX_REQUEST_BUTTON_TOUCH_NO, + IMG_GFX_REQUEST_BUTTON_TOUCH_CONFIRM, + IMG_GFX_GAME_BUTTON_TOUCH_STOP, + IMG_GFX_GAME_BUTTON_TOUCH_PAUSE, + IMG_MENU_BUTTON_TOUCH_BACK, + IMG_MENU_BUTTON_TOUCH_NEXT, + IMG_MENU_BUTTON_TOUCH_BACK2, + IMG_MENU_BUTTON_TOUCH_NEXT2, + -1 + }; int i, j, k; FreeAllImageTextures(); @@ -300,24 +313,10 @@ void InitImageTextures(void) } } } -} - -#if 1 -// !!! FIX THIS (CHANGE TO USING NORMAL ELEMENT GRAPHIC DEFINITIONS) !!! -void SetBitmaps_EM(Bitmap **em_bitmap) -{ - em_bitmap[0] = graphic_info[IMG_EMC_OBJECT].bitmap; - em_bitmap[1] = graphic_info[IMG_EMC_SPRITE].bitmap; -} -#endif -#if 0 -// !!! FIX THIS (CHANGE TO USING NORMAL ELEMENT GRAPHIC DEFINITIONS) !!! -void SetBitmaps_SP(Bitmap **sp_bitmap) -{ - *sp_bitmap = graphic_info[IMG_SP_OBJECTS].bitmap; + for (i = 0; texture_graphics[i] > -1; i++) + CreateImageTextures(texture_graphics[i]); } -#endif static int getFontBitmapID(int font_nr) { @@ -1297,12 +1296,15 @@ static void set_graphic_parameters_ext(int graphic, int *parameter, g->clone_from = -1; // do not use clone graphic g->init_delay_fixed = 0; g->init_delay_random = 0; + g->init_delay_action = -1; g->anim_delay_fixed = 0; g->anim_delay_random = 0; + g->anim_delay_action = -1; g->post_delay_fixed = 0; g->post_delay_random = 0; - g->init_event = ANIM_EVENT_DEFAULT; - g->anim_event = ANIM_EVENT_DEFAULT; + g->post_delay_action = -1; + g->init_event = ANIM_EVENT_UNDEFINED; + g->anim_event = ANIM_EVENT_UNDEFINED; g->init_event_action = -1; g->anim_event_action = -1; g->draw_masked = FALSE; @@ -1311,6 +1313,7 @@ static void set_graphic_parameters_ext(int graphic, int *parameter, g->fade_delay = -1; g->post_delay = -1; g->auto_delay = -1; + g->auto_delay_unit = AUTO_DELAY_UNIT_DEFAULT; g->align = ALIGN_CENTER; // default for title screens g->valign = VALIGN_MIDDLE; // default for title screens g->sort_priority = 0; // default for title screens @@ -1472,7 +1475,7 @@ static void set_graphic_parameters_ext(int graphic, int *parameter, else g->anim_frames = 1; - if (g->anim_frames == 0) // frames must be at least 1 + if (g->anim_frames < 1) // frames must be at least 1 g->anim_frames = 1; g->anim_frames_per_line = @@ -1480,7 +1483,7 @@ static void set_graphic_parameters_ext(int graphic, int *parameter, parameter[GFX_ARG_FRAMES_PER_LINE] : anim_frames_per_line); g->anim_delay = parameter[GFX_ARG_DELAY]; - if (g->anim_delay == 0) // delay must be at least 1 + if (g->anim_delay < 1) // delay must be at least 1 g->anim_delay = 1; g->anim_mode = parameter[GFX_ARG_ANIM_MODE]; @@ -1531,6 +1534,12 @@ static void set_graphic_parameters_ext(int graphic, int *parameter, g->init_event_action = parameter[GFX_ARG_INIT_EVENT_ACTION]; if (parameter[GFX_ARG_ANIM_EVENT_ACTION] != ARG_UNDEFINED_VALUE) g->anim_event_action = parameter[GFX_ARG_ANIM_EVENT_ACTION]; + if (parameter[GFX_ARG_INIT_DELAY_ACTION] != ARG_UNDEFINED_VALUE) + g->init_delay_action = parameter[GFX_ARG_INIT_DELAY_ACTION]; + if (parameter[GFX_ARG_ANIM_DELAY_ACTION] != ARG_UNDEFINED_VALUE) + g->anim_delay_action = parameter[GFX_ARG_ANIM_DELAY_ACTION]; + if (parameter[GFX_ARG_POST_DELAY_ACTION] != ARG_UNDEFINED_VALUE) + g->post_delay_action = parameter[GFX_ARG_POST_DELAY_ACTION]; // used for toon animations and global animations g->step_offset = parameter[GFX_ARG_STEP_OFFSET]; @@ -1542,6 +1551,9 @@ static void set_graphic_parameters_ext(int graphic, int *parameter, g->x = parameter[GFX_ARG_X]; // (may be uninitialized, g->y = parameter[GFX_ARG_Y]; // unlike src_x and src_y) + if (g->step_delay < 1) // delay must be at least 1 + g->step_delay = 1; + // this is only used for drawing font characters g->draw_xoffset = parameter[GFX_ARG_DRAW_XOFFSET]; g->draw_yoffset = parameter[GFX_ARG_DRAW_YOFFSET]; @@ -1572,6 +1584,8 @@ static void set_graphic_parameters_ext(int graphic, int *parameter, g->post_delay = parameter[GFX_ARG_POST_DELAY]; if (parameter[GFX_ARG_AUTO_DELAY] != ARG_UNDEFINED_VALUE) g->auto_delay = parameter[GFX_ARG_AUTO_DELAY]; + if (parameter[GFX_ARG_AUTO_DELAY_UNIT] != ARG_UNDEFINED_VALUE) + g->auto_delay_unit = parameter[GFX_ARG_AUTO_DELAY_UNIT]; if (parameter[GFX_ARG_ALIGN] != ARG_UNDEFINED_VALUE) g->align = parameter[GFX_ARG_ALIGN]; if (parameter[GFX_ARG_VALIGN] != ARG_UNDEFINED_VALUE) @@ -1723,6 +1737,8 @@ static void InitGraphicInfo(void) -1 }; + FreeGlobalAnimEventInfo(); + checked_free(graphic_info); graphic_info = checked_calloc(num_images * sizeof(struct GraphicInfo)); @@ -2846,6 +2862,7 @@ void InitElementPropertiesStatic(void) EL_BOMB, EL_NUT, EL_AMOEBA_DROP, + EL_AMOEBA_DROPPING, EL_QUICKSAND_FULL, EL_QUICKSAND_FAST_FULL, EL_MAGIC_WALL_FULL, @@ -5892,6 +5909,7 @@ void ReloadCustomArtwork(int force_reload) InitOverrideArtwork(); force_reload_gfx |= AdjustGraphicsForEMC(); + force_reload_snd |= AdjustSoundsForEMC(); gfx_new_identifier = getNewArtworkIdentifier(ARTWORK_TYPE_GRAPHICS); snd_new_identifier = getNewArtworkIdentifier(ARTWORK_TYPE_SOUNDS); @@ -6097,6 +6115,8 @@ void OpenAll(void) InitVideoBuffer(WIN_XSIZE, WIN_YSIZE, DEFAULT_DEPTH, setup.fullscreen); InitVideoOverlay(); + InitEventFilter(FilterMouseMotionEvents); + print_timestamp_time("[init video stuff]"); InitElementPropertiesStatic();