X-Git-Url: https://git.artsoft.org/?a=blobdiff_plain;ds=sidebyside;f=src%2Feditor.c;h=fd5d546370bbbd76fd2fd30b70ff2bcc8fc7683f;hb=472e5e90;hp=2ca3dfba9b78b79f44b409c4af2b4a7cbdba8258;hpb=f86b45bef20957bce2bca71880becbbb145203b1;p=rocksndiamonds.git diff --git a/src/editor.c b/src/editor.c index 2ca3dfba..fd5d5463 100644 --- a/src/editor.c +++ b/src/editor.c @@ -729,6 +729,11 @@ enum GADGET_ID_BD_VOODOO_DIES_BY_ROCK, GADGET_ID_BD_VOODOO_VANISH_BY_EXPLOSION, GADGET_ID_BD_SLIME_IS_PREDICTABLE, + GADGET_ID_BD_CHANGE_EXPANDING_WALL, + GADGET_ID_BD_REPLICATORS_ACTIVE, + GADGET_ID_BD_CONVEYOR_BELTS_ACTIVE, + GADGET_ID_BD_CONVEYOR_BELTS_CHANGED, + GADGET_ID_BD_WATER_CANNOT_FLOW_DOWN, GADGET_ID_ENVELOPE_AUTOWRAP, GADGET_ID_ENVELOPE_CENTERED, GADGET_ID_MM_LASER_RED, @@ -1074,6 +1079,11 @@ enum ED_CHECKBUTTON_ID_BD_VOODOO_DIES_BY_ROCK, ED_CHECKBUTTON_ID_BD_VOODOO_VANISH_BY_EXPLOSION, ED_CHECKBUTTON_ID_BD_SLIME_IS_PREDICTABLE, + ED_CHECKBUTTON_ID_BD_CHANGE_EXPANDING_WALL, + ED_CHECKBUTTON_ID_BD_REPLICATORS_ACTIVE, + ED_CHECKBUTTON_ID_BD_CONVEYOR_BELTS_ACTIVE, + ED_CHECKBUTTON_ID_BD_CONVEYOR_BELTS_CHANGED, + ED_CHECKBUTTON_ID_BD_WATER_CANNOT_FLOW_DOWN, ED_CHECKBUTTON_ID_ENVELOPE_AUTOWRAP, ED_CHECKBUTTON_ID_ENVELOPE_CENTERED, ED_CHECKBUTTON_ID_MM_LASER_RED, @@ -3810,6 +3820,46 @@ static struct NULL, NULL, "Slime is predictable", "Use predictable random numbers" }, + { + ED_CHECKBUTTON_ID_BD_CHANGE_EXPANDING_WALL, + ED_ELEMENT_SETTINGS_XPOS(0), ED_ELEMENT_SETTINGS_YPOS(0), + GADGET_ID_BD_CHANGE_EXPANDING_WALL, GADGET_ID_NONE, + &level.bd_change_expanding_wall, + NULL, NULL, + "Change direction", "Switch horizontal/vertical direction" + }, + { + ED_CHECKBUTTON_ID_BD_REPLICATORS_ACTIVE, + ED_ELEMENT_SETTINGS_XPOS(0), ED_ELEMENT_SETTINGS_YPOS(0), + GADGET_ID_BD_REPLICATORS_ACTIVE, GADGET_ID_NONE, + &level.bd_replicators_active, + NULL, NULL, + "Active at start", "Replicators start in active state" + }, + { + ED_CHECKBUTTON_ID_BD_CONVEYOR_BELTS_ACTIVE, + ED_ELEMENT_SETTINGS_XPOS(0), ED_ELEMENT_SETTINGS_YPOS(0), + GADGET_ID_BD_CONVEYOR_BELTS_ACTIVE, GADGET_ID_NONE, + &level.bd_conveyor_belts_active, + NULL, NULL, + "Active at start", "Conveyor belts start in active state" + }, + { + ED_CHECKBUTTON_ID_BD_CONVEYOR_BELTS_CHANGED, + ED_ELEMENT_SETTINGS_XPOS(0), ED_ELEMENT_SETTINGS_YPOS(1), + GADGET_ID_BD_CONVEYOR_BELTS_CHANGED, GADGET_ID_NONE, + &level.bd_conveyor_belts_changed, + NULL, NULL, + "Change direction", "Switch conveyor belt direction" + }, + { + ED_CHECKBUTTON_ID_BD_WATER_CANNOT_FLOW_DOWN, + ED_ELEMENT_SETTINGS_XPOS(0), ED_ELEMENT_SETTINGS_YPOS(0), + GADGET_ID_BD_WATER_CANNOT_FLOW_DOWN, GADGET_ID_NONE, + &level.bd_water_cannot_flow_down, + NULL, NULL, + "Does not flow downwards", "Water can only flow up, left and right" + }, { ED_CHECKBUTTON_ID_ENVELOPE_AUTOWRAP, ED_ELEMENT_SETTINGS_XPOS(0), ED_ELEMENT_SETTINGS_YPOS(1), @@ -4832,7 +4882,7 @@ static int editor_el_boulderdash_native[] = EL_BD_CONVEYOR_LEFT, EL_BD_CONVEYOR_RIGHT, EL_BD_CONVEYOR_SWITCH, - EL_BD_CONVEYOR_DIR_SWITCH_RIGHT, + EL_BD_CONVEYOR_DIR_SWITCH_NORMAL, EL_BD_CLOCK, EL_BD_TIME_PENALTY, @@ -10897,6 +10947,7 @@ static void DrawPropertiesInfo(void) #define TEXT_RANDOM_SEED "slime random number seed" #define TEXT_ACID_SPREAD_RATE "Spread rate (percent)" #define TEXT_BITER_MOVE_DELAY "Move delay (BD frames)" +#define TEXT_REPLICATION_DELAY "Create delay (BD frames)" static struct { @@ -11031,6 +11082,8 @@ static struct 0, 3 }, { EL_BD_BITER_DOWN, &level.bd_biter_move_delay, TEXT_BITER_MOVE_DELAY, 0, 3 }, + { EL_BD_REPLICATOR, &level.bd_replicator_create_delay, TEXT_REPLICATION_DELAY, + 0, 100 }, { EL_EXTRA_TIME, &level.extra_time, TEXT_TIME_BONUS }, { EL_TIME_ORB_FULL, &level.time_orb_time, TEXT_TIME_BONUS }, { EL_GAME_OF_LIFE, &level.game_of_life[0], TEXT_GAME_OF_LIFE_1,0,8 }, @@ -11083,6 +11136,9 @@ static boolean checkPropertiesConfig(int element) IS_DF_LASER(element) || IS_PLAYER_ELEMENT(element) || IS_BD_PLAYER_ELEMENT(element) || + IS_BD_EXPANDABLE_WALL(properties_element) || + IS_BD_CONVEYOR_BELT(properties_element) || + IS_BD_CONVEYOR_BELT_SWITCH(properties_element) || IS_SOKOBAN_OBJECT_OR_FIELD(element) || HAS_EDITOR_CONTENT(element) || CAN_GROW(element) || @@ -11091,7 +11147,8 @@ static boolean checkPropertiesConfig(int element) element == EL_BD_ROCK || element == EL_BD_MEGA_ROCK || element == EL_BD_SWEET || - element == EL_BD_VOODOO_DOLL) + element == EL_BD_VOODOO_DOLL || + element == EL_BD_WATER) { return TRUE; } @@ -11214,6 +11271,7 @@ static void DrawPropertiesConfig(void) (properties_element == EL_BD_VOODOO_DOLL ? 4 : 0) + (properties_element == EL_BD_SLIME ? 1 : 0) + (properties_element == EL_BD_ACID ? 1 : 0) + + (properties_element == EL_BD_REPLICATOR ? 1 : 0) + (properties_element == EL_EMC_MAGIC_BALL ? 2 : 0) + num_element_counters); @@ -11440,6 +11498,28 @@ static void DrawPropertiesConfig(void) MapCheckbuttonGadget(ED_CHECKBUTTON_ID_BD_MAGIC_WALL_STOPS_AMOEBA); } + if (IS_BD_EXPANDABLE_WALL(properties_element)) + { + MapCheckbuttonGadget(ED_CHECKBUTTON_ID_BD_CHANGE_EXPANDING_WALL); + } + + if (properties_element == EL_BD_REPLICATOR) + { + MapCheckbuttonGadget(ED_CHECKBUTTON_ID_BD_REPLICATORS_ACTIVE); + } + + if (IS_BD_CONVEYOR_BELT(properties_element) || + IS_BD_CONVEYOR_BELT_SWITCH(properties_element)) + { + MapCheckbuttonGadget(ED_CHECKBUTTON_ID_BD_CONVEYOR_BELTS_ACTIVE); + MapCheckbuttonGadget(ED_CHECKBUTTON_ID_BD_CONVEYOR_BELTS_CHANGED); + } + + if (properties_element == EL_BD_WATER) + { + MapCheckbuttonGadget(ED_CHECKBUTTON_ID_BD_WATER_CANNOT_FLOW_DOWN); + } + // 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) MapCheckbuttonGadget(ED_CHECKBUTTON_ID_EM_SLIPPERY_GEMS);