X-Git-Url: https://git.artsoft.org/?a=blobdiff_plain;f=src%2Fgame_bd%2Fmain_bd.c;h=77af13a28c158a4e59ce6f43e1607d09af895325;hb=b6b5d3fe94b178e8e48e9c51b61f3b1b8383a42f;hp=a854786e3a868e429a3431f4c6c3cd6de4435c74;hpb=7f40069aab8fb0a1055c82ce17502f5ec81fefdd;p=rocksndiamonds.git diff --git a/src/game_bd/main_bd.c b/src/game_bd/main_bd.c index a854786e..77af13a2 100644 --- a/src/game_bd/main_bd.c +++ b/src/game_bd/main_bd.c @@ -95,6 +95,30 @@ void setLevelInfoToDefaults_BD(void) setLevelInfoToDefaults_BD_Ext(0, 0); } +static List *getNativeLevelReplay_BD_Ext(List *item, boolean only_successful_replays) +{ + // look for replay that was recorded for the current difficulty level + while (item != NULL && + (item->data == NULL || + (((GdReplay *)item->data)->success == FALSE && only_successful_replays) || + ((GdReplay *)item->data)->level != native_bd_level.level_nr)) + item = item->next; + + return item; +} + +static List *getNativeLevelReplay_BD(List *replays) +{ + // 1st try: look for successful replay + List *item = getNativeLevelReplay_BD_Ext(replays, TRUE); + + if (item != NULL) + return item; + + // 2nd try: look for any replay + return getNativeLevelReplay_BD_Ext(replays, FALSE); +} + boolean LoadNativeLevel_BD(char *filename, int level_pos, boolean level_info_only) { static char *filename_loaded = NULL; @@ -137,16 +161,9 @@ boolean LoadNativeLevel_BD(char *filename, int level_pos, boolean level_info_onl // check if this cave has any replays if (native_bd_level.cave->replays != NULL) { - List *item = native_bd_level.cave->replays; - - // try to find replay that was recorded for this difficulty level - while (item != NULL && - (item->data == NULL || - ((GdReplay *)item->data)->success == FALSE || - ((GdReplay *)item->data)->level != native_bd_level.level_nr)) - item = item->next; + List *item = getNativeLevelReplay_BD(native_bd_level.cave->replays); - // matching replay found + // check if any matching replay was found if (item != NULL) native_bd_level.replay = (GdReplay *)item->data; } @@ -409,6 +426,11 @@ void GameActions_BD(byte action[MAX_PLAYERS]) // graphics functions // ============================================================================ +Bitmap *GetTitleScreen_BD(void) +{ + return gd_get_title_screen_bitmap(); +} + void CoverScreen_BD(void) { game_bd.cover_screen = FALSE;