X-Git-Url: https://git.artsoft.org/?a=blobdiff_plain;f=src%2Finit.c;h=975f1cbce85c7c69d62b4005b1061ad5633c379d;hb=72b8afe4885eda3b89b166b4cfcd80a3464ee37d;hp=cbd5841d0cb1cd000a02edfcf52b47e9364f272a;hpb=7c72197c745ed62e803f50b6e2d1b55d08479917;p=rocksndiamonds.git diff --git a/src/init.c b/src/init.c index cbd5841d..975f1cbc 100644 --- a/src/init.c +++ b/src/init.c @@ -1271,6 +1271,19 @@ static void InitElementSpecialGraphicInfo(void) action = -1; } + // for BD effect editor graphics, replace element with effect element, if exists + if (action != -1 && special == GFX_SPECIAL_ARG_EDITOR) + { + int element_bd = map_element_RND_to_BD_effect(element, action); + int element_ef = map_element_BD_to_RND_cave(element_bd); + + if (element_ef != EL_UNKNOWN) + { + element = element_ef; + action = -1; + } + } + if (element >= MAX_NUM_ELEMENTS) continue; @@ -1550,7 +1563,7 @@ static void set_graphic_parameters_ext(int graphic, int *parameter, // optionally, the second movement tile can be specified as start tile if (parameter[GFX_ARG_2ND_SWAP_TILES] != ARG_UNDEFINED_VALUE) - g->swap_double_tiles= parameter[GFX_ARG_2ND_SWAP_TILES]; + g->swap_double_tiles = parameter[GFX_ARG_2ND_SWAP_TILES]; // automatically determine correct number of frames, if not defined if (parameter[GFX_ARG_FRAMES] != ARG_UNDEFINED_VALUE) @@ -2446,6 +2459,8 @@ static void ReinitializeGraphics(void) InitImageTextures(); // create textures for certain images print_timestamp_time("InitImageTextures"); + InitGraphicInfo_BD(); // graphic mapping for BD engine + print_timestamp_time("InitGraphicInfo_BD"); InitGraphicInfo_EM(); // graphic mapping for EM engine print_timestamp_time("InitGraphicInfo_EM"); @@ -4276,6 +4291,16 @@ void InitElementPropertiesStatic(void) EL_AMOEBA_DRY, EL_AMOEBA_FULL, EL_BD_AMOEBA, + EL_BD_AMOEBA_2, + EL_BD_SLIME, + EL_BD_ACID, + EL_BD_BITER, + EL_BD_BITER_RIGHT, + EL_BD_BITER_UP, + EL_BD_BITER_LEFT, + EL_BD_BITER_DOWN, + EL_BD_BLADDER, + EL_BD_NUT, EL_EMC_MAGIC_BALL, EL_EMC_ANDROID, EL_MM_GRAY_BALL, @@ -4572,6 +4597,7 @@ void InitElementPropertiesStatic(void) { EL_INTERNAL_CASCADE_BD_ACTIVE, EL_INTERNAL_CASCADE_BD_NATIVE_ACTIVE, + EL_INTERNAL_CASCADE_BD_EFFECTS_ACTIVE, EL_INTERNAL_CASCADE_EM_ACTIVE, EL_INTERNAL_CASCADE_EMC_ACTIVE, EL_INTERNAL_CASCADE_RND_ACTIVE, @@ -4597,6 +4623,7 @@ void InitElementPropertiesStatic(void) { EL_INTERNAL_CASCADE_BD, EL_INTERNAL_CASCADE_BD_NATIVE, + EL_INTERNAL_CASCADE_BD_EFFECTS, EL_INTERNAL_CASCADE_EM, EL_INTERNAL_CASCADE_EMC, EL_INTERNAL_CASCADE_RND, @@ -5727,6 +5754,7 @@ void InitGfxBuffers(void) // required if door size definitions have changed InitGraphicCompatibilityInfo_Doors(); + InitGfxBuffers_BD(); InitGfxBuffers_EM(); InitGfxBuffers_SP(); InitGfxBuffers_MM(); @@ -6628,6 +6656,7 @@ void OpenAll(void) InitGfxBackground(); + bd_open_all(); em_open_all(); sp_open_all(); mm_open_all(); @@ -6746,6 +6775,7 @@ void CloseAllAndExit(int exit_value) FreeAllMusic(); CloseAudio(); // called after freeing sounds (needed for SDL) + bd_close_all(); em_close_all(); sp_close_all();