X-Git-Url: https://git.artsoft.org/?a=blobdiff_plain;f=src%2Ffiles.c;h=b1bbc43ef9b1810ee19e6e098094fa688be6486d;hb=fa8aab99c2bf447a57ea1914ac98030455c49bad;hp=60d3ae0d23dc00f43aa474d72e796c93a210d438;hpb=157fb76461d332a22233e6664cd294d7db5d3558;p=rocksndiamonds.git diff --git a/src/files.c b/src/files.c index 60d3ae0d..b1bbc43e 100644 --- a/src/files.c +++ b/src/files.c @@ -6491,26 +6491,40 @@ void CopyNativeLevel_Native_to_RND(struct LevelInfo *level) void SaveNativeLevel(struct LevelInfo *level) { + // saving native level files only supported for some game engines + if (level->game_engine_type != GAME_ENGINE_TYPE_BD && + level->game_engine_type != GAME_ENGINE_TYPE_SP) + return; + + char *file_ext = (level->game_engine_type == GAME_ENGINE_TYPE_BD ? "bd" : + level->game_engine_type == GAME_ENGINE_TYPE_SP ? "sp" : ""); + char *basename = getSingleLevelBasenameExt(level->file_info.nr, file_ext); + char *filename = getLevelFilenameFromBasename(basename); + + if (fileExists(filename) && !Request("Native level file already exists! Overwrite it?", REQ_ASK)) + return; + + boolean success = FALSE; + if (level->game_engine_type == GAME_ENGINE_TYPE_BD) { - char *basename = getSingleLevelBasenameExt(level->file_info.nr, "bd"); - char *filename = getLevelFilenameFromBasename(basename); - CopyNativeLevel_RND_to_BD(level); // CopyNativeTape_RND_to_BD(level); - SaveNativeLevel_BD(filename); + success = SaveNativeLevel_BD(filename); } else if (level->game_engine_type == GAME_ENGINE_TYPE_SP) { - char *basename = getSingleLevelBasenameExt(level->file_info.nr, "sp"); - char *filename = getLevelFilenameFromBasename(basename); - CopyNativeLevel_RND_to_SP(level); CopyNativeTape_RND_to_SP(level); - SaveNativeLevel_SP(filename); + success = SaveNativeLevel_SP(filename); } + + if (success) + Request("Native level file saved!", REQ_CONFIRM); + else + Request("Failed to save native level file!", REQ_CONFIRM); }