X-Git-Url: https://git.artsoft.org/?p=rocksndiamonds.git;a=blobdiff_plain;f=src%2Feditor.c;h=8da3feb9c03aa11ddf7e3055e2f686b64406bf00;hp=ce772508756c57a322a451fec2dc922d1601fc4a;hb=3a3108d045227e21342a915ffc7e022e8eecbedc;hpb=cb69ffb72a904eb0704c7f0e6c593bfee19562df diff --git a/src/editor.c b/src/editor.c index ce772508..8da3feb9 100644 --- a/src/editor.c +++ b/src/editor.c @@ -8236,6 +8236,26 @@ static void InitLevelSetInfo() levelset_save_mode = LEVELSET_SAVE_MODE_UPDATE; } +static void ChangeEditorToLevelSet(char *levelset_subdir) +{ + leveldir_current = getTreeInfoFromIdentifier(leveldir_first, levelset_subdir); + + // the previous level set might have used custom artwork + ReloadCustomArtwork(0); + + LoadLevelSetup_SeriesInfo(); + + SaveLevelSetup_LastSeries(); + SaveLevelSetup_SeriesInfo(); + + TapeErase(); + + LoadLevel(level_nr); + LoadScore(level_nr); + + DrawLevelEd(); +} + void DrawLevelEd() { int fade_mask = REDRAW_FIELD; @@ -8766,10 +8786,18 @@ static void DrawLevelInfoLevel() MapTextInputGadget(i); } +static char *getLevelSubdirFromSaveMode(int save_mode) +{ + if (save_mode == LEVELSET_SAVE_MODE_CREATE) + return getNewUserLevelSubdir(); + + return leveldir_current->subdir; +} + static void DrawLevelInfoLevelSet_DirectoryInfo() { char *directory_text = "Level set directory:"; - char *directory_name = leveldir_current->subdir; + char *directory_name = getLevelSubdirFromSaveMode(levelset_save_mode); int font1_nr = FONT_TEXT_1; int font2_nr = FONT_TEXT_2; int font1_height = getFontHeight(font1_nr); @@ -8777,9 +8805,6 @@ static void DrawLevelInfoLevelSet_DirectoryInfo() int x = ED_LEVEL_SETTINGS_X(0); int y = ED_LEVEL_SETTINGS_Y(6); - if (levelset_save_mode == LEVELSET_SAVE_MODE_CREATE) - directory_name = getNewUserLevelSubdir(); - PrintInfoText(directory_text, font1_nr, x, y - yoffset_above); PrintInfoText(directory_name, font2_nr, x, y); } @@ -12586,6 +12611,8 @@ static void HandleTextbuttonGadgets(struct GadgetInfo *gi) } else if (type_id == ED_TEXTBUTTON_ID_SAVE_LEVELSET) { + char *levelset_subdir = getLevelSubdirFromSaveMode(levelset_save_mode); + if (levelset_save_mode == LEVELSET_SAVE_MODE_UPDATE && leveldir_current->readonly) { @@ -12610,7 +12637,7 @@ static void HandleTextbuttonGadgets(struct GadgetInfo *gi) if (levelset_save_mode == LEVELSET_SAVE_MODE_UPDATE) { - if (UpdateUserLevelSet(leveldir_current->subdir, + if (UpdateUserLevelSet(levelset_subdir, levelset_name, levelset_author, levelset_num_levels, @@ -12625,20 +12652,21 @@ static void HandleTextbuttonGadgets(struct GadgetInfo *gi) } else { - if (CreateUserLevelSet(getNewUserLevelSubdir(), + if (CreateUserLevelSet(levelset_subdir, levelset_name, levelset_author, levelset_num_levels, levelset_first_level_nr)) { Request("New level set created!", REQ_CONFIRM); + + AddUserLevelSetToLevelInfo(levelset_subdir); + ChangeEditorToLevelSet(levelset_subdir); } else { Request("Creating new level set failed!", REQ_CONFIRM); } - - DrawLevelInfoWindow(); // update (increment) level set directory name } } else if (type_id == ED_TEXTBUTTON_ID_ADD_CHANGE_PAGE &&