X-Git-Url: https://git.artsoft.org/?a=blobdiff_plain;f=src%2Ffiles.c;h=7b2d7b2d7e728c68d090bd1c8e25d51ad752a6e6;hb=1856b32b9d7b3c80596362cf7a3dd8e032cd83fc;hp=278938ab66865429c951624723dd8a9988613e32;hpb=46cca8c7efab20f43ded5a37ffe10647f5a80c47;p=rocksndiamonds.git diff --git a/src/files.c b/src/files.c index 278938ab..7b2d7b2d 100644 --- a/src/files.c +++ b/src/files.c @@ -4644,9 +4644,12 @@ static void CopyNativeLevel_BD_to_RND(struct LevelInfo *level) SetDefaultLevelColors_BD(); // level name - char *cave_name = getStringPrint("%s / %d", cave->name, bd_level_nr + 1); + char *cave_name_latin1 = getLatin1FromUTF8(cave->name); + char *cave_name_final = (gd_caveset_has_levels() ? + getStringPrint("%s / %d", cave_name_latin1, bd_level_nr + 1) : + getStringCopy(cave_name_latin1)); - strncpy(level->name, cave_name, MAX_LEVEL_NAME_LEN); + strncpy(level->name, cave_name_final, MAX_LEVEL_NAME_LEN); level->name[MAX_LEVEL_NAME_LEN] = '\0'; // playfield elements @@ -4654,7 +4657,8 @@ static void CopyNativeLevel_BD_to_RND(struct LevelInfo *level) for (y = 0; y < level->fieldy; y++) level->field[x][y] = CAVE_TO_LEVEL(cave->map[y][x]); - checked_free(cave_name); + checked_free(cave_name_latin1); + checked_free(cave_name_final); } static void setTapeInfoToDefaults(void); @@ -9041,6 +9045,46 @@ void DumpLevels(void) CloseAllAndExit(0); } +void DumpLevelsetFromFilename_BD(char *filename) +{ + if (leveldir_current == NULL) // no levelsets loaded yet + bd_open_all(); + + if (!LoadNativeLevel_BD(filename, 0, FALSE)) + CloseAllAndExit(0); // function has already printed warning + + PrintLine("-", 79); + Print("Levelset '%s'\n", filename); + PrintLine("-", 79); + + DumpLevelset_BD(); + + PrintLine("-", 79); + + CloseAllAndExit(0); +} + +void DumpLevelset(void) +{ + static LevelDirTree *dumplevelset_leveldir = NULL; + + dumplevelset_leveldir = getTreeInfoFromIdentifier(leveldir_first, + global.dumplevelset_leveldir); + if (dumplevelset_leveldir == NULL) + Fail("no such level identifier: '%s'", global.dumplevelset_leveldir); + + PrintLine("-", 79); + Print("Levelset '%s'\n", dumplevelset_leveldir->identifier); + PrintLine("-", 79); + + Print("Number of levels: %d\n", dumplevelset_leveldir->levels); + Print("First level number: %d\n", dumplevelset_leveldir->first_level); + + PrintLine("-", 79); + + CloseAllAndExit(0); +} + // ============================================================================ // tape file functions @@ -11666,10 +11710,10 @@ static void setSetupInfoToDefaults(struct SetupInfo *si) si->bd_skip_hatching = FALSE; si->bd_scroll_delay = TRUE; si->bd_show_invisible_outbox = FALSE; - si->bd_smooth_movements = STATE_AUTO; + si->bd_smooth_movements = STATE_TRUE; si->bd_pushing_graphics = STATE_TRUE; si->bd_up_down_graphics = STATE_TRUE; - si->bd_skip_falling_sounds = STATE_AUTO; + si->bd_skip_falling_sounds = STATE_TRUE; si->bd_palette_c64 = GD_DEFAULT_PALETTE_C64; si->bd_palette_c64dtv = GD_DEFAULT_PALETTE_C64DTV; si->bd_palette_atari = GD_DEFAULT_PALETTE_ATARI;