reordered and commented BD level properties
[rocksndiamonds.git] / src / editor.c
index 6d8bd174f876727a3ec06aff7a28b62f9aca3916..a9ef7e5e57aee657b2de8d3acb5c485b89e8cde3 100644 (file)
@@ -664,6 +664,10 @@ enum
   GADGET_ID_RANDOM_RESTRICTED,
   GADGET_ID_BD_INTERMISSION,
   GADGET_ID_BD_PAL_TIMING,
+  GADGET_ID_BD_LINE_SHIFTING_BORDERS,
+  GADGET_ID_BD_SCAN_FIRST_AND_LAST_ROW,
+  GADGET_ID_BD_SHORT_EXPLOSIONS,
+  GADGET_ID_BD_GRAVITY_AFFECTS_ALL,
   GADGET_ID_STICK_ELEMENT,
   GADGET_ID_EM_SLIPPERY_GEMS,
   GADGET_ID_EM_EXPLODES_BY_FIRE,
@@ -696,6 +700,7 @@ enum
   GADGET_ID_CAN_MOVE_INTO_ACID,
   GADGET_ID_DONT_COLLIDE_WITH,
   GADGET_ID_BD_DIAGONAL_MOVEMENTS,
+  GADGET_ID_BD_TOPMOST_PLAYER_ACTIVE,
   GADGET_ID_ENVELOPE_AUTOWRAP,
   GADGET_ID_ENVELOPE_CENTERED,
   GADGET_ID_MM_LASER_RED,
@@ -991,6 +996,10 @@ enum
   ED_CHECKBUTTON_ID_CUSTOM_USE_TEMPLATE_2,
   ED_CHECKBUTTON_ID_BD_INTERMISSION,
   ED_CHECKBUTTON_ID_BD_PAL_TIMING,
+  ED_CHECKBUTTON_ID_BD_LINE_SHIFTING_BORDERS,
+  ED_CHECKBUTTON_ID_BD_SCAN_FIRST_AND_LAST_ROW,
+  ED_CHECKBUTTON_ID_BD_SHORT_EXPLOSIONS,
+  ED_CHECKBUTTON_ID_BD_GRAVITY_AFFECTS_ALL,
   ED_CHECKBUTTON_ID_STICK_ELEMENT,
   ED_CHECKBUTTON_ID_EM_SLIPPERY_GEMS,
   ED_CHECKBUTTON_ID_EM_EXPLODES_BY_FIRE,
@@ -1023,6 +1032,7 @@ enum
   ED_CHECKBUTTON_ID_CAN_MOVE_INTO_ACID,
   ED_CHECKBUTTON_ID_DONT_COLLIDE_WITH,
   ED_CHECKBUTTON_ID_BD_DIAGONAL_MOVEMENTS,
+  ED_CHECKBUTTON_ID_BD_TOPMOST_PLAYER_ACTIVE,
   ED_CHECKBUTTON_ID_ENVELOPE_AUTOWRAP,
   ED_CHECKBUTTON_ID_ENVELOPE_CENTERED,
   ED_CHECKBUTTON_ID_MM_LASER_RED,
@@ -1072,7 +1082,7 @@ enum
 #define ED_CHECKBUTTON_ID_EDITOR_LAST  ED_CHECKBUTTON_ID_CUSTOM_USE_TEMPLATE_2
 
 #define ED_CHECKBUTTON_ID_ENGINE_FIRST ED_CHECKBUTTON_ID_BD_INTERMISSION
-#define ED_CHECKBUTTON_ID_ENGINE_LAST  ED_CHECKBUTTON_ID_BD_PAL_TIMING
+#define ED_CHECKBUTTON_ID_ENGINE_LAST  ED_CHECKBUTTON_ID_BD_GRAVITY_AFFECTS_ALL
 
 #define ED_CHECKBUTTON_ID_CUSTOM1_FIRST        ED_CHECKBUTTON_ID_CUSTOM_USE_GRAPHIC
 #define ED_CHECKBUTTON_ID_CUSTOM1_LAST ED_CHECKBUTTON_ID_CUSTOM_INDESTRUCTIBLE
@@ -3343,6 +3353,38 @@ static struct
     NULL, NULL,
     "PAL timing",                      "use slower timer (like PAL C64)"
   },
+  {
+    ED_CHECKBUTTON_ID_BD_LINE_SHIFTING_BORDERS,
+    ED_LEVEL_SETTINGS_XPOS(0),         ED_LEVEL_SETTINGS_YPOS(6),
+    GADGET_ID_BD_LINE_SHIFTING_BORDERS,        GADGET_ID_NONE,
+    &level.bd_line_shifting_borders,
+    "Compatibility settings:", NULL,
+    "line-shifting borders",           "use line-shifting wrap-around"
+  },
+  {
+    ED_CHECKBUTTON_ID_BD_SCAN_FIRST_AND_LAST_ROW,
+    ED_LEVEL_SETTINGS_XPOS(0),         ED_LEVEL_SETTINGS_YPOS(7),
+    GADGET_ID_BD_SCAN_FIRST_AND_LAST_ROW, GADGET_ID_NONE,
+    &level.bd_scan_first_and_last_row,
+    NULL, NULL,
+    "scan first and last row",         "also process top/bottom border rows"
+  },
+  {
+    ED_CHECKBUTTON_ID_BD_SHORT_EXPLOSIONS,
+    ED_LEVEL_SETTINGS_XPOS(0),         ED_LEVEL_SETTINGS_YPOS(8),
+    GADGET_ID_BD_SHORT_EXPLOSIONS,     GADGET_ID_NONE,
+    &level.bd_short_explosions,
+    NULL, NULL,
+    "short explosions",                        "use four game cycles for explosions"
+  },
+  {
+    ED_CHECKBUTTON_ID_BD_GRAVITY_AFFECTS_ALL,
+    ED_LEVEL_SETTINGS_XPOS(0),         ED_LEVEL_SETTINGS_YPOS(9),
+    GADGET_ID_BD_GRAVITY_AFFECTS_ALL,  GADGET_ID_NONE,
+    &level.bd_gravity_affects_all,
+    NULL, NULL,
+    "gravity change affects everything", "gravity affects all falling objects"
+  },
 
   // ---------- element settings: configure (various elements) ----------------
 
@@ -3602,6 +3644,14 @@ static struct
     NULL, NULL,
     "can move diagonally",             "player can move diagonally"
   },
+  {
+    ED_CHECKBUTTON_ID_BD_TOPMOST_PLAYER_ACTIVE,
+    ED_ELEMENT_SETTINGS_XPOS(0),       ED_ELEMENT_SETTINGS_YPOS(1),
+    GADGET_ID_BD_TOPMOST_PLAYER_ACTIVE,        GADGET_ID_NONE,
+    &level.bd_topmost_player_active,
+    NULL, NULL,
+    "topmost player is active",                "use first player found on playfield"
+  },
   {
     ED_CHECKBUTTON_ID_ENVELOPE_AUTOWRAP,
     ED_ELEMENT_SETTINGS_XPOS(0),       ED_ELEMENT_SETTINGS_YPOS(1),
@@ -4417,7 +4467,7 @@ static int editor_el_boulderdash_native[] =
   EL_BD_AMOEBA,
   EL_BD_BUTTERFLY_UP,
   EL_BD_FIREFLY_UP,
-  EL_EXIT_CLOSED,
+  EL_BD_EXIT_CLOSED,
 
   EL_BD_BUTTERFLY_LEFT,
   EL_BD_FIREFLY_LEFT,
@@ -4427,7 +4477,7 @@ static int editor_el_boulderdash_native[] =
   EL_BD_INBOX,
   EL_BD_BUTTERFLY_DOWN,
   EL_BD_FIREFLY_DOWN,
-  EL_EXIT_OPEN,
+  EL_BD_EXIT_OPEN,
 
   EL_BD_AMOEBA_2,
   EL_BD_BUTTERFLY_2_UP,
@@ -10993,7 +11043,10 @@ static void DrawPropertiesConfig(void)
   }
 
   if (IS_BD_PLAYER_ELEMENT(properties_element))
+  {
     MapCheckbuttonGadget(ED_CHECKBUTTON_ID_BD_DIAGONAL_MOVEMENTS);
+    MapCheckbuttonGadget(ED_CHECKBUTTON_ID_BD_TOPMOST_PLAYER_ACTIVE);
+  }
 
   // special case: slippery walls option for gems only available in R'n'D game engine
   if (IS_GEM(properties_element) && level.game_engine_type == GAME_ENGINE_TYPE_RND)