#define ED_TABBUTTON_XSIZE (graphic_info[IMG_EDITOR_TABBUTTON].width)
#define ED_TABBUTTON_YSIZE (graphic_info[IMG_EDITOR_TABBUTTON].height)
-#define ED_LEVEL_SETTINGS_TABS_X (editor.settings.tabs.x)
-#define ED_LEVEL_SETTINGS_TABS_Y (editor.settings.tabs.y)
-#define ED_ELEMENT_SETTINGS_TABS_X (editor.settings.tabs.x)
-#define ED_ELEMENT_SETTINGS_TABS_Y (editor.settings.tabs.y + \
+#define ED_SETTINGS_LEVEL_TABS_X (editor.settings.tabs.x)
+#define ED_SETTINGS_LEVEL_TABS_Y (editor.settings.tabs.y)
+#define ED_SETTINGS_ELEMENT_TABS_X (editor.settings.tabs.x)
+#define ED_SETTINGS_ELEMENT_TABS_Y (editor.settings.tabs.y + \
editor.settings.tabs.yoffset2)
#define ED_SETTINGS_TABS_XOFFSET (editor.settings.tabs.draw_xoffset)
#define ED_SETTINGS_TABS_YOFFSET (editor.settings.tabs.draw_yoffset)
-#define ED_LEVEL_SETTINGS_XSTART (ED_LEVEL_SETTINGS_TABS_X + \
+#define ED_LEVEL_TABS_XSTART (ED_SETTINGS_LEVEL_TABS_X)
+#define ED_LEVEL_TABS_YSTART (ED_SETTINGS_LEVEL_TABS_Y)
+#define ED_LEVEL_SETTINGS_XSTART (ED_SETTINGS_LEVEL_TABS_X + \
ED_SETTINGS_TABS_XOFFSET)
-#define ED_LEVEL_SETTINGS_YSTART (ED_LEVEL_SETTINGS_TABS_Y + \
+#define ED_LEVEL_SETTINGS_YSTART (ED_SETTINGS_LEVEL_TABS_Y + \
ED_TABBUTTON_YSIZE + \
ED_GADGET_TINY_DISTANCE + \
ED_TAB_BAR_HEIGHT + \
ED_SETTINGS_TABS_YOFFSET + \
getFontHeight(FONT_TEXT_1) + \
ED_GADGET_TEXT_DISTANCE)
-#define ED_ELEMENT_SETTINGS_XSTART (ED_ELEMENT_SETTINGS_TABS_X + \
+#define ED_ELEMENT_TABS_XSTART (ED_SETTINGS_ELEMENT_TABS_X)
+#define ED_ELEMENT_TABS_YSTART (ED_SETTINGS_ELEMENT_TABS_Y)
+#define ED_ELEMENT_SETTINGS_XSTART (ED_SETTINGS_ELEMENT_TABS_X + \
ED_SETTINGS_TABS_XOFFSET)
-#define ED_ELEMENT_SETTINGS_YSTART (ED_ELEMENT_SETTINGS_TABS_Y + \
+#define ED_ELEMENT_SETTINGS_YSTART (ED_SETTINGS_ELEMENT_TABS_Y + \
ED_TABBUTTON_YSIZE + \
ED_GADGET_TINY_DISTANCE + \
ED_TAB_BAR_HEIGHT + \
#define ED_SETTINGS_YOFFSET (ED_CHECKBUTTON_YSIZE + \
ED_GADGET_LINE_DISTANCE)
-#define ED_POS_LEVEL_SETTINGS_RANGE (10000)
-#define ED_POS_LEVEL_SETTINGS_FIRST (1 * ED_POS_LEVEL_SETTINGS_RANGE)
-#define ED_POS_LEVEL_SETTINGS_LAST (2 * ED_POS_LEVEL_SETTINGS_RANGE - 1)
-#define ED_POS_ELEMENT_SETTINGS_FIRST (2 * ED_POS_LEVEL_SETTINGS_RANGE)
-#define ED_POS_ELEMENT_SETTINGS_LAST (3 * ED_POS_LEVEL_SETTINGS_RANGE - 1)
+#define ED_POS_RANGE (10000)
+#define ED_POS_LEVEL_TABS_FIRST (1 * ED_POS_RANGE)
+#define ED_POS_LEVEL_TABS_LAST (2 * ED_POS_RANGE - 1)
+#define ED_POS_LEVEL_SETTINGS_FIRST (2 * ED_POS_RANGE)
+#define ED_POS_LEVEL_SETTINGS_LAST (3 * ED_POS_RANGE - 1)
+#define ED_POS_ELEMENT_TABS_FIRST (3 * ED_POS_RANGE)
+#define ED_POS_ELEMENT_TABS_LAST (4 * ED_POS_RANGE - 1)
+#define ED_POS_ELEMENT_SETTINGS_FIRST (4 * ED_POS_RANGE)
+#define ED_POS_ELEMENT_SETTINGS_LAST (5 * ED_POS_RANGE - 1)
+
+#define ED_LEVEL_TABS_XPOS(n) (ED_POS_LEVEL_TABS_FIRST + (n))
+#define ED_LEVEL_TABS_YPOS(n) (ED_POS_LEVEL_TABS_FIRST + (n))
#define ED_LEVEL_SETTINGS_XPOS(n) (ED_POS_LEVEL_SETTINGS_FIRST + (n))
#define ED_LEVEL_SETTINGS_YPOS(n) (ED_POS_LEVEL_SETTINGS_FIRST + (n))
+#define ED_ELEMENT_TABS_XPOS(n) (ED_POS_ELEMENT_TABS_FIRST + (n))
+#define ED_ELEMENT_TABS_YPOS(n) (ED_POS_ELEMENT_TABS_FIRST + (n))
+
#define ED_ELEMENT_SETTINGS_XPOS(n) (ED_POS_ELEMENT_SETTINGS_FIRST + (n))
#define ED_ELEMENT_SETTINGS_YPOS(n) (ED_POS_ELEMENT_SETTINGS_FIRST + (n))
+#define IS_POS_LEVEL_TABS(n) ((n) >= ED_POS_LEVEL_TABS_FIRST && \
+ (n) <= ED_POS_LEVEL_TABS_LAST)
#define IS_POS_LEVEL_SETTINGS(n) ((n) >= ED_POS_LEVEL_SETTINGS_FIRST && \
(n) <= ED_POS_LEVEL_SETTINGS_LAST)
+#define IS_POS_ELEMENT_TABS(n) ((n) >= ED_POS_ELEMENT_TABS_FIRST && \
+ (n) <= ED_POS_ELEMENT_TABS_LAST)
#define IS_POS_ELEMENT_SETTINGS(n) ((n) >= ED_POS_ELEMENT_SETTINGS_FIRST && \
(n) <= ED_POS_ELEMENT_SETTINGS_LAST)
+#define ED_LEVEL_TABS_LINE(n) ((n) - ED_POS_LEVEL_TABS_FIRST)
#define ED_LEVEL_SETTINGS_LINE(n) ((n) - ED_POS_LEVEL_SETTINGS_FIRST)
+#define ED_ELEMENT_TABS_LINE(n) ((n) - ED_POS_ELEMENT_TABS_FIRST)
#define ED_ELEMENT_SETTINGS_LINE(n) ((n) - ED_POS_ELEMENT_SETTINGS_FIRST)
+#define ED_LEVEL_TABS_X(n) (ED_LEVEL_TABS_XSTART + \
+ (n) * ED_SETTINGS_TABS_XOFFSET)
+#define ED_LEVEL_TABS_Y(n) (ED_LEVEL_TABS_YSTART + \
+ (n) * ED_SETTINGS_TABS_YOFFSET)
+
#define ED_LEVEL_SETTINGS_X(n) (ED_LEVEL_SETTINGS_XSTART + \
(n) * ED_SETTINGS_XOFFSET)
#define ED_LEVEL_SETTINGS_Y(n) (ED_LEVEL_SETTINGS_YSTART + \
(n) * ED_SETTINGS_YOFFSET)
+#define ED_ELEMENT_TABS_X(n) (ED_ELEMENT_TABS_XSTART + \
+ (n) * ED_SETTINGS_TABS_XOFFSET)
+#define ED_ELEMENT_TABS_Y(n) (ED_ELEMENT_TABS_YSTART + \
+ (n) * ED_SETTINGS_TABS_YOFFSET)
+
#define ED_ELEMENT_SETTINGS_X(n) (ED_ELEMENT_SETTINGS_XSTART + \
(n) * ED_SETTINGS_XOFFSET)
#define ED_ELEMENT_SETTINGS_Y(n) (ED_ELEMENT_SETTINGS_YSTART + \
(n) * ED_SETTINGS_YOFFSET)
+#define ED_POS_TO_LEVEL_TABS_X(n) \
+ (ED_LEVEL_TABS_X(ED_LEVEL_TABS_LINE(n)))
+#define ED_POS_TO_LEVEL_TABS_Y(n) \
+ (ED_LEVEL_TABS_Y(ED_LEVEL_TABS_LINE(n)))
+
#define ED_POS_TO_LEVEL_SETTINGS_X(n) \
(ED_LEVEL_SETTINGS_X(ED_LEVEL_SETTINGS_LINE(n)))
#define ED_POS_TO_LEVEL_SETTINGS_Y(n) \
(ED_LEVEL_SETTINGS_Y(ED_LEVEL_SETTINGS_LINE(n)))
+#define ED_POS_TO_ELEMENT_TABS_X(n) \
+ (ED_ELEMENT_TABS_X(ED_ELEMENT_TABS_LINE(n)))
+#define ED_POS_TO_ELEMENT_TABS_Y(n) \
+ (ED_ELEMENT_TABS_Y(ED_ELEMENT_TABS_LINE(n)))
+
#define ED_POS_TO_ELEMENT_SETTINGS_X(n) \
(ED_ELEMENT_SETTINGS_X(ED_ELEMENT_SETTINGS_LINE(n)))
#define ED_POS_TO_ELEMENT_SETTINGS_Y(n) \
(ED_ELEMENT_SETTINGS_Y(ED_ELEMENT_SETTINGS_LINE(n)))
-#define ED_SETTINGS_X(n) (IS_POS_LEVEL_SETTINGS(n) ? \
+#define ED_SETTINGS_X(n) (IS_POS_LEVEL_TABS(n) ? \
+ ED_POS_TO_LEVEL_TABS_X(n) : \
+ IS_POS_LEVEL_SETTINGS(n) ? \
ED_POS_TO_LEVEL_SETTINGS_X(n) : \
+ IS_POS_ELEMENT_TABS(n) ? \
+ ED_POS_TO_ELEMENT_TABS_X(n) : \
IS_POS_ELEMENT_SETTINGS(n) ? \
ED_POS_TO_ELEMENT_SETTINGS_X(n) : (n))
-#define ED_SETTINGS_Y(n) (IS_POS_LEVEL_SETTINGS(n) ? \
+#define ED_SETTINGS_Y(n) (IS_POS_LEVEL_TABS(n) ? \
+ ED_POS_TO_LEVEL_TABS_Y(n) : \
+ IS_POS_LEVEL_SETTINGS(n) ? \
ED_POS_TO_LEVEL_SETTINGS_Y(n) : \
+ IS_POS_ELEMENT_TABS(n) ? \
+ ED_POS_TO_ELEMENT_TABS_Y(n) : \
IS_POS_ELEMENT_SETTINGS(n) ? \
ED_POS_TO_ELEMENT_SETTINGS_Y(n) : (n))
-#define ED_TAB_SETTINGS_X(n) (IS_POS_LEVEL_SETTINGS(n) ? \
- ED_LEVEL_SETTINGS_TABS_X : \
- ED_ELEMENT_SETTINGS_TABS_X)
-#define ED_TAB_SETTINGS_Y(n) (IS_POS_LEVEL_SETTINGS(n) ? \
- ED_LEVEL_SETTINGS_TABS_Y : \
- ED_ELEMENT_SETTINGS_TABS_Y)
-
#define ED_SETTINGS_XOFF(n) (5 * ((n) % 4) * \
ED_DRAWINGAREA_TILE_SIZE)
#define ED_SETTINGS_YOFF(n) (5 * ((n) / 4) * \
char *text_left, *text_right, *infotext;
} textbutton_info[ED_NUM_TEXTBUTTONS] =
{
+ /* ---------- level and editor settings (tabs) --------------------------- */
+
{
- ED_LEVEL_SETTINGS_XPOS(0), ED_LEVEL_SETTINGS_YPOS(0),
+ ED_LEVEL_TABS_XPOS(0), ED_LEVEL_TABS_YPOS(0),
GADGET_ID_LEVELINFO_LEVEL, GADGET_ID_NONE,
8, "Level",
NULL, NULL, "Configure level properties"
8, "Editor",
NULL, NULL, "Configure editor properties"
},
+
+ /* ---------- element settings (tabs) ------------------------------------ */
+
{
- ED_ELEMENT_SETTINGS_XPOS(0), ED_ELEMENT_SETTINGS_YPOS(0),
+ ED_ELEMENT_TABS_XPOS(0), ED_ELEMENT_TABS_YPOS(0),
GADGET_ID_PROPERTIES_INFO, GADGET_ID_NONE,
8, "Info",
NULL, NULL, "Show information about element"
8, "Change",
NULL, NULL, "Configure custom element change pages"
},
+
+ /* ---------- element settings (buttons) --------------------------------- */
+
{
-1, -1,
GADGET_ID_SAVE_AS_TEMPLATE, GADGET_ID_CUSTOM_USE_TEMPLATE,
static int *editor_elements = NULL; /* dynamically allocated */
static int num_editor_elements = 0; /* dynamically determined */
-static boolean setup_editor_show_always = TRUE;
static boolean setup_editor_cascade_never = FALSE;
static int editor_hl_unused[] = { EL_EMPTY };
editor_elements_info[] =
{
{
- &setup_editor_show_always,
+ &setup.editor.el_classic,
&setup_editor_cascade_never,
&editor_hl_unused_ptr, &num_editor_hl_unused,
&editor_el_players_ptr, &num_editor_el_players
},
{
- &setup.editor.el_boulderdash,
+ &setup.editor.el_classic,
&setup.editor_cascade.el_bd,
&editor_hl_boulderdash_ptr, &num_editor_hl_boulderdash,
&editor_el_boulderdash_ptr, &num_editor_el_boulderdash
},
{
- &setup.editor.el_emerald_mine,
+ &setup.editor.el_classic,
&setup.editor_cascade.el_em,
&editor_hl_emerald_mine_ptr, &num_editor_hl_emerald_mine,
&editor_el_emerald_mine_ptr, &num_editor_el_emerald_mine
},
{
- &setup.editor.el_emerald_mine_club,
+ &setup.editor.el_classic,
&setup.editor_cascade.el_emc,
&editor_hl_emerald_mine_club_ptr, &num_editor_hl_emerald_mine_club,
&editor_el_emerald_mine_club_ptr, &num_editor_el_emerald_mine_club
},
{
- &setup.editor.el_more,
+ &setup.editor.el_classic,
&setup.editor_cascade.el_rnd,
&editor_hl_rnd_ptr, &num_editor_hl_rnd,
&editor_el_rnd_ptr, &num_editor_el_rnd
},
{
- &setup.editor.el_sokoban,
+ &setup.editor.el_classic,
&setup.editor_cascade.el_sb,
&editor_hl_sokoban_ptr, &num_editor_hl_sokoban,
&editor_el_sokoban_ptr, &num_editor_el_sokoban
},
{
- &setup.editor.el_supaplex,
+ &setup.editor.el_classic,
&setup.editor_cascade.el_sp,
&editor_hl_supaplex_ptr, &num_editor_hl_supaplex,
&editor_el_supaplex_ptr, &num_editor_el_supaplex
},
{
- &setup.editor.el_diamond_caves,
+ &setup.editor.el_classic,
&setup.editor_cascade.el_dc,
&editor_hl_diamond_caves_ptr, &num_editor_hl_diamond_caves,
&editor_el_diamond_caves_ptr, &num_editor_el_diamond_caves
},
{
- &setup.editor.el_dx_boulderdash,
+ &setup.editor.el_classic,
&setup.editor_cascade.el_dx,
&editor_hl_dx_boulderdash_ptr, &num_editor_hl_dx_boulderdash,
&editor_el_dx_boulderdash_ptr, &num_editor_el_dx_boulderdash
},
{
- &setup.editor.el_chars,
+ &setup.editor.el_classic,
&setup.editor_cascade.el_chars,
&editor_hl_chars_ptr, &num_editor_hl_chars,
&editor_el_chars_ptr, &num_editor_el_chars
},
{
- &setup.editor.el_steel_chars,
+ &setup.editor.el_classic,
&setup.editor_cascade.el_steel_chars,
&editor_hl_steel_chars_ptr, &num_editor_hl_steel_chars,
&editor_el_steel_chars_ptr, &num_editor_el_steel_chars
struct GadgetInfo *gi;
unsigned int event_mask;
char infotext[MAX_OUTPUT_LINESIZE + 1];
- int x = SX + ED_TAB_SETTINGS_X(textbutton_info[i].x);
- int y = SY + ED_TAB_SETTINGS_Y(textbutton_info[i].y);
+ int x = SX + ED_SETTINGS_X(textbutton_info[i].x);
+ int y = SY + ED_SETTINGS_Y(textbutton_info[i].y);
if (textbutton_info[i].size == -1) /* dynamically determine size */
textbutton_info[i].size = strlen(textbutton_info[i].text);
static boolean AskToCopyAndModifyLevelTemplate()
{
- if (Request("Copy and modify level template?", REQ_ASK))
+ if (Request("Copy and modify settings from level template?", REQ_ASK))
{
level.use_custom_template = FALSE;
return;
}
+ if (!level.use_custom_template &&
+ Request("Copy settings from level template?", REQ_ASK))
+ {
+ return;
+ }
+
LoadLevelTemplate(level.use_custom_template ? -1 : level_nr);
DrawEditModeWindow();