renamed function
[rocksndiamonds.git] / src / game_bd / main_bd.c
index 1a7705b6de73795c6a0d15ca25a89a03302a9a34..2d742bee733d5aca128a37f8366df99e0b599407 100644 (file)
@@ -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,6 +433,40 @@ void GameActions_BD(byte action[MAX_PLAYERS])
 // graphics functions
 // ============================================================================
 
+// 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 ((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();