}
else
{
- int graphic = el2edimg(element);
+ int graphic, frame;
+
+ el2edimg_with_frame(element, &graphic, &frame);
if (masked)
- DrawSizedGraphicThruMask(x, y, graphic, 0, tilesize);
+ DrawSizedGraphicThruMask(x, y, graphic, frame, tilesize);
else
- DrawSizedGraphic(x, y, graphic, 0, tilesize);
+ DrawSizedGraphic(x, y, graphic, frame, tilesize);
}
}
int src_x, src_y;
int element_template = EL_BD_GAME_GRAPHICS_COLOR_TEMPLATE;
int graphic_template = el2preimg(element_template);
- int element_default = EL_BD_ROCK;
+ int element_default = EL_BD_ROCK_NATIVE;
int graphic_default = el2preimg(element_default);
// create special preview bitmap and scale it down to preview tile size
{
el_empty = EL_EMPTY;
el_player = EL_BD_PLAYER;
- el_sand = EL_BD_SAND;
- el_wall = EL_BD_WALL;
+ el_sand = EL_BD_SAND_1;
+ el_wall = EL_BD_WALL_NATIVE;
el_steelwall = EL_BD_STEELWALL;
el_exit_closed = EL_BD_EXIT_CLOSED;
}
},
{
O_DIRT, TRUE,
- EL_BD_SAND, -1, -1
+ EL_BD_SAND_1, -1, -1
},
{
O_DIRT_SLOPED_UP_RIGHT, TRUE,
},
{
O_BRICK, TRUE,
- EL_BD_WALL, -1, -1
+ EL_BD_WALL_NATIVE, -1, -1
},
{
O_BRICK_SLOPED_UP_RIGHT, TRUE,
},
{
O_MAGIC_WALL, TRUE,
- EL_BD_MAGIC_WALL, ACTION_ACTIVE, -1
+ EL_BD_MAGIC_WALL_NATIVE, ACTION_ACTIVE, -1
},
{
O_PRE_OUTBOX, TRUE,
},
{
O_STONE, TRUE,
- EL_BD_ROCK, -1, -1
+ EL_BD_ROCK_NATIVE, -1, -1
},
{
O_STONE_F, TRUE,
- EL_BD_ROCK_FALLING, -1, -1
+ EL_BD_ROCK_NATIVE_FALLING, -1, -1
},
{
O_STONE_F, FALSE,
- EL_BD_ROCK, ACTION_FALLING, -1
+ EL_BD_ROCK_NATIVE, ACTION_FALLING, -1
},
{
O_FLYING_STONE, TRUE,
},
{
O_DIAMOND, TRUE,
- EL_BD_DIAMOND, -1, -1
+ EL_BD_DIAMOND_NATIVE, -1, -1
},
{
O_DIAMOND_F, TRUE,
- EL_BD_DIAMOND_FALLING, -1, -1
+ EL_BD_DIAMOND_NATIVE_FALLING, -1, -1
},
{
O_DIAMOND_F, FALSE,
- EL_BD_DIAMOND, ACTION_FALLING, -1
+ EL_BD_DIAMOND_NATIVE, ACTION_FALLING, -1
},
{
O_FLYING_DIAMOND, TRUE,
},
{
O_AMOEBA, TRUE,
- EL_BD_AMOEBA, -1, -1
+ EL_BD_AMOEBA_1, -1, -1
},
{
O_AMOEBA_2, TRUE,
},
{
O_FIREFLY_1, TRUE,
- EL_BD_FIREFLY_LEFT, -1, -1
+ EL_BD_FIREFLY_1_LEFT, -1, -1
},
{
O_FIREFLY_2, TRUE,
- EL_BD_FIREFLY_UP, -1, -1
+ EL_BD_FIREFLY_1_UP, -1, -1
},
{
O_FIREFLY_3, TRUE,
- EL_BD_FIREFLY_RIGHT, -1, -1
+ EL_BD_FIREFLY_1_RIGHT, -1, -1
},
{
O_FIREFLY_4, TRUE,
- EL_BD_FIREFLY_DOWN, -1, -1
+ EL_BD_FIREFLY_1_DOWN, -1, -1
},
{
O_ALT_FIREFLY_1, TRUE,
},
{
O_BUTTER_1, TRUE,
- EL_BD_BUTTERFLY_LEFT, -1, -1
+ EL_BD_BUTTERFLY_1_LEFT, -1, -1
},
{
O_BUTTER_2, TRUE,
- EL_BD_BUTTERFLY_UP, -1, -1
+ EL_BD_BUTTERFLY_1_UP, -1, -1
},
{
O_BUTTER_3, TRUE,
- EL_BD_BUTTERFLY_RIGHT, -1, -1
+ EL_BD_BUTTERFLY_1_RIGHT, -1, -1
},
{
O_BUTTER_4, TRUE,
- EL_BD_BUTTERFLY_DOWN, -1, -1
+ EL_BD_BUTTERFLY_1_DOWN, -1, -1
},
{
O_ALT_BUTTER_1, TRUE,
},
{
O_PRE_DIA_1, TRUE,
- EL_BD_DIAMOND_GROWING_1, -1, -1
+ EL_BD_DIAMOND_NATIVE_GROWING_1, -1, -1
},
{
O_PRE_DIA_1, FALSE,
- EL_BD_DIAMOND, ACTION_GROWING, -1
+ EL_BD_DIAMOND_NATIVE, ACTION_GROWING, -1
},
{
O_PRE_DIA_2, TRUE,
- EL_BD_DIAMOND_GROWING_2, -1, -1
+ EL_BD_DIAMOND_NATIVE_GROWING_2, -1, -1
},
{
O_PRE_DIA_2, FALSE,
- EL_BD_DIAMOND, ACTION_GROWING, -1
+ EL_BD_DIAMOND_NATIVE, ACTION_GROWING, -1
},
{
O_PRE_DIA_3, TRUE,
- EL_BD_DIAMOND_GROWING_3, -1, -1
+ EL_BD_DIAMOND_NATIVE_GROWING_3, -1, -1
},
{
O_PRE_DIA_3, FALSE,
- EL_BD_DIAMOND, ACTION_GROWING, -1
+ EL_BD_DIAMOND_NATIVE, ACTION_GROWING, -1
},
{
O_PRE_DIA_4, TRUE,
- EL_BD_DIAMOND_GROWING_4, -1, -1
+ EL_BD_DIAMOND_NATIVE_GROWING_4, -1, -1
},
{
O_PRE_DIA_4, FALSE,
- EL_BD_DIAMOND, ACTION_GROWING, -1
+ EL_BD_DIAMOND_NATIVE, ACTION_GROWING, -1
},
{
O_PRE_DIA_5, TRUE,
- EL_BD_DIAMOND_GROWING_5, -1, -1
+ EL_BD_DIAMOND_NATIVE_GROWING_5, -1, -1
},
{
O_PRE_DIA_5, FALSE,
- EL_BD_DIAMOND, ACTION_GROWING, -1
+ EL_BD_DIAMOND_NATIVE, ACTION_GROWING, -1
},
{
O_EXPLODE_1, TRUE,
},
{
O_PRE_STONE_1, TRUE,
- EL_BD_ROCK_GROWING_1, -1, -1
+ EL_BD_ROCK_NATIVE_GROWING_1, -1, -1
},
{
O_PRE_STONE_1, FALSE,
- EL_BD_ROCK, ACTION_GROWING, -1
+ EL_BD_ROCK_NATIVE, ACTION_GROWING, -1
},
{
O_PRE_STONE_2, TRUE,
- EL_BD_ROCK_GROWING_2, -1, -1
+ EL_BD_ROCK_NATIVE_GROWING_2, -1, -1
},
{
O_PRE_STONE_2, FALSE,
- EL_BD_ROCK, ACTION_GROWING, -1
+ EL_BD_ROCK_NATIVE, ACTION_GROWING, -1
},
{
O_PRE_STONE_3, TRUE,
- EL_BD_ROCK_GROWING_3, -1, -1
+ EL_BD_ROCK_NATIVE_GROWING_3, -1, -1
},
{
O_PRE_STONE_3, FALSE,
- EL_BD_ROCK, ACTION_GROWING, -1
+ EL_BD_ROCK_NATIVE, ACTION_GROWING, -1
},
{
O_PRE_STONE_4, TRUE,
- EL_BD_ROCK_GROWING_4, -1, -1
+ EL_BD_ROCK_NATIVE_GROWING_4, -1, -1
},
{
O_PRE_STONE_4, FALSE,
- EL_BD_ROCK, ACTION_GROWING, -1
+ EL_BD_ROCK_NATIVE, ACTION_GROWING, -1
},
{
O_PRE_STEEL_1, TRUE,
O_PLAYER_RIGHT, FALSE,
EL_BD_PLAYER, ACTION_MOVING, MV_BIT_RIGHT
},
+ {
+ O_PLAYER_UP, FALSE,
+ EL_BD_PLAYER, ACTION_MOVING, MV_BIT_UP
+ },
+ {
+ O_PLAYER_DOWN, FALSE,
+ EL_BD_PLAYER, ACTION_MOVING, MV_BIT_DOWN
+ },
{
O_PLAYER_BLINK, FALSE,
EL_BD_PLAYER, ACTION_BORING_1, -1
},
{
O_MAGIC_WALL_ACTIVE, FALSE,
- EL_BD_MAGIC_WALL_ACTIVE, -1, -1
+ EL_BD_MAGIC_WALL_NATIVE_ACTIVE, -1, -1
},
{
O_REPLICATOR_ACTIVE, FALSE,
return element_info[element].special_graphic[GFX_SPECIAL_ARG_EDITOR];
}
+int el2edimg_with_frame(int element, int *graphic, int *frame)
+{
+ *graphic = el2edimg(element);
+ *frame = 0;
+
+ if (*graphic == IMG_UNKNOWN)
+ {
+ // no graphic defined -- if BD style, try to get runtime ("effect") element graphics
+ // (normal BD style elements have graphics, but runtime ("effects") elements do not)
+ int element_bd = map_element_RND_to_BD_cave(element);
+
+ if (element_bd != O_UNKNOWN)
+ {
+ struct GraphicInfo_BD *g_bd = &graphic_info_bd_object[element_bd][0];
+
+ *graphic = g_bd->graphic;
+ *frame = g_bd->frame;
+ }
+ }
+
+ return *graphic;
+}
+
int el2preimg(int element)
{
element = GFX_ELEMENT(element);
#endif
}
+void ToggleAudioSampleRateIfNeeded(void)
+{
+ int setup_audio_sample_rate = (setup.audio_sample_rate_44100 ? 44100 : 22050);
+
+ // if setup and audio sample rate are already matching, nothing do do
+ if ((setup_audio_sample_rate == audio.sample_rate) ||
+ !audio.sound_available)
+ return;
+
+#if 1
+ // apparently changing the audio output sample rate does not work at runtime,
+ // so currently the program has to be restarted to apply the new sample rate
+ Request("Please restart the program to change audio sample rate!", REQ_CONFIRM);
+#else
+ SDLReopenAudio();
+
+ // set setup value according to successfully changed audio sample rate
+ setup.audio_sample_rate_44100 = (audio.sample_rate == 44100);
+#endif
+}
+
void ToggleFullscreenIfNeeded(void)
{
// if setup and video fullscreen state are already matching, nothing do do