X-Git-Url: https://git.artsoft.org/?a=blobdiff_plain;f=src%2Fgame_bd%2Fmain_bd.c;h=e7844fcb6e2a4922c6d21552438f31ec564cf08f;hb=baaeb610c5e1390ebfd7616f8ea17c00221d8503;hp=68f0ec400e8ff37e54d7066c7475cec45d3c5f6c;hpb=01bf4018243f57cefbc0308e49f4dd2d40a0c054;p=rocksndiamonds.git diff --git a/src/game_bd/main_bd.c b/src/game_bd/main_bd.c index 68f0ec40..e7844fcb 100644 --- a/src/game_bd/main_bd.c +++ b/src/game_bd/main_bd.c @@ -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,12 +248,19 @@ 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) { // 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; @@ -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;