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
}
}
+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);
+ gd_set_tile_bitmap_reference(g_default->bitmap);
+}
+
+void PreparePreviewTileBitmap_BD(Bitmap *bitmap, int scale_down_factor)
+{
+ gd_prepare_tile_bitmap(native_bd_level.cave, bitmap, scale_down_factor);
+}
+
+void SetPreviewTileBitmapReference_BD(Bitmap *bitmap)
+{
+ gd_set_tile_bitmap_reference(bitmap);
+}
+
+Bitmap *GetPreviewTileBitmap_BD(Bitmap *bitmap)
+{
+ return gd_get_tile_bitmap(bitmap);
+}
+
unsigned int InitEngineRandom_BD(int seed)
{
if (seed == NEW_RANDOMIZE)
{
// get randomly selected seed to render the cave
- seed = g_random_int_range(0, GD_CAVE_SEED_MAX);
+ seed = gd_random_int_range(0, GD_CAVE_SEED_MAX);
}
game_bd.random_seed = seed;
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;
play_game_func(game_bd.game, action[0]);
+ // scroll without iterating engine if player out of sight (mainly due to wrap-around)
+ // (this is needed to prevent broken tapes in case of viewport or tile size changes)
+ while (game_bd.game->out_of_window)
+ {
+ RedrawPlayfield_BD(TRUE);
+
+ BlitScreenToBitmap_BD(backbuffer);
+
+ BackToFront();
+
+ play_game_func(game_bd.game, action[0]);
+ }
+
RedrawPlayfield_BD(FALSE);
UpdateGameDoorValues_BD();
// graphics functions
// ============================================================================
+Bitmap *GetTitleScreen_BD(void)
+{
+ return gd_get_title_screen_bitmap();
+}
+
void CoverScreen_BD(void)
{
game_bd.cover_screen = FALSE;