rnd-20070826-1-src
authorHolger Schemel <info@artsoft.org>
Sun, 26 Aug 2007 11:09:14 +0000 (13:09 +0200)
committerHolger Schemel <info@artsoft.org>
Sat, 30 Aug 2014 08:56:00 +0000 (10:56 +0200)
* fixed broken editor copy and paste for custom elements between levels

ChangeLog
src/conftime.h
src/init.c

index 750cca4ae2f426f791053bf26c610b9a34852162..bc427113468cb46aebee1f229fb860461fa15b70 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,6 @@
+2007-08-26
+       * fixed broken editor copy and paste for custom elements between levels
+
 2007-08-25
        * title messages are now also searched in graphics artwork directory;
          those found in graphics directory have precendence over those found
index 433accaab7d17a26b54214a888be62e001845189..a006f968b03bafc5a8f18499f76973f569ec49db 100644 (file)
@@ -1 +1 @@
-#define COMPILE_DATE_STRING "2007-08-25 16:49"
+#define COMPILE_DATE_STRING "2007-08-26 13:07"
index 79c3d58815324d1e1a2dec1ed7feba7aa36b8085..911fc91384a3c2f43e1eba38b8454ee60dec5802 100644 (file)
@@ -2605,6 +2605,8 @@ void ResolveGroupElement(int group_element)
 
 void InitElementPropertiesStatic()
 {
+  static boolean clipboard_elements_initialized = FALSE;
+
   static int ep_diggable[] =
   {
     EL_SAND,
@@ -4553,9 +4555,12 @@ void InitElementPropertiesStatic()
   int i, j, k;
 
   /* always start with reliable default values (element has no properties) */
+  /* (but never initialize clipboard elements after the very first time) */
+  /* (to be able to use clipboard elements between several levels) */
   for (i = 0; i < MAX_NUM_ELEMENTS; i++)
-    for (j = 0; j < NUM_ELEMENT_PROPERTIES; j++)
-      SET_PROPERTY(i, j, FALSE);
+    if (!IS_CLIPBOARD_ELEMENT(i) || !clipboard_elements_initialized)
+      for (j = 0; j < NUM_ELEMENT_PROPERTIES; j++)
+       SET_PROPERTY(i, j, FALSE);
 
   /* set all base element properties from above array definitions */
   for (i = 0; element_properties[i].elements != NULL; i++)
@@ -4573,6 +4578,8 @@ void InitElementPropertiesStatic()
   /* set static element properties that are not listed in array definitions */
   for (i = EL_STEEL_CHAR_START; i <= EL_STEEL_CHAR_END; i++)
     SET_PROPERTY(i, EP_INDESTRUCTIBLE, TRUE);
+
+  clipboard_elements_initialized = TRUE;
 }
 
 void InitElementPropertiesEngine(int engine_version)
@@ -4621,6 +4628,10 @@ void InitElementPropertiesEngine(int engine_version)
   /* set all special, combined or engine dependent element properties */
   for (i = 0; i < MAX_NUM_ELEMENTS; i++)
   {
+    /* do not change (already initialized) clipboard elements here */
+    if (IS_CLIPBOARD_ELEMENT(i))
+      continue;
+
     /* ---------- INACTIVE ------------------------------------------------- */
     SET_PROPERTY(i, EP_INACTIVE, ((i >= EL_CHAR_START &&
                                   i <= EL_CHAR_END) ||