added support for short explosions in BD engine to level editor
[rocksndiamonds.git] / src / files.c
index 898b33bbb867cf68bdbdcb967455c0813b4acc46..2842d1d4fa1eea88deee454ed6b5ba40b5ca2859 100644 (file)
@@ -303,6 +303,42 @@ static struct LevelFileConfigInfo chunk_config_INFO[] =
     &li.bd_cycle_delay_c64,            0
   },
 
+  {
+    -1,                                        -1,
+    TYPE_INTEGER,                      CONF_VALUE_8_BIT(18),
+    &li.bd_hatching_delay_cycles,      21
+  },
+
+  {
+    -1,                                        -1,
+    TYPE_INTEGER,                      CONF_VALUE_8_BIT(19),
+    &li.bd_hatching_delay_seconds,     2
+  },
+
+  {
+    -1,                                        -1,
+    TYPE_BOOLEAN,                      CONF_VALUE_8_BIT(20),
+    &li.bd_line_shifting_borders,      FALSE
+  },
+
+  {
+    -1,                                        -1,
+    TYPE_BOOLEAN,                      CONF_VALUE_8_BIT(21),
+    &li.bd_wraparound_objects,         FALSE
+  },
+
+  {
+    -1,                                        -1,
+    TYPE_BOOLEAN,                      CONF_VALUE_8_BIT(22),
+    &li.bd_scan_first_and_last_row,    TRUE
+  },
+
+  {
+    -1,                                        -1,
+    TYPE_BOOLEAN,                      CONF_VALUE_8_BIT(23),
+    &li.bd_short_explosions,           TRUE
+  },
+
   {
     -1,                                        -1,
     -1,                                        -1,
@@ -3742,6 +3778,8 @@ static void CopyNativeLevel_RND_to_BD(struct LevelInfo *level)
 
     cave->level_speed[i]               = level->bd_cycle_delay_ms;
     cave->level_ckdelay[i]             = level->bd_cycle_delay_c64;
+    cave->level_hatching_delay_frame[i]        = level->bd_hatching_delay_cycles;
+    cave->level_hatching_delay_time[i] = level->bd_hatching_delay_seconds;
 
     cave->level_timevalue[i]           = level->score[SC_TIME_BONUS];
   }
@@ -3754,6 +3792,11 @@ static void CopyNativeLevel_RND_to_BD(struct LevelInfo *level)
   cave->intermission                   = level->bd_intermission;
   cave->diagonal_movements             = level->bd_diagonal_movements;
 
+  cave->lineshift                      = level->bd_line_shifting_borders;
+  cave->wraparound_objects             = level->bd_wraparound_objects;
+  cave->border_scan_first_and_last     = level->bd_scan_first_and_last_row;
+  cave->short_explosions               = level->bd_short_explosions;
+
   strncpy(cave->name, level->name, sizeof(GdString));
   cave->name[sizeof(GdString) - 1] = '\0';
 
@@ -3778,6 +3821,8 @@ static void CopyNativeLevel_BD_to_RND(struct LevelInfo *level)
 
   level->bd_cycle_delay_ms             = cave->level_speed[bd_level_nr];
   level->bd_cycle_delay_c64            = cave->level_ckdelay[bd_level_nr];
+  level->bd_hatching_delay_cycles      = cave->level_hatching_delay_frame[bd_level_nr];
+  level->bd_hatching_delay_seconds     = cave->level_hatching_delay_time[bd_level_nr];
 
   level->score[SC_TIME_BONUS]          = cave->level_timevalue[bd_level_nr];
   level->score[SC_EMERALD]             = cave->diamond_value;
@@ -3788,6 +3833,11 @@ static void CopyNativeLevel_BD_to_RND(struct LevelInfo *level)
   level->bd_intermission               = cave->intermission;
   level->bd_diagonal_movements         = cave->diagonal_movements;
 
+  level->bd_line_shifting_borders      = cave->lineshift;
+  level->bd_wraparound_objects         = cave->wraparound_objects;
+  level->bd_scan_first_and_last_row    = cave->border_scan_first_and_last;
+  level->bd_short_explosions           = cave->short_explosions;
+
   char *cave_name = getStringPrint("%s / %d", cave->name, bd_level_nr + 1);
 
   strncpy(level->name, cave_name, MAX_LEVEL_NAME_LEN);