X-Git-Url: https://git.artsoft.org/?a=blobdiff_plain;f=src%2Feditor.c;h=025de3a70c1fb5d643c6bdeb8d0c7ea55fd83ea6;hb=faccf2ee1a414cf7500e995edc37d68aabcb4b46;hp=9f917b4325b1c77332eb30fef73d7b02c4498b4e;hpb=239b08a718e513e80c68bf79251d561e442397a3;p=rocksndiamonds.git diff --git a/src/editor.c b/src/editor.c index 9f917b43..025de3a7 100644 --- a/src/editor.c +++ b/src/editor.c @@ -556,6 +556,7 @@ enum GADGET_ID_MAGIC_BALL_CONTENT_7, GADGET_ID_ANDROID_CONTENT, GADGET_ID_AMOEBA_CONTENT, + GADGET_ID_BD_SNAP_ELEMENT, GADGET_ID_BD_AMOEBA_CONTENT_TOO_BIG, GADGET_ID_BD_AMOEBA_CONTENT_ENCLOSED, GADGET_ID_BD_AMOEBA_2_CONTENT_TOO_BIG, @@ -719,6 +720,11 @@ enum GADGET_ID_BD_AMOEBA_WAIT_FOR_HATCHING, GADGET_ID_BD_AMOEBA_START_IMMEDIATELY, GADGET_ID_BD_AMOEBA_2_EXPLODE_BY_AMOEBA, + GADGET_ID_BD_VOODOO_COLLECTS_DIAMONDS, + GADGET_ID_BD_VOODOO_HURT_KILLS_PLAYER, + GADGET_ID_BD_VOODOO_DIES_BY_ROCK, + GADGET_ID_BD_VOODOO_VANISH_BY_EXPLOSION, + GADGET_ID_BD_SLIME_IS_PREDICTABLE, GADGET_ID_ENVELOPE_AUTOWRAP, GADGET_ID_ENVELOPE_CENTERED, GADGET_ID_MM_LASER_RED, @@ -1059,6 +1065,11 @@ enum ED_CHECKBUTTON_ID_BD_AMOEBA_WAIT_FOR_HATCHING, ED_CHECKBUTTON_ID_BD_AMOEBA_START_IMMEDIATELY, ED_CHECKBUTTON_ID_BD_AMOEBA_2_EXPLODE_BY_AMOEBA, + ED_CHECKBUTTON_ID_BD_VOODOO_COLLECTS_DIAMONDS, + ED_CHECKBUTTON_ID_BD_VOODOO_HURT_KILLS_PLAYER, + 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_ENVELOPE_AUTOWRAP, ED_CHECKBUTTON_ID_ENVELOPE_CENTERED, ED_CHECKBUTTON_ID_MM_LASER_RED, @@ -1154,6 +1165,7 @@ enum ED_DRAWING_ID_MAGIC_BALL_CONTENT_7, ED_DRAWING_ID_ANDROID_CONTENT, ED_DRAWING_ID_AMOEBA_CONTENT, + ED_DRAWING_ID_BD_SNAP_ELEMENT, ED_DRAWING_ID_BD_AMOEBA_CONTENT_TOO_BIG, ED_DRAWING_ID_BD_AMOEBA_CONTENT_ENCLOSED, ED_DRAWING_ID_BD_AMOEBA_2_CONTENT_TOO_BIG, @@ -3750,6 +3762,46 @@ static struct NULL, NULL, "explodes if touched by amoeba", "amoeba 2 explodes if touched by amoeba" }, + { + ED_CHECKBUTTON_ID_BD_VOODOO_COLLECTS_DIAMONDS, + ED_ELEMENT_SETTINGS_XPOS(0), ED_ELEMENT_SETTINGS_YPOS(0), + GADGET_ID_BD_VOODOO_COLLECTS_DIAMONDS, GADGET_ID_NONE, + &level.bd_voodoo_collects_diamonds, + NULL, NULL, + "can collect diamonds", "can collect diamonds for the player" + }, + { + ED_CHECKBUTTON_ID_BD_VOODOO_HURT_KILLS_PLAYER, + ED_ELEMENT_SETTINGS_XPOS(0), ED_ELEMENT_SETTINGS_YPOS(1), + GADGET_ID_BD_VOODOO_HURT_KILLS_PLAYER, GADGET_ID_NONE, + &level.bd_voodoo_hurt_kills_player, + NULL, NULL, + "player is killed if hurt", "if hurt in any way, player is killed" + }, + { + ED_CHECKBUTTON_ID_BD_VOODOO_DIES_BY_ROCK, + ED_ELEMENT_SETTINGS_XPOS(0), ED_ELEMENT_SETTINGS_YPOS(2), + GADGET_ID_BD_VOODOO_DIES_BY_ROCK, GADGET_ID_NONE, + &level.bd_voodoo_dies_by_rock, + NULL, NULL, + "killed by falling rock", "can be killed by a falling rock" + }, + { + ED_CHECKBUTTON_ID_BD_VOODOO_VANISH_BY_EXPLOSION, + ED_ELEMENT_SETTINGS_XPOS(0), ED_ELEMENT_SETTINGS_YPOS(3), + GADGET_ID_BD_VOODOO_VANISH_BY_EXPLOSION, GADGET_ID_NONE, + &level.bd_voodoo_vanish_by_explosion, + NULL, NULL, + "disappears in explosions", "can be destroyed by explosions" + }, + { + ED_CHECKBUTTON_ID_BD_SLIME_IS_PREDICTABLE, + ED_ELEMENT_SETTINGS_XPOS(0), ED_ELEMENT_SETTINGS_YPOS(0), + GADGET_ID_BD_SLIME_IS_PREDICTABLE, GADGET_ID_NONE, + &level.bd_slime_is_predictable, + NULL, NULL, + "slime is predictable", "use predictable random numbers" + }, { ED_CHECKBUTTON_ID_ENVELOPE_AUTOWRAP, ED_ELEMENT_SETTINGS_XPOS(0), ED_ELEMENT_SETTINGS_YPOS(1), @@ -4221,7 +4273,18 @@ static struct "content:", NULL, NULL, NULL, "amoeba content" }, - // ---------- BD amoeba content ------------------------------------------------ + // ---------- BD snap element ----------------------------------------------- + + { + ED_DRAWING_ID_BD_SNAP_ELEMENT, + ED_AREA_1X1_SETTINGS_XPOS(0), ED_AREA_1X1_SETTINGS_YPOS(5), + ED_AREA_1X1_SETTINGS_XOFF, ED_AREA_1X1_SETTINGS_YOFF, + GADGET_ID_BD_SNAP_ELEMENT, GADGET_ID_NONE, + &level.bd_snap_element, 1, 1, + "snap element:", NULL, NULL, NULL, "element created when snapping" + }, + + // ---------- BD amoeba content --------------------------------------------- { ED_DRAWING_ID_BD_AMOEBA_CONTENT_TOO_BIG, @@ -4240,7 +4303,7 @@ static struct "if enclosed, changes to:", NULL, NULL, NULL, "BD amoeba content if enclosed" }, - // ---------- BD amoeba 2 content ------------------------------------------------ + // ---------- BD amoeba 2 content ------------------------------------------- { ED_DRAWING_ID_BD_AMOEBA_2_CONTENT_TOO_BIG, @@ -10787,6 +10850,10 @@ static void DrawPropertiesInfo(void) #define TEXT_GAME_OF_LIFE_3 "Min neighbours to create" #define TEXT_GAME_OF_LIFE_4 "Max neighbours to create" #define TEXT_TIME_BONUS "Extra time to solve level" +#define TEXT_TIME_PENALTY "Time penalty if destroyed" +#define TEXT_PERMEABILITY_RATE "slime permeability rate" +#define TEXT_PERMEABILITY_BITS "slime permeability bits" +#define TEXT_RANDOM_SEED "slime random number seed" static struct { @@ -10901,6 +10968,14 @@ static struct { EL_SHIELD_DEADLY, &level.shield_deadly_time, TEXT_DURATION }, { EL_BD_CLOCK, &level.bd_clock_extra_time, TEXT_TIME_BONUS, -100, 100 }, + { EL_BD_VOODOO_DOLL, &level.bd_voodoo_penalty_time, TEXT_TIME_PENALTY, + 0, 100 }, + { EL_BD_SLIME, &level.bd_slime_permeability_rate, TEXT_PERMEABILITY_RATE, + 0, 100 }, + { EL_BD_SLIME, &level.bd_slime_permeability_bits_c64, TEXT_PERMEABILITY_BITS, + 0, 255 }, + { EL_BD_SLIME, &level.bd_slime_random_seed_c64, TEXT_RANDOM_SEED, + -1, 65535 }, { 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 }, @@ -10960,7 +11035,8 @@ static boolean checkPropertiesConfig(int element) MAYBE_DONT_COLLIDE_WITH(element) || element == EL_BD_ROCK || element == EL_BD_MEGA_ROCK || - element == EL_BD_SWEET) + element == EL_BD_SWEET || + element == EL_BD_VOODOO_DOLL) { return TRUE; } @@ -11080,6 +11156,8 @@ static void DrawPropertiesConfig(void) (CAN_GROW(properties_element) ? 1 : 0) + (COULD_MOVE_INTO_ACID(properties_element) ? 1 : 0) + (MAYBE_DONT_COLLIDE_WITH(properties_element) ? 1 : 0) + + (properties_element == EL_BD_VOODOO_DOLL ? 4 : 0) + + (properties_element == EL_BD_SLIME ? 1 : 0) + (properties_element == EL_EMC_MAGIC_BALL ? 2 : 0) + num_element_counters); @@ -11246,6 +11324,9 @@ static void DrawPropertiesConfig(void) // draw counter gadgets MapCounterButtons(ED_COUNTER_ID_BD_PUSHING_PROB); MapCounterButtons(ED_COUNTER_ID_BD_PUSHING_PROB_WITH_SWEET); + + // draw drawing area gadgets + MapDrawingArea(ED_DRAWING_ID_BD_SNAP_ELEMENT); } if (properties_element == EL_BD_ROCK && level.game_engine_type == GAME_ENGINE_TYPE_BD) @@ -11271,6 +11352,19 @@ static void DrawPropertiesConfig(void) MapCheckbuttonGadget(ED_CHECKBUTTON_ID_BD_PUSH_MEGA_ROCK_WITH_SWEET); } + if (properties_element == EL_BD_VOODOO_DOLL) + { + MapCheckbuttonGadget(ED_CHECKBUTTON_ID_BD_VOODOO_COLLECTS_DIAMONDS); + MapCheckbuttonGadget(ED_CHECKBUTTON_ID_BD_VOODOO_HURT_KILLS_PLAYER); + MapCheckbuttonGadget(ED_CHECKBUTTON_ID_BD_VOODOO_DIES_BY_ROCK); + MapCheckbuttonGadget(ED_CHECKBUTTON_ID_BD_VOODOO_VANISH_BY_EXPLOSION); + } + + if (properties_element == EL_BD_SLIME) + { + MapCheckbuttonGadget(ED_CHECKBUTTON_ID_BD_SLIME_IS_PREDICTABLE); + } + if (properties_element == EL_BD_MAGIC_WALL) { MapCheckbuttonGadget(ED_CHECKBUTTON_ID_BD_MAGIC_WALL_WAIT_HATCHING);