gd_caveset_clear();
- gd_init_keystate();
+ gd_init_play_area();
gd_sound_init();
}
return gd_caveset_save_to_file(filename);
}
+void DumpLevelset_BD(void)
+{
+ int num_levels_per_cave = (gd_caveset_has_levels() ? 5 : 1);
+
+ Print("Number of levels: %d\n", num_levels_per_cave * gd_caveset_count());
+ Print("First level number: %d\n", 1);
+}
+
// ============================================================================
// game engine functions
return 0;
}
+void SetTimeFrames_BD(int frames_played)
+{
+ // needed to store final time after solving game (before counting down remaining time)
+ if (game_bd.game->state_counter == GAME_INT_CAVE_RUNNING)
+ game_bd.frames_played = frames_played;
+
+}
+
static void UpdateGameDoorValues_BD(void)
{
GdCave *cave = game_bd.game->cave;
- int time_secs = gd_cave_time_show(cave, cave->time);
+ int time_left = gd_cave_time_show(cave, cave->time);
int gems_still_needed = MAX(0, (cave->diamonds_needed - cave->diamonds_collected));
- game_bd.time_played = time_secs;
+ game_bd.time_left = time_left;
game_bd.gems_still_needed = gems_still_needed;
game_bd.score = game_bd.game->player_score;
if (game.LevelSolved)
{
// update time and score in panel while counting bonus time
- game.LevelSolved_CountingTime = game_bd.time_played;
+ game.LevelSolved_CountingTime = game_bd.time_left;
game.LevelSolved_CountingScore = game_bd.score;
}
}
game_bd.game_over = FALSE;
game_bd.cover_screen = FALSE;
- game_bd.time_played = 0;
- game_bd.gems_still_needed = 0;
- game_bd.score = 0;
-
gd_caveset_last_selected = native_bd_level.cave_nr;
gd_caveset_last_selected_level = native_bd_level.level_nr;
// when skipping uncovering, continue with uncovered playfield
if (setup.bd_skip_uncovering)
game_bd.game->state_counter = GAME_INT_UNCOVER_ALL + 1;
+ else if (isLevelEditorFastStart())
+ game_bd.game->state_counter = GAME_INT_UNCOVER_ALL - 8;
- if (setup.bd_skip_uncovering)
+ if (setup.bd_skip_uncovering || isLevelEditorFastStart())
gd_scroll(game_bd.game, TRUE, TRUE);
ClearRectangle(gd_screen_bitmap, 0, 0, SXSIZE, SYSIZE);
// 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 == STATE_TRUE) ||
+ (setup.bd_smooth_movements == STATE_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 == STATE_TRUE) ||
+ (setup.bd_pushing_graphics == STATE_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 == STATE_TRUE) ||
+ (setup.bd_up_down_graphics == STATE_AUTO && !use_native_bd_graphics_engine()));
+}
+
+// check if element falling sounds selected in setup menu
+boolean use_bd_falling_sounds(void)
+{
+ return ((setup.bd_falling_sounds == STATE_TRUE) ||
+ (setup.bd_falling_sounds == STATE_AUTO && game.use_native_bd_sound_engine));
+}
+
+boolean hasColorTemplate_BD(void)
+{
+ return gd_bitmap_has_c64_colors(graphic_info_bd_color_template.bitmap);
+}
+
Bitmap **GetTitleScreenBitmaps_BD(void)
{
Bitmap **title_screen_bitmaps = gd_get_title_screen_bitmaps();