added support for scheduling type in BD engine to level editor
[rocksndiamonds.git] / src / files.c
index b48fcf4a1482b38942301fbadb8396be182513f0..62069398a849b7b5aa877e95ead9b6a120ee4db1 100644 (file)
@@ -273,6 +273,24 @@ static struct LevelFileConfigInfo chunk_config_INFO[] =
     &li.rate_time_over_score,          FALSE
   },
 
+  {
+    -1,                                        -1,
+    TYPE_BOOLEAN,                      CONF_VALUE_8_BIT(14),
+    &li.bd_intermission,               FALSE
+  },
+
+  {
+    -1,                                        -1,
+    TYPE_INTEGER,                      CONF_VALUE_8_BIT(15),
+    &li.bd_scheduling_type,            GD_SCHEDULING_MILLISECONDS
+  },
+
+  {
+    -1,                                        -1,
+    TYPE_BOOLEAN,                      CONF_VALUE_8_BIT(16),
+    &li.bd_pal_timing,                 FALSE
+  },
+
   {
     -1,                                        -1,
     -1,                                        -1,
@@ -570,6 +588,12 @@ static struct LevelFileConfigInfo chunk_config_ELEM[] =
     &li.bd_diagonal_movements,         FALSE
   },
 
+  {
+    EL_BD_DIAMOND,                     -1,
+    TYPE_INTEGER,                      CONF_VALUE_16_BIT(1),
+    &li.score[SC_DIAMOND_EXTRA],       20
+  },
+
   // (the following values are related to various game elements)
 
   {
@@ -952,14 +976,6 @@ static struct LevelFileConfigInfo chunk_config_ELEM[] =
     &li.score[SC_ELEM_BONUS],          10
   },
 
-  // ---------- unused values -------------------------------------------------
-
-  {
-    EL_UNKNOWN,                                SAVE_CONF_NEVER,
-    TYPE_INTEGER,                      CONF_VALUE_16_BIT(1),
-    &li.score[SC_UNKNOWN_15],          10
-  },
-
   {
     -1,                                        -1,
     -1,                                        -1,
@@ -3714,11 +3730,14 @@ static void CopyNativeLevel_RND_to_BD(struct LevelInfo *level)
     cave->level_timevalue[i]           = level->score[SC_TIME_BONUS];
   }
 
-  cave->diamond_value                  = level->score[SC_DIAMOND];
-  cave->extra_diamond_value            = level->score[SC_DIAMOND];
+  cave->diamond_value                  = level->score[SC_EMERALD];
+  cave->extra_diamond_value            = level->score[SC_DIAMOND_EXTRA];
 
   cave->level_speed[0]                 = 160;  // set cave speed
 
+  cave->scheduling                     = level->bd_scheduling_type;
+  cave->pal_timing                     = level->bd_pal_timing;
+  cave->intermission                   = level->bd_intermission;
   cave->diagonal_movements             = level->bd_diagonal_movements;
 
   strncpy(cave->name, level->name, sizeof(GdString));
@@ -3739,14 +3758,18 @@ static void CopyNativeLevel_BD_to_RND(struct LevelInfo *level)
   level->fieldx = MIN(cave->w, MAX_LEV_FIELDX);
   level->fieldy = MIN(cave->h, MAX_LEV_FIELDY);
 
-  level->time                  = cave->level_time[bd_level_nr];
-  level->gems_needed           = cave->level_diamonds[bd_level_nr];
-  level->time_magic_wall       = cave->level_magic_wall_time[bd_level_nr];
+  level->time                          = cave->level_time[bd_level_nr];
+  level->gems_needed                   = cave->level_diamonds[bd_level_nr];
+  level->time_magic_wall               = cave->level_magic_wall_time[bd_level_nr];
 
-  level->score[SC_TIME_BONUS]  = cave->level_timevalue[bd_level_nr];
-  level->score[SC_DIAMOND]     = cave->diamond_value;
+  level->score[SC_TIME_BONUS]          = cave->level_timevalue[bd_level_nr];
+  level->score[SC_EMERALD]             = cave->diamond_value;
+  level->score[SC_DIAMOND_EXTRA]       = cave->extra_diamond_value;
 
-  level->bd_diagonal_movements = cave->diagonal_movements;
+  level->bd_scheduling_type            = cave->scheduling;
+  level->bd_pal_timing                 = cave->pal_timing;
+  level->bd_intermission               = cave->intermission;
+  level->bd_diagonal_movements         = cave->diagonal_movements;
 
   strncpy(level->name, cave->name, MAX_LEVEL_NAME_LEN);
   level->name[MAX_LEVEL_NAME_LEN] = '\0';