added support for level-specific game graphics colors for BD engine
[rocksndiamonds.git] / src / game_bd / main_bd.c
index 0ffea6be348c4b3fecfb6e34d2b39ddcf79e7775..e7844fcb6e2a4922c6d21552438f31ec564cf08f 100644 (file)
@@ -154,6 +154,16 @@ boolean LoadNativeLevel_BD(char *filename, int level_pos, boolean level_info_onl
   return TRUE;
 }
 
+boolean SaveNativeLevel_BD(char *filename)
+{
+  GdCave *cave = gd_cave_new_from_cave(native_bd_level.cave);
+
+  gd_caveset_clear();
+  gd_caveset = list_append(gd_caveset, cave);
+
+  return gd_caveset_save_to_file(filename);
+}
+
 
 // ============================================================================
 // game engine functions
@@ -238,6 +248,13 @@ static void UpdateGameDoorValues_BD(void)
   }
 }
 
+static void PrepareGameTileBitmap_BD(void)
+{
+  struct GraphicInfo_BD *g = &graphic_info_bd_object[O_STONE][0];
+
+  gd_prepare_tile_bitmap(native_bd_level.cave, g->bitmap, 1);
+}
+
 unsigned int InitEngineRandom_BD(int seed)
 {
   if (seed == NEW_RANDOMIZE)
@@ -273,6 +290,9 @@ 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;