X-Git-Url: https://git.artsoft.org/?a=blobdiff_plain;f=src%2Feditor.c;h=afd58ff71e95ae4a7c840d67a832edb98cb34842;hb=737d4e8a0cff8bb6b56b4b8907ee51ea0d1ad415;hp=078204481eca56814bac3a1e41b3a9aef8c13e37;hpb=a52811d192774b82081d7b6c87a00e9fa68b816a;p=rocksndiamonds.git diff --git a/src/editor.c b/src/editor.c index 07820448..afd58ff7 100644 --- a/src/editor.c +++ b/src/editor.c @@ -620,6 +620,7 @@ enum GADGET_ID_LEVELSET_SAVE_MODE, GADGET_ID_WIND_DIRECTION, GADGET_ID_PLAYER_SPEED, + GADGET_ID_BD_GRAVITY_DIRECTION, GADGET_ID_MM_BALL_CHOICE_MODE, GADGET_ID_CUSTOM_WALK_TO_ACTION, GADGET_ID_CUSTOM_EXPLOSION_TYPE, @@ -700,7 +701,6 @@ enum GADGET_ID_BD_LINE_SHIFTING_BORDERS, GADGET_ID_BD_SCAN_FIRST_AND_LAST_ROW, GADGET_ID_BD_SHORT_EXPLOSIONS, - GADGET_ID_BD_GRAVITY_AFFECTS_ALL, GADGET_ID_STICK_ELEMENT, GADGET_ID_EM_SLIPPERY_GEMS, GADGET_ID_EM_EXPLODES_BY_FIRE, @@ -753,6 +753,8 @@ enum GADGET_ID_BD_HAMMER_WALLS_REAPPEAR, GADGET_ID_BD_CREATURES_START_BACKWARDS, GADGET_ID_BD_CREATURES_TURN_ON_HATCHING, + GADGET_ID_BD_GRAVITY_SWITCH_ACTIVE, + GADGET_ID_BD_GRAVITY_AFFECTS_ALL, GADGET_ID_ENVELOPE_AUTOWRAP, GADGET_ID_ENVELOPE_CENTERED, GADGET_ID_MM_LASER_RED, @@ -945,6 +947,7 @@ enum ED_SELECTBOX_ID_LEVELSET_SAVE_MODE, ED_SELECTBOX_ID_WIND_DIRECTION, ED_SELECTBOX_ID_PLAYER_SPEED, + ED_SELECTBOX_ID_BD_GRAVITY_DIRECTION, ED_SELECTBOX_ID_MM_BALL_CHOICE_MODE, ED_SELECTBOX_ID_CUSTOM_ACCESS_TYPE, ED_SELECTBOX_ID_CUSTOM_ACCESS_LAYER, @@ -1053,7 +1056,6 @@ enum ED_CHECKBUTTON_ID_BD_LINE_SHIFTING_BORDERS, ED_CHECKBUTTON_ID_BD_SCAN_FIRST_AND_LAST_ROW, ED_CHECKBUTTON_ID_BD_SHORT_EXPLOSIONS, - ED_CHECKBUTTON_ID_BD_GRAVITY_AFFECTS_ALL, ED_CHECKBUTTON_ID_STICK_ELEMENT, ED_CHECKBUTTON_ID_EM_SLIPPERY_GEMS, ED_CHECKBUTTON_ID_EM_EXPLODES_BY_FIRE, @@ -1106,6 +1108,8 @@ enum ED_CHECKBUTTON_ID_BD_HAMMER_WALLS_REAPPEAR, ED_CHECKBUTTON_ID_BD_CREATURES_START_BACKWARDS, ED_CHECKBUTTON_ID_BD_CREATURES_TURN_ON_HATCHING, + ED_CHECKBUTTON_ID_BD_GRAVITY_SWITCH_ACTIVE, + ED_CHECKBUTTON_ID_BD_GRAVITY_AFFECTS_ALL, ED_CHECKBUTTON_ID_ENVELOPE_AUTOWRAP, ED_CHECKBUTTON_ID_ENVELOPE_CENTERED, ED_CHECKBUTTON_ID_MM_LASER_RED, @@ -1155,7 +1159,7 @@ enum #define ED_CHECKBUTTON_ID_EDITOR_LAST ED_CHECKBUTTON_ID_CUSTOM_USE_TEMPLATE_2 #define ED_CHECKBUTTON_ID_ENGINE_FIRST ED_CHECKBUTTON_ID_BD_INTERMISSION -#define ED_CHECKBUTTON_ID_ENGINE_LAST ED_CHECKBUTTON_ID_BD_GRAVITY_AFFECTS_ALL +#define ED_CHECKBUTTON_ID_ENGINE_LAST ED_CHECKBUTTON_ID_BD_SHORT_EXPLOSIONS #define ED_CHECKBUTTON_ID_CUSTOM1_FIRST ED_CHECKBUTTON_ID_CUSTOM_USE_GRAPHIC #define ED_CHECKBUTTON_ID_CUSTOM1_LAST ED_CHECKBUTTON_ID_CUSTOM_INDESTRUCTIBLE @@ -2054,6 +2058,16 @@ static struct ValueTextInfo options_levelset_save_mode[] = { -1, NULL } }; +static struct ValueTextInfo options_bd_gravity_direction[] = +{ + { GD_MV_DOWN, "down" }, + { GD_MV_UP, "up" }, + { GD_MV_LEFT, "left" }, + { GD_MV_RIGHT, "right" }, + + { -1, NULL } +}; + static struct ValueTextInfo options_wind_direction[] = { { MV_START_NONE, "none" }, @@ -2850,6 +2864,15 @@ static struct &level.initial_player_stepsize[0], NULL, "Initial player speed:", NULL, "Select initial player speed" }, + { + ED_SELECTBOX_ID_BD_GRAVITY_DIRECTION, + ED_ELEMENT_SETTINGS_XPOS(0), ED_ELEMENT_SETTINGS_YPOS(0), + GADGET_ID_BD_GRAVITY_DIRECTION, GADGET_ID_NONE, + -1, + options_bd_gravity_direction, + &level.bd_gravity_direction, + NULL, "Gravity direction:", NULL, "Select initial gravity direction" + }, { ED_SELECTBOX_ID_MM_BALL_CHOICE_MODE, ED_ELEMENT_SETTINGS_XPOS(0), ED_ELEMENT_SETTINGS_YPOS(4), @@ -3495,14 +3518,6 @@ static struct NULL, NULL, "Short explosions", "Use four game cycles for explosions" }, - { - ED_CHECKBUTTON_ID_BD_GRAVITY_AFFECTS_ALL, - ED_LEVEL_SETTINGS_XPOS(0), ED_LEVEL_SETTINGS_YPOS(9), - GADGET_ID_BD_GRAVITY_AFFECTS_ALL, GADGET_ID_NONE, - &level.bd_gravity_affects_all, - NULL, NULL, - "Gravity change affects everything", "Gravity affects all falling objects" - }, // ---------- element settings: configure (various elements) ---------------- @@ -3922,6 +3937,22 @@ static struct NULL, NULL, "Creatures turn on hatching", "Creatures change direction on hatching" }, + { + ED_CHECKBUTTON_ID_BD_GRAVITY_SWITCH_ACTIVE, + ED_ELEMENT_SETTINGS_XPOS(0), ED_ELEMENT_SETTINGS_YPOS(1), + GADGET_ID_BD_GRAVITY_SWITCH_ACTIVE, GADGET_ID_NONE, + &level.bd_gravity_switch_active, + NULL, NULL, + "Gravity switch active at start", "Gravity switch starts in active state" + }, + { + ED_CHECKBUTTON_ID_BD_GRAVITY_AFFECTS_ALL, + ED_LEVEL_SETTINGS_XPOS(0), ED_ELEMENT_SETTINGS_YPOS(3), + GADGET_ID_BD_GRAVITY_AFFECTS_ALL, GADGET_ID_NONE, + &level.bd_gravity_affects_all, + NULL, NULL, + "Gravity change affects everything", "Gravity affects all falling objects" + }, { ED_CHECKBUTTON_ID_ENVELOPE_AUTOWRAP, ED_ELEMENT_SETTINGS_XPOS(0), ED_ELEMENT_SETTINGS_YPOS(1), @@ -11342,6 +11373,7 @@ static void DrawPropertiesInfo(void) #define TEXT_SKELETONS_NEEDED "Skeletons needed to use pot" #define TEXT_SKELETONS_WORTH "Counts as this many diamonds" #define TEXT_AUTO_TURN_DELAY "Creatures auto turn delay" +#define TEXT_GRAVITY_DELAY "Gravity switch change delay" static struct { @@ -11489,6 +11521,8 @@ static struct { EL_BD_SKELETON, &level.bd_skeleton_worth_num_diamonds, TEXT_SKELETONS_WORTH, 0, 10 }, { EL_BD_CREATURE_SWITCH, &level.bd_creatures_auto_turn_delay, TEXT_AUTO_TURN_DELAY }, + { EL_BD_GRAVITY_SWITCH, &level.bd_gravity_switch_delay, TEXT_GRAVITY_DELAY, + 1, 60 }, { 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 }, @@ -11555,7 +11589,8 @@ static boolean checkPropertiesConfig(int element) element == EL_BD_MEGA_ROCK || element == EL_BD_SWEET || element == EL_BD_VOODOO_DOLL || - element == EL_BD_WATER) + element == EL_BD_WATER || + element == EL_BD_GRAVITY_SWITCH) { return TRUE; } @@ -11680,6 +11715,7 @@ static void DrawPropertiesConfig(void) (properties_element == EL_BD_ACID ? 1 : 0) + (properties_element == EL_BD_REPLICATOR ? 1 : 0) + (properties_element == EL_BD_CREATURE_SWITCH ? 2 : 0) + + (properties_element == EL_BD_GRAVITY_SWITCH ? 2 : 0) + (properties_element == EL_EMC_MAGIC_BALL ? 2 : 0) + num_element_counters); @@ -11974,6 +12010,14 @@ static void DrawPropertiesConfig(void) MapCheckbuttonGadget(ED_CHECKBUTTON_ID_BD_CREATURES_TURN_ON_HATCHING); } + if (properties_element == EL_BD_GRAVITY_SWITCH) + { + MapSelectboxGadget(ED_SELECTBOX_ID_BD_GRAVITY_DIRECTION); + + MapCheckbuttonGadget(ED_CHECKBUTTON_ID_BD_GRAVITY_SWITCH_ACTIVE); + MapCheckbuttonGadget(ED_CHECKBUTTON_ID_BD_GRAVITY_AFFECTS_ALL); + } + if (properties_element == EL_BD_NUT) { MapDrawingArea(ED_DRAWING_ID_BD_NUT_CONTENT);