X-Git-Url: https://git.artsoft.org/?a=blobdiff_plain;f=src%2Fgame_bd%2Fmain_bd.c;h=2d742bee733d5aca128a37f8366df99e0b599407;hb=11f100237c5f4e22a11df896c15e144eea2be887;hp=77af13a28c158a4e59ce6f43e1607d09af895325;hpb=0d0f19d8ab02ba3a1647851366db259489b99c7e;p=rocksndiamonds.git diff --git a/src/game_bd/main_bd.c b/src/game_bd/main_bd.c index 77af13a2..2d742bee 100644 --- a/src/game_bd/main_bd.c +++ b/src/game_bd/main_bd.c @@ -40,7 +40,7 @@ void bd_open_all(void) gd_caveset_clear(); - gd_init_keystate(); + gd_init_play_area(); gd_sound_init(); } @@ -270,12 +270,16 @@ static void PrepareGameTileBitmap_BD(void) struct GraphicInfo_BD *g_template = &graphic_info_bd_color_template; struct GraphicInfo_BD *g_default = &graphic_info_bd_object[O_STONE][0]; - gd_prepare_tile_bitmap(native_bd_level.cave, g_template->bitmap, 1); + // prepare bitmap using cave ready for playing (may have changed colors) + gd_prepare_tile_bitmap(game_bd.game->cave, g_template->bitmap, 1); + + // set reference bitmap which should be replaced with prepared bitmap gd_set_tile_bitmap_reference(g_default->bitmap); } void PreparePreviewTileBitmap_BD(Bitmap *bitmap, int scale_down_factor) { + // prepare bitmap using cave from file (with originally defined colors) gd_prepare_tile_bitmap(native_bd_level.cave, bitmap, scale_down_factor); } @@ -324,9 +328,6 @@ void InitGameEngine_BD(void) game_bd.game->itermax = 8; // default; dynamically changed at runtime game_bd.game->itermax_last = game_bd.game->itermax; - // prepare tile bitmap with level-specific colors, if available - PrepareGameTileBitmap_BD(); - // default: start with completely covered playfield int next_state = GAME_INT_START_UNCOVER + 1; @@ -334,7 +335,13 @@ void InitGameEngine_BD(void) if (setup.bd_skip_uncovering) next_state = GAME_INT_LOAD_CAVE + 1; - // fast-forward game engine until cave loaded (covered or uncovered) + // first iteration loads and prepares the cave (may change colors) + play_game_func(game_bd.game, 0); + + // prepare tile bitmap with level-specific colors, if available + PrepareGameTileBitmap_BD(); + + // fast-forward game engine to selected state (covered or uncovered) while (game_bd.game->state_counter < next_state) play_game_func(game_bd.game, 0); @@ -426,9 +433,48 @@ void GameActions_BD(byte action[MAX_PLAYERS]) // graphics functions // ============================================================================ -Bitmap *GetTitleScreen_BD(void) +// check if native BD graphics engine requested in custom graphics configuration +boolean use_native_bd_graphics_engine(void) +{ + return game.use_native_bd_graphics_engine; +} + +// check if smooth game element movements selected in setup menu +boolean use_bd_smooth_movements(void) { - return gd_get_title_screen_bitmap(); + return ((setup.bd_smooth_movements == TRUE) || + (setup.bd_smooth_movements == AUTO && !use_native_bd_graphics_engine())); +} + +// check if player pushing graphics selected in setup menu +boolean use_bd_pushing_graphics(void) +{ + return ((setup.bd_pushing_graphics == TRUE) || + (setup.bd_pushing_graphics == AUTO && !use_native_bd_graphics_engine())); +} + +// check if player up/down graphics selected in setup menu +boolean use_bd_up_down_graphics(void) +{ + return ((setup.bd_up_down_graphics == TRUE) || + (setup.bd_up_down_graphics == AUTO && !use_native_bd_graphics_engine())); +} + +// check if skipping falling sounds selected in setup menu +boolean skip_bd_falling_sounds(void) +{ + return ((setup.bd_skip_falling_sounds == TRUE) || + (setup.bd_skip_falling_sounds == AUTO && !game.use_native_bd_sound_engine)); +} + +Bitmap **GetTitleScreenBitmaps_BD(void) +{ + Bitmap **title_screen_bitmaps = gd_get_title_screen_bitmaps(); + + if (title_screen_bitmaps == NULL || title_screen_bitmaps[0] == NULL) + return NULL; + + return title_screen_bitmaps; } void CoverScreen_BD(void)