X-Git-Url: https://git.artsoft.org/?a=blobdiff_plain;f=src%2Feditor.c;h=5a567832af99981e765126f20de38453970183b6;hb=4130cb786738fca2739bfc5cd13b185ba7df24bb;hp=8f921bc60137ace0fedb008facc034830120926b;hpb=cb97a0d81529dc81696e5df8e17083b30dfe633e;p=rocksndiamonds.git diff --git a/src/editor.c b/src/editor.c index 8f921bc6..5a567832 100644 --- a/src/editor.c +++ b/src/editor.c @@ -439,31 +439,32 @@ /* selectbox identifiers */ #define GADGET_ID_SELECTBOX_FIRST (GADGET_ID_TEXT_AREA_FIRST + 1) -#define GADGET_ID_CUSTOM_WALK_TO_ACTION (GADGET_ID_SELECTBOX_FIRST + 0) -#define GADGET_ID_CUSTOM_CONSISTENCY (GADGET_ID_SELECTBOX_FIRST + 1) -#define GADGET_ID_CUSTOM_DEADLINESS (GADGET_ID_SELECTBOX_FIRST + 2) -#define GADGET_ID_CUSTOM_MOVE_PATTERN (GADGET_ID_SELECTBOX_FIRST + 3) -#define GADGET_ID_CUSTOM_MOVE_DIRECTION (GADGET_ID_SELECTBOX_FIRST + 4) -#define GADGET_ID_CUSTOM_MOVE_STEPSIZE (GADGET_ID_SELECTBOX_FIRST + 5) -#define GADGET_ID_CUSTOM_MOVE_LEAVE_TYPE (GADGET_ID_SELECTBOX_FIRST + 6) -#define GADGET_ID_CUSTOM_SMASH_TARGETS (GADGET_ID_SELECTBOX_FIRST + 7) -#define GADGET_ID_CUSTOM_SLIPPERY_TYPE (GADGET_ID_SELECTBOX_FIRST + 8) -#define GADGET_ID_CUSTOM_ACCESS_TYPE (GADGET_ID_SELECTBOX_FIRST + 9) -#define GADGET_ID_CUSTOM_ACCESS_LAYER (GADGET_ID_SELECTBOX_FIRST + 10) -#define GADGET_ID_CUSTOM_ACCESS_PROTECTED (GADGET_ID_SELECTBOX_FIRST + 11) -#define GADGET_ID_CUSTOM_ACCESS_DIRECTION (GADGET_ID_SELECTBOX_FIRST + 12) -#define GADGET_ID_CHANGE_TIME_UNITS (GADGET_ID_SELECTBOX_FIRST + 13) -#define GADGET_ID_CHANGE_DIRECT_ACTION (GADGET_ID_SELECTBOX_FIRST + 14) -#define GADGET_ID_CHANGE_OTHER_ACTION (GADGET_ID_SELECTBOX_FIRST + 15) -#define GADGET_ID_CHANGE_SIDE (GADGET_ID_SELECTBOX_FIRST + 16) -#define GADGET_ID_CHANGE_PLAYER (GADGET_ID_SELECTBOX_FIRST + 17) -#define GADGET_ID_CHANGE_PAGE (GADGET_ID_SELECTBOX_FIRST + 18) -#define GADGET_ID_CHANGE_POWER (GADGET_ID_SELECTBOX_FIRST + 19) -#define GADGET_ID_SELECT_CHANGE_PAGE (GADGET_ID_SELECTBOX_FIRST + 20) -#define GADGET_ID_GROUP_CHOICE_MODE (GADGET_ID_SELECTBOX_FIRST + 21) +#define GADGET_ID_TIME_OR_STEPS (GADGET_ID_SELECTBOX_FIRST + 0) +#define GADGET_ID_CUSTOM_WALK_TO_ACTION (GADGET_ID_SELECTBOX_FIRST + 1) +#define GADGET_ID_CUSTOM_CONSISTENCY (GADGET_ID_SELECTBOX_FIRST + 2) +#define GADGET_ID_CUSTOM_DEADLINESS (GADGET_ID_SELECTBOX_FIRST + 3) +#define GADGET_ID_CUSTOM_MOVE_PATTERN (GADGET_ID_SELECTBOX_FIRST + 4) +#define GADGET_ID_CUSTOM_MOVE_DIRECTION (GADGET_ID_SELECTBOX_FIRST + 5) +#define GADGET_ID_CUSTOM_MOVE_STEPSIZE (GADGET_ID_SELECTBOX_FIRST + 6) +#define GADGET_ID_CUSTOM_MOVE_LEAVE_TYPE (GADGET_ID_SELECTBOX_FIRST + 7) +#define GADGET_ID_CUSTOM_SMASH_TARGETS (GADGET_ID_SELECTBOX_FIRST + 8) +#define GADGET_ID_CUSTOM_SLIPPERY_TYPE (GADGET_ID_SELECTBOX_FIRST + 9) +#define GADGET_ID_CUSTOM_ACCESS_TYPE (GADGET_ID_SELECTBOX_FIRST + 10) +#define GADGET_ID_CUSTOM_ACCESS_LAYER (GADGET_ID_SELECTBOX_FIRST + 11) +#define GADGET_ID_CUSTOM_ACCESS_PROTECTED (GADGET_ID_SELECTBOX_FIRST + 12) +#define GADGET_ID_CUSTOM_ACCESS_DIRECTION (GADGET_ID_SELECTBOX_FIRST + 13) +#define GADGET_ID_CHANGE_TIME_UNITS (GADGET_ID_SELECTBOX_FIRST + 14) +#define GADGET_ID_CHANGE_DIRECT_ACTION (GADGET_ID_SELECTBOX_FIRST + 15) +#define GADGET_ID_CHANGE_OTHER_ACTION (GADGET_ID_SELECTBOX_FIRST + 16) +#define GADGET_ID_CHANGE_SIDE (GADGET_ID_SELECTBOX_FIRST + 17) +#define GADGET_ID_CHANGE_PLAYER (GADGET_ID_SELECTBOX_FIRST + 18) +#define GADGET_ID_CHANGE_PAGE (GADGET_ID_SELECTBOX_FIRST + 19) +#define GADGET_ID_CHANGE_POWER (GADGET_ID_SELECTBOX_FIRST + 20) +#define GADGET_ID_SELECT_CHANGE_PAGE (GADGET_ID_SELECTBOX_FIRST + 21) +#define GADGET_ID_GROUP_CHOICE_MODE (GADGET_ID_SELECTBOX_FIRST + 22) /* textbutton identifiers */ -#define GADGET_ID_TEXTBUTTON_FIRST (GADGET_ID_SELECTBOX_FIRST + 22) +#define GADGET_ID_TEXTBUTTON_FIRST (GADGET_ID_SELECTBOX_FIRST + 23) #define GADGET_ID_PROPERTIES_INFO (GADGET_ID_TEXTBUTTON_FIRST + 0) #define GADGET_ID_PROPERTIES_CONFIG (GADGET_ID_TEXTBUTTON_FIRST + 1) @@ -627,30 +628,34 @@ #define ED_TEXTAREA_ID_LEVEL_LAST ED_TEXTAREA_ID_ENVELOPE /* values for selectbox gadgets */ -#define ED_SELECTBOX_ID_CUSTOM_ACCESS_TYPE 0 -#define ED_SELECTBOX_ID_CUSTOM_ACCESS_LAYER 1 -#define ED_SELECTBOX_ID_CUSTOM_ACCESS_PROTECTED 2 -#define ED_SELECTBOX_ID_CUSTOM_ACCESS_DIRECTION 3 -#define ED_SELECTBOX_ID_CUSTOM_WALK_TO_ACTION 4 -#define ED_SELECTBOX_ID_CUSTOM_MOVE_PATTERN 5 -#define ED_SELECTBOX_ID_CUSTOM_MOVE_DIRECTION 6 -#define ED_SELECTBOX_ID_CUSTOM_MOVE_STEPSIZE 7 -#define ED_SELECTBOX_ID_CUSTOM_MOVE_LEAVE_TYPE 8 -#define ED_SELECTBOX_ID_CUSTOM_SMASH_TARGETS 9 -#define ED_SELECTBOX_ID_CUSTOM_SLIPPERY_TYPE 10 -#define ED_SELECTBOX_ID_CUSTOM_DEADLINESS 11 -#define ED_SELECTBOX_ID_CUSTOM_CONSISTENCY 12 -#define ED_SELECTBOX_ID_CHANGE_TIME_UNITS 13 -#define ED_SELECTBOX_ID_CHANGE_DIRECT_ACTION 14 -#define ED_SELECTBOX_ID_CHANGE_OTHER_ACTION 15 -#define ED_SELECTBOX_ID_CHANGE_SIDE 16 -#define ED_SELECTBOX_ID_CHANGE_PLAYER 17 -#define ED_SELECTBOX_ID_CHANGE_PAGE 18 -#define ED_SELECTBOX_ID_CHANGE_POWER 19 -#define ED_SELECTBOX_ID_SELECT_CHANGE_PAGE 20 -#define ED_SELECTBOX_ID_GROUP_CHOICE_MODE 21 - -#define ED_NUM_SELECTBOX 22 +#define ED_SELECTBOX_ID_TIME_OR_STEPS 0 +#define ED_SELECTBOX_ID_CUSTOM_ACCESS_TYPE 1 +#define ED_SELECTBOX_ID_CUSTOM_ACCESS_LAYER 2 +#define ED_SELECTBOX_ID_CUSTOM_ACCESS_PROTECTED 3 +#define ED_SELECTBOX_ID_CUSTOM_ACCESS_DIRECTION 4 +#define ED_SELECTBOX_ID_CUSTOM_WALK_TO_ACTION 5 +#define ED_SELECTBOX_ID_CUSTOM_MOVE_PATTERN 6 +#define ED_SELECTBOX_ID_CUSTOM_MOVE_DIRECTION 7 +#define ED_SELECTBOX_ID_CUSTOM_MOVE_STEPSIZE 8 +#define ED_SELECTBOX_ID_CUSTOM_MOVE_LEAVE_TYPE 9 +#define ED_SELECTBOX_ID_CUSTOM_SMASH_TARGETS 10 +#define ED_SELECTBOX_ID_CUSTOM_SLIPPERY_TYPE 11 +#define ED_SELECTBOX_ID_CUSTOM_DEADLINESS 12 +#define ED_SELECTBOX_ID_CUSTOM_CONSISTENCY 13 +#define ED_SELECTBOX_ID_CHANGE_TIME_UNITS 14 +#define ED_SELECTBOX_ID_CHANGE_DIRECT_ACTION 15 +#define ED_SELECTBOX_ID_CHANGE_OTHER_ACTION 16 +#define ED_SELECTBOX_ID_CHANGE_SIDE 17 +#define ED_SELECTBOX_ID_CHANGE_PLAYER 18 +#define ED_SELECTBOX_ID_CHANGE_PAGE 19 +#define ED_SELECTBOX_ID_CHANGE_POWER 20 +#define ED_SELECTBOX_ID_SELECT_CHANGE_PAGE 21 +#define ED_SELECTBOX_ID_GROUP_CHOICE_MODE 22 + +#define ED_NUM_SELECTBOX 23 + +#define ED_SELECTBOX_ID_LEVEL_FIRST ED_SELECTBOX_ID_TIME_OR_STEPS +#define ED_SELECTBOX_ID_LEVEL_LAST ED_SELECTBOX_ID_TIME_OR_STEPS #define ED_SELECTBOX_ID_CUSTOM1_FIRST ED_SELECTBOX_ID_CUSTOM_ACCESS_TYPE #define ED_SELECTBOX_ID_CUSTOM1_LAST ED_SELECTBOX_ID_CUSTOM_SLIPPERY_TYPE @@ -913,7 +918,7 @@ static struct GADGET_ID_LEVEL_GEMSLIMIT_DOWN, GADGET_ID_LEVEL_GEMSLIMIT_UP, GADGET_ID_LEVEL_GEMSLIMIT_TEXT, GADGET_ID_NONE, &level.gems_needed, - "number of emeralds to collect:", NULL, NULL + "number of gems to collect:", NULL, NULL }, { ED_SETTINGS_XPOS(0), ED_COUNTER_YPOS(4), @@ -921,7 +926,7 @@ static struct GADGET_ID_LEVEL_TIMELIMIT_DOWN, GADGET_ID_LEVEL_TIMELIMIT_UP, GADGET_ID_LEVEL_TIMELIMIT_TEXT, GADGET_ID_NONE, &level.time, - "time available to solve level:", NULL, "(0 => no time limit)" + "time or step limit to solve level:", NULL, NULL }, { ED_SETTINGS_XPOS(0), ED_COUNTER_YPOS(5), @@ -929,7 +934,7 @@ static struct GADGET_ID_LEVEL_TIMESCORE_DOWN, GADGET_ID_LEVEL_TIMESCORE_UP, GADGET_ID_LEVEL_TIMESCORE_TEXT, GADGET_ID_NONE, &level.score[SC_TIME_BONUS], - "score for each 10 seconds left:", NULL, NULL + "score for each 10 sec/steps left:", NULL, NULL }, { ED_SETTINGS_XPOS(0), ED_COUNTER2_YPOS(8), @@ -1134,6 +1139,14 @@ static struct } }; +static struct ValueTextInfo options_time_or_steps[] = +{ + { 0, "seconds" }, + { 1, "steps" }, + + { -1, NULL } +}; + static struct ValueTextInfo options_access_type[] = { { EP_WALKABLE, "walkable" }, @@ -1440,6 +1453,17 @@ static struct char *text_left, *text_right, *infotext; } selectbox_info[ED_NUM_SELECTBOX] = { + /* ---------- level and editor settings ---------------------------------- */ + + { + -1, ED_COUNTER_YPOS(4), + GADGET_ID_TIME_OR_STEPS, GADGET_ID_LEVEL_TIMELIMIT_UP, + -1, + options_time_or_steps, + &level.use_step_counter, + NULL, "(0 => no limit)", "time or step limit" + }, + /* ---------- element settings: configure 1 (custom elements) ----------- */ { @@ -5769,7 +5793,7 @@ static void CopyClassicElementPropertiesToEditor(int element) if (bit_nr > -1) custom_element_properties[EP_CAN_MOVE_INTO_ACID] = - ((level.can_move_into_acid & (1 << bit_nr)) != 0); + ((level.can_move_into_acid_bits & (1 << bit_nr)) != 0); } #endif } @@ -5945,10 +5969,10 @@ static void CopyClassicElementPropertiesToGame(int element) if (bit_nr > -1) { - level.can_move_into_acid &= ~(1 << bit_nr); + level.can_move_into_acid_bits &= ~(1 << bit_nr); if (custom_element_properties[EP_CAN_MOVE_INTO_ACID]) - level.can_move_into_acid |= (1 << bit_nr); + level.can_move_into_acid_bits |= (1 << bit_nr); } } #endif @@ -6258,6 +6282,10 @@ static void DrawLevelInfoWindow() for (i = ED_COUNTER_ID_LEVEL_FIRST; i <= ED_COUNTER_ID_LEVEL_LAST; i++) MapCounterButtons(i); + /* draw selectbox gadgets */ + for (i = ED_SELECTBOX_ID_LEVEL_FIRST; i <= ED_SELECTBOX_ID_LEVEL_LAST; i++) + MapSelectboxGadget(i); + /* draw checkbutton gadgets */ for (i=ED_CHECKBUTTON_ID_LEVEL_FIRST; i <= ED_CHECKBUTTON_ID_LEVEL_LAST; i++) MapCheckbuttonGadget(i);