From: Holger Schemel Date: Sun, 2 Feb 2025 23:41:28 +0000 (+0100) Subject: added support for game panel values for native BD game engine X-Git-Tag: 4.4.0.4~15 X-Git-Url: https://git.artsoft.org/?a=commitdiff_plain;h=4bd11f54ba5d6642f022bed9fa2d324f7d98ad54;p=rocksndiamonds.git added support for game panel values for native BD game engine --- diff --git a/build-scripts/create_element_defs.pl b/build-scripts/create_element_defs.pl index e0578e19..69071fe9 100755 --- a/build-scripts/create_element_defs.pl +++ b/build-scripts/create_element_defs.pl @@ -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)/) { diff --git a/src/conf_gfx.c b/src/conf_gfx.c index fceacf98..65cd0e9a 100644 --- a/src/conf_gfx.c +++ b/src/conf_gfx.c @@ -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" }, diff --git a/src/game.c b/src/game.c index b8299fb5..825e595c 100644 --- a/src/game.c +++ b/src/game.c @@ -204,12 +204,41 @@ #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; diff --git a/src/game.h b/src/game.h index aefb1682..844bd43a 100644 --- a/src/game.h +++ b/src/game.h @@ -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;