leveldir_current =
getTreeInfoFromIdentifier(leveldir_first, getLoginName());
+ // this may happen if "setup.internal.create_user_levelset" is FALSE
+ // or if file "levelinfo.conf" is missing in personal user level set
+ if (leveldir_current == NULL)
+ {
+ Request("Cannot find personal level set?!", REQ_CONFIRM);
+
+ leveldir_current = leveldir_former;
+
+ return FALSE;
+ }
+
// find unused level number
for (new_level_nr = leveldir_current->first_level; ; new_level_nr++)
{
// copy change events also to special level editor variable
custom_element = element_info[element];
custom_element_change = *element_info[element].change;
+
+ // needed here to restore runtime value "element_info[element].gfx_element"
+ InitElementPropertiesGfxElement();
}
static void CopyGroupElementPropertiesToGame(int element)
element_info[element] = custom_element;
*element_info[element].group = group_element_info;
+
+ // needed here to restore runtime value "element_info[element].gfx_element"
+ InitElementPropertiesGfxElement();
}
static void CopyClassicElementPropertiesToGame(int element)
CopyBrushExt(0, 0, 0, 0, 0, CB_BRUSH_TO_CLIPBOARD_SMALL);
}
+void UndoLevelEditorOperation(void)
+{
+ ClickOnGadget(level_editor_gadget[GADGET_ID_UNDO], -1);
+}
+
+void RedoLevelEditorOperation(void)
+{
+ ClickOnGadget(level_editor_gadget[GADGET_ID_UNDO], 3);
+}
+
static void FloodFill(int from_x, int from_y, int fill_element)
{
FloodFillLevel(from_x, from_y, fill_element, Feld, lev_fieldx, lev_fieldy);
break;
case GADGET_ID_UNDO:
- if (button == 1 && GetKeyModState() & (KMOD_Shift|KMOD_Control))
+ if (button < 0) // keep button value (even if modifier keys are pressed)
+ button = -button;
+ else if (button == 1 && GetKeyModState() & (KMOD_Shift | KMOD_Control))
button = 3;
if (button == 1 && undo_buffer_steps == 0)