projects
/
rocksndiamonds.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
fixed bug with not warning on add/delete/paste of CE change pages when using level...
[rocksndiamonds.git]
/
src
/
editor.c
diff --git
a/src/editor.c
b/src/editor.c
index 081e134d692628c9aa3ab8a4f801c3b23ad72acd..25b7af27e0b82ddfe3a3daac10deb0f0dc04390d 100644
(file)
--- a/
src/editor.c
+++ b/
src/editor.c
@@
-3505,6
+3505,7
@@
static void HandleCheckbuttons(struct GadgetInfo *);
static void HandleControlButtons(struct GadgetInfo *);
static void HandleDrawingAreaInfo(struct GadgetInfo *);
static void PrintEditorGadgetInfoText(struct GadgetInfo *);
static void HandleControlButtons(struct GadgetInfo *);
static void HandleDrawingAreaInfo(struct GadgetInfo *);
static void PrintEditorGadgetInfoText(struct GadgetInfo *);
+static boolean AskToCopyAndModifyLevelTemplate();
static int num_editor_gadgets = 0; /* dynamically determined */
static int num_editor_gadgets = 0; /* dynamically determined */
@@
-7280,6
+7281,8
@@
static void replace_custom_element_in_playfield(int element_from,
static boolean CopyCustomElement(int element_old, int element_new,
int copy_mode)
{
static boolean CopyCustomElement(int element_old, int element_new,
int copy_mode)
{
+ int copy_mode_orig = copy_mode;
+
if (copy_mode == GADGET_ID_CUSTOM_COPY)
{
element_new = (IS_CUSTOM_ELEMENT(element_old) ?
if (copy_mode == GADGET_ID_CUSTOM_COPY)
{
element_new = (IS_CUSTOM_ELEMENT(element_old) ?
@@
-7311,6
+7314,13
@@
static boolean CopyCustomElement(int element_old, int element_new,
level.changed = TRUE;
}
level.changed = TRUE;
}
+ /* when modifying custom/group element, ask for copying level template */
+ if (copy_mode_orig != GADGET_ID_CUSTOM_COPY && level.use_custom_template)
+ {
+ if (!AskToCopyAndModifyLevelTemplate())
+ return FALSE;
+ }
+
if (copy_mode == GADGET_ID_CUSTOM_COPY_FROM)
{
copy_custom_element_settings(element_new, element_old);
if (copy_mode == GADGET_ID_CUSTOM_COPY_FROM)
{
copy_custom_element_settings(element_new, element_old);
@@
-7516,7
+7526,7
@@
static void CopyElementPropertiesToEditor(int element)
CopyClassicElementPropertiesToEditor(element);
}
CopyClassicElementPropertiesToEditor(element);
}
-static
void
AskToCopyAndModifyLevelTemplate()
+static
boolean
AskToCopyAndModifyLevelTemplate()
{
if (Request("Copy and modify level template?", REQ_ASK))
{
{
if (Request("Copy and modify level template?", REQ_ASK))
{
@@
-7524,12
+7534,16
@@
static void AskToCopyAndModifyLevelTemplate()
ModifyGadget(level_editor_gadget[GADGET_ID_CUSTOM_USE_TEMPLATE],
GDI_CHECKED, FALSE, GDI_END);
ModifyGadget(level_editor_gadget[GADGET_ID_CUSTOM_USE_TEMPLATE],
GDI_CHECKED, FALSE, GDI_END);
+
+ return TRUE;
}
else
{
LoadLevelTemplate(-1); /* this resets all element modifications ... */
DrawEditModeWindow(); /* ... and copies them to 'custom_element' */
}
else
{
LoadLevelTemplate(-1); /* this resets all element modifications ... */
DrawEditModeWindow(); /* ... and copies them to 'custom_element' */
+
+ return FALSE;
}
}
}
}
@@
-11404,6
+11418,10
@@
static void HandleTextbuttonGadgets(struct GadgetInfo *gi)
{
struct ElementInfo *ei = &element_info[properties_element];
{
struct ElementInfo *ei = &element_info[properties_element];
+ /* when modifying custom element, ask for copying level template */
+ if (level.use_custom_template && !AskToCopyAndModifyLevelTemplate())
+ return;
+
setElementChangePages(ei, ei->num_change_pages + 1);
/* set new change page to be new current change page */
setElementChangePages(ei, ei->num_change_pages + 1);
/* set new change page to be new current change page */
@@
-11421,6
+11439,10
@@
static void HandleTextbuttonGadgets(struct GadgetInfo *gi)
{
struct ElementInfo *ei = &element_info[properties_element];
{
struct ElementInfo *ei = &element_info[properties_element];
+ /* when modifying custom element, ask for copying level template */
+ if (level.use_custom_template && !AskToCopyAndModifyLevelTemplate())
+ return;
+
/* copy all change pages after change page to be deleted */
for (i = ei->current_change_page; i < ei->num_change_pages - 1; i++)
ei->change_page[i] = ei->change_page[i + 1];
/* copy all change pages after change page to be deleted */
for (i = ei->current_change_page; i < ei->num_change_pages - 1; i++)
ei->change_page[i] = ei->change_page[i + 1];
@@
-11460,10
+11482,16
@@
static void HandleGraphicbuttonGadgets(struct GadgetInfo *gi)
int current_change_page = ei->current_change_page;
if (type_id == ED_GRAPHICBUTTON_ID_COPY_CHANGE_PAGE)
int current_change_page = ei->current_change_page;
if (type_id == ED_GRAPHICBUTTON_ID_COPY_CHANGE_PAGE)
+ {
element_info[EL_INTERNAL_CLIPBOARD_CHANGE].change_page[0] =
ei->change_page[current_change_page];
element_info[EL_INTERNAL_CLIPBOARD_CHANGE].change_page[0] =
ei->change_page[current_change_page];
+ }
else if (type_id == ED_GRAPHICBUTTON_ID_PASTE_CHANGE_PAGE)
{
else if (type_id == ED_GRAPHICBUTTON_ID_PASTE_CHANGE_PAGE)
{
+ /* when modifying custom element, ask for copying level template */
+ if (level.use_custom_template && !AskToCopyAndModifyLevelTemplate())
+ return;
+
ei->change_page[current_change_page] =
element_info[EL_INTERNAL_CLIPBOARD_CHANGE].change_page[0];
ei->change_page[current_change_page] =
element_info[EL_INTERNAL_CLIPBOARD_CHANGE].change_page[0];