#define INFOTEXT_XSIZE SXSIZE
#define INFOTEXT_YSIZE getFontHeight(INFOTEXT_FONT)
#define INFOTEXT_YSIZE_FULL (INFOTEXT_YSIZE + ED_GADGET_SMALL_DISTANCE)
-#define INFOTEXT_XPOS SX
-#define INFOTEXT_YPOS (SY + SYSIZE - INFOTEXT_YSIZE)
+#define INFOTEXT_X (editor.settings.tooltip.x)
+#define INFOTEXT_Y (editor.settings.tooltip.y)
+#define INFOTEXT_XY_REDEFINED (INFOTEXT_X != -1 || INFOTEXT_Y != -1)
+#define INFOTEXT_XPOS SX + (INFOTEXT_XY_REDEFINED ? INFOTEXT_X : 0)
+#define INFOTEXT_YPOS SY + (INFOTEXT_XY_REDEFINED ? INFOTEXT_Y : \
+ SYSIZE - INFOTEXT_YSIZE)
/*
static char levelset_name[MAX_LEVEL_NAME_LEN + 1];
static char levelset_author[MAX_LEVEL_AUTHOR_LEN + 1];
static int levelset_num_levels = 100;
-static int levelset_first_level_nr = 1;
static int levelset_save_mode = LEVELSET_SAVE_MODE_UPDATE;
static struct
num_editor_elements += num_editor_el_empty;
}
+ else
+ {
+ num_editor_el_empty = 0;
+ }
editor_elements = checked_malloc(num_editor_elements * sizeof(int));
}
if (level_nr > leveldir_current->last_level)
- UpdateUserLevelSet(getLoginName(), NULL, NULL, level_nr + 9, -1);
+ UpdateUserLevelSet(getLoginName(), NULL, NULL, level_nr + 9);
// else: allow the save even if annotation failed
static int getMaxEdFieldY(boolean has_scrollbar)
{
- int infotext_height = INFOTEXT_YSIZE_FULL;
+ int infotext_height = (IN_PIX_FIELD(INFOTEXT_XPOS - SX, INFOTEXT_YPOS - SY) ?
+ INFOTEXT_YSIZE_FULL : 0);
int scrollbar_height = (has_scrollbar ? ED_SCROLLBUTTON_YSIZE : 0);
int sysize = SYSIZE - scrollbar_height - infotext_height;
int max_ed_fieldy = sysize / ed_tilesize;
snprintf(levelset_author, MAX_LEVEL_AUTHOR_LEN + 1,
"%s", leveldir_current->author);
- levelset_num_levels = leveldir_current->levels;
- levelset_first_level_nr = leveldir_current->first_level;
+ levelset_num_levels = leveldir_current->levels;
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;
FadeSoundsAndMusic();
- if (CheckIfGlobalBorderHasChanged())
+ if (CheckIfGlobalBorderOrPlayfieldViewportHasChanged())
fade_mask = REDRAW_ALL;
FadeOut(fade_mask);
InitZoomLevelSettings(-1);
InitLevelSetInfo();
- OpenDoor(DOOR_OPEN_1 | DOOR_OPEN_2 | DOOR_NO_DELAY);
+ SetDoorState(DOOR_OPEN_1 | DOOR_OPEN_2);
#if DEBUG
CheckElementDescriptions();
if (UpdateUserLevelSet(levelset_subdir,
levelset_name,
levelset_author,
- levelset_num_levels,
- levelset_first_level_nr))
+ levelset_num_levels))
{
Request("Level set updated!", REQ_CONFIRM);
}
if (CreateUserLevelSet(levelset_subdir,
levelset_name,
levelset_author,
- levelset_num_levels,
- levelset_first_level_nr))
+ levelset_num_levels))
{
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 &&