added support for game panel values for native BD game engine
authorHolger Schemel <info@artsoft.org>
Sun, 2 Feb 2025 23:41:28 +0000 (00:41 +0100)
committerHolger Schemel <info@artsoft.org>
Sun, 2 Feb 2025 23:41:30 +0000 (00:41 +0100)
build-scripts/create_element_defs.pl
src/conf_gfx.c
src/game.c
src/game.h

index e0578e1931b79927492d7c9a7f901e81898619c0..69071fe920d44bc7fdec809a2faa8446daedad1f 100755 (executable)
@@ -2533,6 +2533,7 @@ sub print_config_vars
            if ($var =~ /^titlescreen.*(\d)/ ||
                $var =~ /^titlemessage.*(\d)/ ||
                $var =~ /^game.panel.key_(\d)/ ||
+               $var =~ /^game.panel.bdx_key_(\d)\./ ||
                $var =~ /^game.panel.inventory_first_(\d)/ ||
                $var =~ /^game.panel.inventory_last_(\d)/ ||
                $var =~ /^game.panel.conveyor_belt_(\d)\./ ||
@@ -2544,7 +2545,8 @@ sub print_config_vars
                my $array_pos = int($number) - 1;
                $var =~ s/_$number/\[$array_pos\]/;
            }
-           elsif ($var =~ /^game.panel.conveyor_belt_(\d)(_switch)/ ||
+           elsif ($var =~ /^game.panel.bdx_key_(\d)(_count)/ ||
+                  $var =~ /^game.panel.conveyor_belt_(\d)(_switch)/ ||
                   $var =~ /^game.panel.element_(\d)(_count)/ ||
                   $var =~ /^game.panel.ce_score_(\d)(_element)/)
            {
index fceacf98d0b5e52dde782cd96dadf669be8a09eb..65cd0e9a91688f6bd9ecd44702b0e167e4d6d9ef 100644 (file)
@@ -11010,6 +11010,257 @@ struct ConfigInfo image_config[] =
   { "game.panel.ce_score_8_element.class",             "none"                          },
   { "game.panel.ce_score_8_element.style",             "none"                          },
 
+  { "game.panel.bdx_lives.x",                          "-1"                            },
+  { "game.panel.bdx_lives.y",                          "-1"                            },
+  { "game.panel.bdx_lives.align",                      "left"                          },
+  { "game.panel.bdx_lives.valign",                     "top"                           },
+  { "game.panel.bdx_lives.digits",                     "-1"                            },
+  { "game.panel.bdx_lives.font",                       "font.text_2"                   },
+  { "game.panel.bdx_lives.draw_masked",                        "true"                          },
+  { "game.panel.bdx_lives.draw_order",                 "0"                             },
+  { "game.panel.bdx_lives.class",                      "none"                          },
+  { "game.panel.bdx_lives.style",                      "none"                          },
+
+  { "game.panel.bdx_key_1.x",                          "-1"                            },
+  { "game.panel.bdx_key_1.y",                          "-1"                            },
+  { "game.panel.bdx_key_1.tile_size",                  "16"                            },
+  { "game.panel.bdx_key_1.draw_masked",                        "false"                         },
+  { "game.panel.bdx_key_1.draw_order",                 "0"                             },
+  { "game.panel.bdx_key_1.class",                      "none"                          },
+  { "game.panel.bdx_key_1.style",                      "none"                          },
+  { "game.panel.bdx_key_2.x",                          "-1"                            },
+  { "game.panel.bdx_key_2.y",                          "-1"                            },
+  { "game.panel.bdx_key_2.tile_size",                  "16"                            },
+  { "game.panel.bdx_key_2.draw_masked",                        "false"                         },
+  { "game.panel.bdx_key_2.draw_order",                 "0"                             },
+  { "game.panel.bdx_key_2.class",                      "none"                          },
+  { "game.panel.bdx_key_2.style",                      "none"                          },
+  { "game.panel.bdx_key_3.x",                          "-1"                            },
+  { "game.panel.bdx_key_3.y",                          "-1"                            },
+  { "game.panel.bdx_key_3.tile_size",                  "16"                            },
+  { "game.panel.bdx_key_3.draw_masked",                        "false"                         },
+  { "game.panel.bdx_key_3.draw_order",                 "0"                             },
+  { "game.panel.bdx_key_3.class",                      "none"                          },
+  { "game.panel.bdx_key_3.style",                      "none"                          },
+
+  { "game.panel.bdx_key_1_count.x",                    "-1"                            },
+  { "game.panel.bdx_key_1_count.y",                    "-1"                            },
+  { "game.panel.bdx_key_1_count.align",                        "left"                          },
+  { "game.panel.bdx_key_1_count.valign",               "top"                           },
+  { "game.panel.bdx_key_1_count.digits",               "-1"                            },
+  { "game.panel.bdx_key_1_count.font",                 "font.text_2"                   },
+  { "game.panel.bdx_key_1_count.draw_masked",          "true"                          },
+  { "game.panel.bdx_key_1_count.draw_order",           "0"                             },
+  { "game.panel.bdx_key_1_count.class",                        "none"                          },
+  { "game.panel.bdx_key_1_count.style",                        "none"                          },
+  { "game.panel.bdx_key_2_count.x",                    "-1"                            },
+  { "game.panel.bdx_key_2_count.y",                    "-1"                            },
+  { "game.panel.bdx_key_2_count.align",                        "left"                          },
+  { "game.panel.bdx_key_2_count.valign",               "top"                           },
+  { "game.panel.bdx_key_2_count.digits",               "-1"                            },
+  { "game.panel.bdx_key_2_count.font",                 "font.text_2"                   },
+  { "game.panel.bdx_key_2_count.draw_masked",          "true"                          },
+  { "game.panel.bdx_key_2_count.draw_order",           "0"                             },
+  { "game.panel.bdx_key_2_count.class",                        "none"                          },
+  { "game.panel.bdx_key_2_count.style",                        "none"                          },
+  { "game.panel.bdx_key_3_count.x",                    "-1"                            },
+  { "game.panel.bdx_key_3_count.y",                    "-1"                            },
+  { "game.panel.bdx_key_3_count.align",                        "left"                          },
+  { "game.panel.bdx_key_3_count.valign",               "top"                           },
+  { "game.panel.bdx_key_3_count.digits",               "-1"                            },
+  { "game.panel.bdx_key_3_count.font",                 "font.text_2"                   },
+  { "game.panel.bdx_key_3_count.draw_masked",          "true"                          },
+  { "game.panel.bdx_key_3_count.draw_order",           "0"                             },
+  { "game.panel.bdx_key_3_count.class",                        "none"                          },
+  { "game.panel.bdx_key_3_count.style",                        "none"                          },
+
+  { "game.panel.bdx_diamond_key.x",                    "-1"                            },
+  { "game.panel.bdx_diamond_key.y",                    "-1"                            },
+  { "game.panel.bdx_diamond_key.tile_size",            "16"                            },
+  { "game.panel.bdx_diamond_key.draw_masked",          "false"                         },
+  { "game.panel.bdx_diamond_key.draw_order",           "0"                             },
+  { "game.panel.bdx_diamond_key.class",                        "none"                          },
+  { "game.panel.bdx_diamond_key.style",                        "none"                          },
+
+  { "game.panel.bdx_gravity.x",                                "-1"                            },
+  { "game.panel.bdx_gravity.y",                                "-1"                            },
+  { "game.panel.bdx_gravity.tile_size",                        "16"                            },
+  { "game.panel.bdx_gravity.draw_masked",              "false"                         },
+  { "game.panel.bdx_gravity.draw_order",               "0"                             },
+  { "game.panel.bdx_gravity.class",                    "none"                          },
+  { "game.panel.bdx_gravity.style",                    "none"                          },
+  { "game.panel.bdx_gravity_next.x",                   "-1"                            },
+  { "game.panel.bdx_gravity_next.y",                   "-1"                            },
+  { "game.panel.bdx_gravity_next.tile_size",           "16"                            },
+  { "game.panel.bdx_gravity_next.draw_masked",         "false"                         },
+  { "game.panel.bdx_gravity_next.draw_order",          "0"                             },
+  { "game.panel.bdx_gravity_next.class",               "none"                          },
+  { "game.panel.bdx_gravity_next.style",               "none"                          },
+  { "game.panel.bdx_gravity_time.x",                   "-1"                            },
+  { "game.panel.bdx_gravity_time.y",                   "-1"                            },
+  { "game.panel.bdx_gravity_time.align",               "left"                          },
+  { "game.panel.bdx_gravity_time.valign",              "top"                           },
+  { "game.panel.bdx_gravity_time.digits",              "-1"                            },
+  { "game.panel.bdx_gravity_time.font",                        "font.text_2"                   },
+  { "game.panel.bdx_gravity_time.draw_masked",         "true"                          },
+  { "game.panel.bdx_gravity_time.draw_order",          "0"                             },
+  { "game.panel.bdx_gravity_time.class",               "none"                          },
+  { "game.panel.bdx_gravity_time.style",               "none"                          },
+  { "game.panel.bdx_gravity_state.x",                  "-1"                            },
+  { "game.panel.bdx_gravity_state.y",                  "-1"                            },
+  { "game.panel.bdx_gravity_state.align",              "left"                          },
+  { "game.panel.bdx_gravity_state.valign",             "top"                           },
+  { "game.panel.bdx_gravity_state.chars",              "-1"                            },
+  { "game.panel.bdx_gravity_state.font",               "font.text_1"                   },
+  { "game.panel.bdx_gravity_state.font_active",                "font.text_2"                   },
+  { "game.panel.bdx_gravity_state.draw_masked",                "true"                          },
+  { "game.panel.bdx_gravity_state.draw_order",         "0"                             },
+  { "game.panel.bdx_gravity_state.class",              "none"                          },
+  { "game.panel.bdx_gravity_state.style",              "none"                          },
+
+  { "game.panel.bdx_skeleton.x",                       "-1"                            },
+  { "game.panel.bdx_skeleton.y",                       "-1"                            },
+  { "game.panel.bdx_skeleton.tile_size",               "16"                            },
+  { "game.panel.bdx_skeleton.draw_masked",             "false"                         },
+  { "game.panel.bdx_skeleton.draw_order",              "0"                             },
+  { "game.panel.bdx_skeleton.class",                   "none"                          },
+  { "game.panel.bdx_skeleton.style",                   "none"                          },
+  { "game.panel.bdx_skeleton_count.x",                 "-1"                            },
+  { "game.panel.bdx_skeleton_count.y",                 "-1"                            },
+  { "game.panel.bdx_skeleton_count.align",             "left"                          },
+  { "game.panel.bdx_skeleton_count.valign",            "top"                           },
+  { "game.panel.bdx_skeleton_count.digits",            "-1"                            },
+  { "game.panel.bdx_skeleton_count.font",              "font.text_2"                   },
+  { "game.panel.bdx_skeleton_count.draw_masked",       "true"                          },
+  { "game.panel.bdx_skeleton_count.draw_order",                "0"                             },
+  { "game.panel.bdx_skeleton_count.class",             "none"                          },
+  { "game.panel.bdx_skeleton_count.style",             "none"                          },
+
+  { "game.panel.bdx_sweet.x",                          "-1"                            },
+  { "game.panel.bdx_sweet.y",                          "-1"                            },
+  { "game.panel.bdx_sweet.tile_size",                  "16"                            },
+  { "game.panel.bdx_sweet.draw_masked",                        "false"                         },
+  { "game.panel.bdx_sweet.draw_order",                 "0"                             },
+  { "game.panel.bdx_sweet.class",                      "none"                          },
+  { "game.panel.bdx_sweet.style",                      "none"                          },
+
+  { "game.panel.bdx_pneumatic_hammer.x",               "-1"                            },
+  { "game.panel.bdx_pneumatic_hammer.y",               "-1"                            },
+  { "game.panel.bdx_pneumatic_hammer.tile_size",       "16"                            },
+  { "game.panel.bdx_pneumatic_hammer.draw_masked",     "false"                         },
+  { "game.panel.bdx_pneumatic_hammer.draw_order",      "0"                             },
+  { "game.panel.bdx_pneumatic_hammer.class",           "none"                          },
+  { "game.panel.bdx_pneumatic_hammer.style",           "none"                          },
+
+  { "game.panel.bdx_rocket_count.x",                   "-1"                            },
+  { "game.panel.bdx_rocket_count.y",                   "-1"                            },
+  { "game.panel.bdx_rocket_count.align",               "left"                          },
+  { "game.panel.bdx_rocket_count.valign",              "top"                           },
+  { "game.panel.bdx_rocket_count.digits",              "-1"                            },
+  { "game.panel.bdx_rocket_count.font",                        "font.text_2"                   },
+  { "game.panel.bdx_rocket_count.draw_masked",         "true"                          },
+  { "game.panel.bdx_rocket_count.draw_order",          "0"                             },
+  { "game.panel.bdx_rocket_count.class",               "none"                          },
+  { "game.panel.bdx_rocket_count.style",               "none"                          },
+  { "game.panel.bdx_rocket_state.x",                   "-1"                            },
+  { "game.panel.bdx_rocket_state.y",                   "-1"                            },
+  { "game.panel.bdx_rocket_state.align",               "left"                          },
+  { "game.panel.bdx_rocket_state.valign",              "top"                           },
+  { "game.panel.bdx_rocket_state.chars",               "-1"                            },
+  { "game.panel.bdx_rocket_state.font",                        "font.text_1"                   },
+  { "game.panel.bdx_rocket_state.font_active",         "font.text_2"                   },
+  { "game.panel.bdx_rocket_state.draw_masked",         "true"                          },
+  { "game.panel.bdx_rocket_state.draw_order",          "0"                             },
+  { "game.panel.bdx_rocket_state.class",               "none"                          },
+  { "game.panel.bdx_rocket_state.style",               "none"                          },
+
+  { "game.panel.bdx_magic_wall.x",                     "-1"                            },
+  { "game.panel.bdx_magic_wall.y",                     "-1"                            },
+  { "game.panel.bdx_magic_wall.tile_size",             "16"                            },
+  { "game.panel.bdx_magic_wall.draw_masked",           "false"                         },
+  { "game.panel.bdx_magic_wall.draw_order",            "0"                             },
+  { "game.panel.bdx_magic_wall.class",                 "none"                          },
+  { "game.panel.bdx_magic_wall.style",                 "none"                          },
+  { "game.panel.bdx_magic_wall_time.x",                        "-1"                            },
+  { "game.panel.bdx_magic_wall_time.y",                        "-1"                            },
+  { "game.panel.bdx_magic_wall_time.align",            "left"                          },
+  { "game.panel.bdx_magic_wall_time.valign",           "top"                           },
+  { "game.panel.bdx_magic_wall_time.digits",           "-1"                            },
+  { "game.panel.bdx_magic_wall_time.font",             "font.text_2"                   },
+  { "game.panel.bdx_magic_wall_time.draw_masked",      "true"                          },
+  { "game.panel.bdx_magic_wall_time.draw_order",       "0"                             },
+  { "game.panel.bdx_magic_wall_time.class",            "none"                          },
+  { "game.panel.bdx_magic_wall_time.style",            "none"                          },
+
+  { "game.panel.bdx_creature_switch.x",                        "-1"                            },
+  { "game.panel.bdx_creature_switch.y",                        "-1"                            },
+  { "game.panel.bdx_creature_switch.tile_size",                "16"                            },
+  { "game.panel.bdx_creature_switch.draw_masked",      "false"                         },
+  { "game.panel.bdx_creature_switch.draw_order",       "0"                             },
+  { "game.panel.bdx_creature_switch.class",            "none"                          },
+  { "game.panel.bdx_creature_switch.style",            "none"                          },
+
+  { "game.panel.bdx_expandable_wall_switch.x",         "-1"                            },
+  { "game.panel.bdx_expandable_wall_switch.y",         "-1"                            },
+  { "game.panel.bdx_expandable_wall_switch.tile_size", "16"                            },
+  { "game.panel.bdx_expandable_wall_switch.draw_masked","false"                                },
+  { "game.panel.bdx_expandable_wall_switch.draw_order",        "0"                             },
+  { "game.panel.bdx_expandable_wall_switch.class",     "none"                          },
+  { "game.panel.bdx_expandable_wall_switch.style",     "none"                          },
+
+  { "game.panel.bdx_biter_switch_time.x",              "-1"                            },
+  { "game.panel.bdx_biter_switch_time.y",              "-1"                            },
+  { "game.panel.bdx_biter_switch_time.align",          "left"                          },
+  { "game.panel.bdx_biter_switch_time.valign",         "top"                           },
+  { "game.panel.bdx_biter_switch_time.digits",         "-1"                            },
+  { "game.panel.bdx_biter_switch_time.font",           "font.text_2"                   },
+  { "game.panel.bdx_biter_switch_time.draw_masked",    "true"                          },
+  { "game.panel.bdx_biter_switch_time.draw_order",     "0"                             },
+  { "game.panel.bdx_biter_switch_time.class",          "none"                          },
+  { "game.panel.bdx_biter_switch_time.style",          "none"                          },
+
+  { "game.panel.bdx_replicator.x",                     "-1"                            },
+  { "game.panel.bdx_replicator.y",                     "-1"                            },
+  { "game.panel.bdx_replicator.tile_size",             "16"                            },
+  { "game.panel.bdx_replicator.draw_masked",           "false"                         },
+  { "game.panel.bdx_replicator.draw_order",            "0"                             },
+  { "game.panel.bdx_replicator_switch.x",              "-1"                            },
+  { "game.panel.bdx_replicator_switch.y",              "-1"                            },
+  { "game.panel.bdx_replicator_switch.tile_size",      "16"                            },
+  { "game.panel.bdx_replicator_switch.draw_masked",    "true"                          },
+  { "game.panel.bdx_replicator_switch.draw_order",     "0"                             },
+  { "game.panel.bdx_replicator_switch.class",          "none"                          },
+  { "game.panel.bdx_replicator_switch.style",          "none"                          },
+
+  { "game.panel.bdx_conveyor_left.x",                  "-1"                            },
+  { "game.panel.bdx_conveyor_left.y",                  "-1"                            },
+  { "game.panel.bdx_conveyor_left.tile_size",          "16"                            },
+  { "game.panel.bdx_conveyor_left.draw_masked",                "false"                         },
+  { "game.panel.bdx_conveyor_left.draw_order",         "0"                             },
+  { "game.panel.bdx_conveyor_left.class",              "none"                          },
+  { "game.panel.bdx_conveyor_left.style",              "none"                          },
+  { "game.panel.bdx_conveyor_right.x",                 "-1"                            },
+  { "game.panel.bdx_conveyor_right.y",                 "-1"                            },
+  { "game.panel.bdx_conveyor_right.tile_size",         "16"                            },
+  { "game.panel.bdx_conveyor_right.draw_masked",       "false"                         },
+  { "game.panel.bdx_conveyor_right.draw_order",                "0"                             },
+  { "game.panel.bdx_conveyor_right.class",             "none"                          },
+  { "game.panel.bdx_conveyor_right.style",             "none"                          },
+  { "game.panel.bdx_conveyor_switch.x",                        "-1"                            },
+  { "game.panel.bdx_conveyor_switch.y",                        "-1"                            },
+  { "game.panel.bdx_conveyor_switch.tile_size",                "16"                            },
+  { "game.panel.bdx_conveyor_switch.draw_masked",      "false"                         },
+  { "game.panel.bdx_conveyor_switch.draw_order",       "0"                             },
+  { "game.panel.bdx_conveyor_switch.class",            "none"                          },
+  { "game.panel.bdx_conveyor_switch.style",            "none"                          },
+  { "game.panel.bdx_conveyor_dir_switch.x",            "-1"                            },
+  { "game.panel.bdx_conveyor_dir_switch.y",            "-1"                            },
+  { "game.panel.bdx_conveyor_dir_switch.tile_size",    "16"                            },
+  { "game.panel.bdx_conveyor_dir_switch.draw_masked",  "false"                         },
+  { "game.panel.bdx_conveyor_dir_switch.draw_order",   "0"                             },
+  { "game.panel.bdx_conveyor_dir_switch.class",                "none"                          },
+  { "game.panel.bdx_conveyor_dir_switch.style",                "none"                          },
+
   { "game.panel.player_name.x",                                "-1"                            },
   { "game.panel.player_name.y",                                "-1"                            },
   { "game.panel.player_name.align",                    "left"                          },
index b8299fb5efe14e4fd8c0925e32bfe17f65e0fba7..825e595c84c5120e94e30b44911c3ddfc234c70b 100644 (file)
 #define GAME_PANEL_CE_SCORE_6_ELEMENT          114
 #define GAME_PANEL_CE_SCORE_7_ELEMENT          115
 #define GAME_PANEL_CE_SCORE_8_ELEMENT          116
-#define GAME_PANEL_PLAYER_NAME                 117
-#define GAME_PANEL_LEVELSET_NAME               118
-#define GAME_PANEL_LEVEL_NAME                  119
-#define GAME_PANEL_LEVEL_AUTHOR                        120
-
-#define NUM_GAME_PANEL_CONTROLS                        121
+#define GAME_PANEL_BDX_LIVES                   117
+#define GAME_PANEL_BDX_KEY_1                   118
+#define GAME_PANEL_BDX_KEY_2                   119
+#define GAME_PANEL_BDX_KEY_3                   120
+#define GAME_PANEL_BDX_KEY_1_COUNT             121
+#define GAME_PANEL_BDX_KEY_2_COUNT             122
+#define GAME_PANEL_BDX_KEY_3_COUNT             123
+#define GAME_PANEL_BDX_DIAMOND_KEY             124
+#define GAME_PANEL_BDX_GRAVITY                 125
+#define GAME_PANEL_BDX_GRAVITY_NEXT            126
+#define GAME_PANEL_BDX_GRAVITY_TIME            127
+#define GAME_PANEL_BDX_GRAVITY_STATE           128
+#define GAME_PANEL_BDX_SKELETON                        129
+#define GAME_PANEL_BDX_SKELETON_COUNT          130
+#define GAME_PANEL_BDX_SWEET                   131
+#define GAME_PANEL_BDX_PNEUMATIC_HAMMER                132
+#define GAME_PANEL_BDX_ROCKET_COUNT            133
+#define GAME_PANEL_BDX_ROCKET_STATE            134
+#define GAME_PANEL_BDX_MAGIC_WALL              135
+#define GAME_PANEL_BDX_MAGIC_WALL_TIME         136
+#define GAME_PANEL_BDX_CREATURE_SWITCH         137
+#define GAME_PANEL_BDX_EXPANDABLE_WALL_SWITCH  138
+#define GAME_PANEL_BDX_BITER_SWITCH_TIME       139
+#define GAME_PANEL_BDX_REPLICATOR              140
+#define GAME_PANEL_BDX_REPLICATOR_SWITCH       141
+#define GAME_PANEL_BDX_CONVEYOR_LEFT           142
+#define GAME_PANEL_BDX_CONVEYOR_RIGHT          143
+#define GAME_PANEL_BDX_CONVEYOR_SWITCH         144
+#define GAME_PANEL_BDX_CONVEYOR_DIR_SWITCH     145
+#define GAME_PANEL_PLAYER_NAME                 146
+#define GAME_PANEL_LEVELSET_NAME               147
+#define GAME_PANEL_LEVEL_NAME                  148
+#define GAME_PANEL_LEVEL_AUTHOR                        149
+
+#define NUM_GAME_PANEL_CONTROLS                        150
 
 struct GamePanelOrderInfo
 {
@@ -827,6 +856,151 @@ static struct GamePanelControlInfo game_panel_controls[] =
     &game.panel.ce_score_element[7],
     TYPE_ELEMENT,
   },
+  {
+    GAME_PANEL_BDX_LIVES,
+    &game.panel.bdx_lives,
+    TYPE_INTEGER,
+  },
+  {
+    GAME_PANEL_BDX_KEY_1,
+    &game.panel.bdx_key[0],
+    TYPE_ELEMENT,
+  },
+  {
+    GAME_PANEL_BDX_KEY_2,
+    &game.panel.bdx_key[1],
+    TYPE_ELEMENT,
+  },
+  {
+    GAME_PANEL_BDX_KEY_3,
+    &game.panel.bdx_key[2],
+    TYPE_ELEMENT,
+  },
+  {
+    GAME_PANEL_BDX_KEY_1_COUNT,
+    &game.panel.bdx_key_count[0],
+    TYPE_INTEGER,
+  },
+  {
+    GAME_PANEL_BDX_KEY_2_COUNT,
+    &game.panel.bdx_key_count[1],
+    TYPE_INTEGER,
+  },
+  {
+    GAME_PANEL_BDX_KEY_3_COUNT,
+    &game.panel.bdx_key_count[2],
+    TYPE_INTEGER,
+  },
+  {
+    GAME_PANEL_BDX_DIAMOND_KEY,
+    &game.panel.bdx_diamond_key,
+    TYPE_ELEMENT,
+  },
+  {
+    GAME_PANEL_BDX_GRAVITY,
+    &game.panel.bdx_gravity,
+    TYPE_ELEMENT,
+  },
+  {
+    GAME_PANEL_BDX_GRAVITY_NEXT,
+    &game.panel.bdx_gravity_next,
+    TYPE_ELEMENT,
+  },
+  {
+    GAME_PANEL_BDX_GRAVITY_TIME,
+    &game.panel.bdx_gravity_time,
+    TYPE_INTEGER,
+  },
+  {
+    GAME_PANEL_BDX_GRAVITY_STATE,
+    &game.panel.bdx_gravity_state,
+    TYPE_STRING,
+  },
+  {
+    GAME_PANEL_BDX_SKELETON,
+    &game.panel.bdx_skeleton,
+    TYPE_ELEMENT,
+  },
+  {
+    GAME_PANEL_BDX_SKELETON_COUNT,
+    &game.panel.bdx_skeleton_count,
+    TYPE_INTEGER,
+  },
+  {
+    GAME_PANEL_BDX_SWEET,
+    &game.panel.bdx_sweet,
+    TYPE_ELEMENT,
+  },
+  {
+    GAME_PANEL_BDX_PNEUMATIC_HAMMER,
+    &game.panel.bdx_pneumatic_hammer,
+    TYPE_ELEMENT,
+  },
+  {
+    GAME_PANEL_BDX_ROCKET_COUNT,
+    &game.panel.bdx_rocket_count,
+    TYPE_INTEGER,
+  },
+  {
+    GAME_PANEL_BDX_ROCKET_STATE,
+    &game.panel.bdx_rocket_state,
+    TYPE_STRING,
+  },
+  {
+    GAME_PANEL_BDX_MAGIC_WALL,
+    &game.panel.bdx_magic_wall,
+    TYPE_ELEMENT,
+  },
+  {
+    GAME_PANEL_BDX_MAGIC_WALL_TIME,
+    &game.panel.bdx_magic_wall_time,
+    TYPE_INTEGER,
+  },
+  {
+    GAME_PANEL_BDX_CREATURE_SWITCH,
+    &game.panel.bdx_creature_switch,
+    TYPE_ELEMENT,
+  },
+  {
+    GAME_PANEL_BDX_EXPANDABLE_WALL_SWITCH,
+    &game.panel.bdx_expandable_wall_switch,
+    TYPE_ELEMENT,
+  },
+  {
+    GAME_PANEL_BDX_BITER_SWITCH_TIME,
+    &game.panel.bdx_biter_switch_time,
+    TYPE_INTEGER,
+  },
+  {
+    GAME_PANEL_BDX_REPLICATOR,
+    &game.panel.bdx_replicator,
+    TYPE_ELEMENT,
+  },
+  {
+    GAME_PANEL_BDX_REPLICATOR_SWITCH,
+    &game.panel.bdx_replicator_switch,
+    TYPE_ELEMENT,
+  },
+  {
+    GAME_PANEL_BDX_CONVEYOR_LEFT,
+    &game.panel.bdx_conveyor_left,
+    TYPE_ELEMENT,
+  },
+  {
+    GAME_PANEL_BDX_CONVEYOR_RIGHT,
+    &game.panel.bdx_conveyor_right,
+    TYPE_ELEMENT,
+  },
+  {
+    GAME_PANEL_BDX_CONVEYOR_SWITCH,
+    &game.panel.bdx_conveyor_switch,
+    TYPE_ELEMENT,
+  },
+  {
+    GAME_PANEL_BDX_CONVEYOR_DIR_SWITCH,
+    &game.panel.bdx_conveyor_dir_switch,
+    TYPE_ELEMENT,
+  },
   {
     GAME_PANEL_PLAYER_NAME,
     &game.panel.player_name,
@@ -2648,6 +2822,99 @@ static void UpdateGameControlValues(void)
        element_info[game.panel.ce_score_element[i].id].collect_score :
        EL_UNDEFINED);
 
+  game_panel_controls[GAME_PANEL_BDX_LIVES].value = game_bd.global_lives;
+
+  for (i = 0; i < NUM_BDX_KEYS; i++)
+  {
+    int key_value = (i == 0 ? game_bd.game->cave->key1 :
+                     i == 1 ? game_bd.game->cave->key2 :
+                     i == 2 ? game_bd.game->cave->key3 : 0);
+    game_panel_controls[GAME_PANEL_BDX_KEY_1 + i].value =
+      (key_value > 0 ? EL_BDX_KEY_1 + i : EL_BDX_EMPTY);
+    game_panel_controls[GAME_PANEL_BDX_KEY_1_COUNT + i].value = key_value;
+  }
+
+  game_panel_controls[GAME_PANEL_BDX_DIAMOND_KEY].value =
+    (game_bd.game->cave->diamond_key_collected ? EL_BDX_DIAMOND_KEY : EL_BDX_EMPTY);
+
+  game_panel_controls[GAME_PANEL_BDX_GRAVITY].value =
+    (game_bd.game->cave->gravity == GD_MV_LEFT  ? EL_ARROW_LEFT  :
+     game_bd.game->cave->gravity == GD_MV_RIGHT ? EL_ARROW_RIGHT :
+     game_bd.game->cave->gravity == GD_MV_UP    ? EL_ARROW_UP    :
+     game_bd.game->cave->gravity == GD_MV_DOWN  ? EL_ARROW_DOWN  :
+     EL_BDX_EMPTY);
+
+  game_panel_controls[GAME_PANEL_BDX_GRAVITY_NEXT].value =
+    (game_bd.game->cave->gravity_next_direction == GD_MV_LEFT  ? EL_ARROW_LEFT  :
+     game_bd.game->cave->gravity_next_direction == GD_MV_RIGHT ? EL_ARROW_RIGHT :
+     game_bd.game->cave->gravity_next_direction == GD_MV_UP    ? EL_ARROW_UP    :
+     game_bd.game->cave->gravity_next_direction == GD_MV_DOWN  ? EL_ARROW_DOWN  :
+     game_panel_controls[GAME_PANEL_BDX_GRAVITY].value);
+
+  game_panel_controls[GAME_PANEL_BDX_GRAVITY_TIME].value =
+    (game_bd.game->cave->gravity_will_change + 999) / 1000;
+  game_panel_controls[GAME_PANEL_BDX_GRAVITY_STATE].value =
+    !game_bd.game->cave->gravity_disabled;
+
+  game_panel_controls[GAME_PANEL_BDX_SKELETON].value =
+    (game_bd.game->cave->skeletons_collected ? EL_BDX_SKELETON : EL_BDX_EMPTY);
+  game_panel_controls[GAME_PANEL_BDX_SKELETON_COUNT].value =
+    game_bd.game->cave->skeletons_collected;
+
+  game_panel_controls[GAME_PANEL_BDX_SWEET].value =
+    (game_bd.game->cave->sweet_eaten ? EL_BDX_SWEET : EL_BDX_EMPTY);
+
+  game_panel_controls[GAME_PANEL_BDX_PNEUMATIC_HAMMER].value =
+    (game_bd.game->cave->got_pneumatic_hammer ?  : EL_BDX_EMPTY);
+
+  game_panel_controls[GAME_PANEL_BDX_ROCKET_COUNT].value =
+    game_bd.game->cave->rockets_collected;
+  game_panel_controls[GAME_PANEL_BDX_ROCKET_STATE].value =
+    game_bd.game->cave->infinite_rockets;
+
+  game_panel_controls[GAME_PANEL_BDX_MAGIC_WALL].value =
+    (game_bd.game->cave->magic_wall_state == GD_MW_ACTIVE ?
+     EL_BDX_MAGIC_WALL_ACTIVE : EL_BDX_MAGIC_WALL);
+  game_panel_controls[GAME_PANEL_BDX_MAGIC_WALL_TIME].value =
+    game_bd.game->cave->magic_wall_time;
+
+  game_panel_controls[GAME_PANEL_BDX_CREATURE_SWITCH].value =
+    (game_bd.game->cave->creatures_backwards ?
+     EL_BDX_CREATURE_SWITCH_ACTIVE : EL_BDX_CREATURE_SWITCH);
+
+  game_panel_controls[GAME_PANEL_BDX_EXPANDABLE_WALL_SWITCH].value =
+    (game_bd.game->cave->expanding_wall_changed ?
+     EL_BDX_EXPANDABLE_WALL_SWITCH_ACTIVE : EL_BDX_EXPANDABLE_WALL_SWITCH);
+
+  game_panel_controls[GAME_PANEL_BDX_BITER_SWITCH_TIME].value =
+    game_bd.game->cave->biter_delay_frame;
+
+  game_panel_controls[GAME_PANEL_BDX_REPLICATOR].value =
+    (game_bd.game->cave->replicators_active ?
+     EL_BDX_REPLICATOR_ACTIVE : EL_BDX_REPLICATOR);
+  game_panel_controls[GAME_PANEL_BDX_REPLICATOR_SWITCH].value =
+    (game_bd.game->cave->replicators_active ?
+     EL_BDX_REPLICATOR_SWITCH_ACTIVE : EL_BDX_REPLICATOR_SWITCH);
+
+  game_panel_controls[GAME_PANEL_BDX_CONVEYOR_LEFT].value =
+    (game_bd.game->cave->conveyor_belts_active ?
+     (game_bd.game->cave->conveyor_belts_direction_changed ?
+      EL_BDX_CONVEYOR_RIGHT_ACTIVE : EL_BDX_CONVEYOR_LEFT_ACTIVE) :
+     (game_bd.game->cave->conveyor_belts_direction_changed ?
+      EL_BDX_CONVEYOR_RIGHT : EL_BDX_CONVEYOR_LEFT));
+  game_panel_controls[GAME_PANEL_BDX_CONVEYOR_RIGHT].value =
+    (game_bd.game->cave->conveyor_belts_active ?
+     (game_bd.game->cave->conveyor_belts_direction_changed ?
+      EL_BDX_CONVEYOR_LEFT_ACTIVE : EL_BDX_CONVEYOR_RIGHT_ACTIVE) :
+     (game_bd.game->cave->conveyor_belts_direction_changed ?
+      EL_BDX_CONVEYOR_LEFT : EL_BDX_CONVEYOR_RIGHT));
+  game_panel_controls[GAME_PANEL_BDX_CONVEYOR_SWITCH].value =
+    (game_bd.game->cave->conveyor_belts_active ?
+     EL_BDX_CONVEYOR_SWITCH_ACTIVE : EL_BDX_CONVEYOR_SWITCH);
+  game_panel_controls[GAME_PANEL_BDX_CONVEYOR_DIR_SWITCH].value =
+    (game_bd.game->cave->conveyor_belts_direction_changed ?
+     EL_BDX_CONVEYOR_DIR_SWITCH_ACTIVE : EL_BDX_CONVEYOR_DIR_SWITCH);
+
   game_panel_controls[GAME_PANEL_PLAYER_NAME].value = 0;
   game_panel_controls[GAME_PANEL_LEVELSET_NAME].value = 0;
   game_panel_controls[GAME_PANEL_LEVEL_NAME].value = 0;
index aefb1682f12415b541a2e50398d368ad590fa1f6..844bd43ac7ca0249f58d9eaeafbb53de484aac46 100644 (file)
@@ -22,6 +22,8 @@
 #define STD_NUM_KEYS                   4
 #define MAX_NUM_KEYS                   8
 
+#define NUM_BDX_KEYS                   3
+
 #define NUM_BELTS                      4
 #define NUM_BELT_PARTS                 3
 
@@ -105,6 +107,31 @@ struct GamePanelInfo
   struct TextPosInfo element_count[NUM_PANEL_ELEMENTS];
   struct TextPosInfo ce_score[NUM_PANEL_CE_SCORE];
   struct TextPosInfo ce_score_element[NUM_PANEL_CE_SCORE];
+  struct TextPosInfo bdx_lives;
+  struct TextPosInfo bdx_key[NUM_BDX_KEYS];
+  struct TextPosInfo bdx_key_count[NUM_BDX_KEYS];
+  struct TextPosInfo bdx_diamond_key;
+  struct TextPosInfo bdx_gravity;
+  struct TextPosInfo bdx_gravity_next;
+  struct TextPosInfo bdx_gravity_time;
+  struct TextPosInfo bdx_gravity_state;
+  struct TextPosInfo bdx_skeleton;
+  struct TextPosInfo bdx_skeleton_count;
+  struct TextPosInfo bdx_sweet;
+  struct TextPosInfo bdx_pneumatic_hammer;
+  struct TextPosInfo bdx_rocket_count;
+  struct TextPosInfo bdx_rocket_state;
+  struct TextPosInfo bdx_magic_wall;
+  struct TextPosInfo bdx_magic_wall_time;
+  struct TextPosInfo bdx_creature_switch;
+  struct TextPosInfo bdx_expandable_wall_switch;
+  struct TextPosInfo bdx_biter_switch_time;
+  struct TextPosInfo bdx_replicator;
+  struct TextPosInfo bdx_replicator_switch;
+  struct TextPosInfo bdx_conveyor_left;
+  struct TextPosInfo bdx_conveyor_right;
+  struct TextPosInfo bdx_conveyor_switch;
+  struct TextPosInfo bdx_conveyor_dir_switch;
   struct TextPosInfo player_name;
   struct TextPosInfo levelset_name;
   struct TextPosInfo level_name;