#define GADGET_ID_CHANGE_PLAYER (GADGET_ID_SELECTBOX_FIRST + 19)
#define GADGET_ID_CHANGE_PAGE (GADGET_ID_SELECTBOX_FIRST + 20)
#define GADGET_ID_CHANGE_REPLACE_WHEN (GADGET_ID_SELECTBOX_FIRST + 21)
-#define GADGET_ID_SELECT_CHANGE_PAGE (GADGET_ID_SELECTBOX_FIRST + 22)
-#define GADGET_ID_GROUP_CHOICE_MODE (GADGET_ID_SELECTBOX_FIRST + 23)
+#define GADGET_ID_ACTION_TYPE (GADGET_ID_SELECTBOX_FIRST + 22)
+#define GADGET_ID_ACTION_MODE (GADGET_ID_SELECTBOX_FIRST + 23)
+#define GADGET_ID_ACTION_ARG (GADGET_ID_SELECTBOX_FIRST + 24)
+#define GADGET_ID_SELECT_CHANGE_PAGE (GADGET_ID_SELECTBOX_FIRST + 25)
+#define GADGET_ID_GROUP_CHOICE_MODE (GADGET_ID_SELECTBOX_FIRST + 26)
/* textbutton identifiers */
-#define GADGET_ID_TEXTBUTTON_FIRST (GADGET_ID_SELECTBOX_FIRST + 24)
+#define GADGET_ID_TEXTBUTTON_FIRST (GADGET_ID_SELECTBOX_FIRST + 27)
#define GADGET_ID_PROPERTIES_INFO (GADGET_ID_TEXTBUTTON_FIRST + 0)
#define GADGET_ID_PROPERTIES_CONFIG (GADGET_ID_TEXTBUTTON_FIRST + 1)
#define GADGET_ID_CHANGE_USE_EXPLOSION (GADGET_ID_CHECKBUTTON_FIRST + 33)
#define GADGET_ID_CHANGE_ONLY_COMPLETE (GADGET_ID_CHECKBUTTON_FIRST + 34)
#define GADGET_ID_CHANGE_USE_RANDOM (GADGET_ID_CHECKBUTTON_FIRST + 35)
-#define GADGET_ID_CHANGE_DELAY (GADGET_ID_CHECKBUTTON_FIRST + 36)
-#define GADGET_ID_CHANGE_BY_DIRECT_ACT (GADGET_ID_CHECKBUTTON_FIRST + 37)
-#define GADGET_ID_CHANGE_BY_OTHER_ACT (GADGET_ID_CHECKBUTTON_FIRST + 38)
+#define GADGET_ID_CHANGE_USE_ACTION (GADGET_ID_CHECKBUTTON_FIRST + 36)
+#define GADGET_ID_CHANGE_DELAY (GADGET_ID_CHECKBUTTON_FIRST + 37)
+#define GADGET_ID_CHANGE_BY_DIRECT_ACT (GADGET_ID_CHECKBUTTON_FIRST + 38)
+#define GADGET_ID_CHANGE_BY_OTHER_ACT (GADGET_ID_CHECKBUTTON_FIRST + 39)
/* gadgets for buttons in element list */
-#define GADGET_ID_ELEMENTLIST_FIRST (GADGET_ID_CHECKBUTTON_FIRST + 39)
+#define GADGET_ID_ELEMENTLIST_FIRST (GADGET_ID_CHECKBUTTON_FIRST + 40)
#define GADGET_ID_ELEMENTLIST_LAST (GADGET_ID_ELEMENTLIST_FIRST + \
ED_NUM_ELEMENTLIST_BUTTONS - 1)
#define ED_SELECTBOX_ID_CHANGE_PLAYER 19
#define ED_SELECTBOX_ID_CHANGE_PAGE 20
#define ED_SELECTBOX_ID_CHANGE_REPLACE_WHEN 21
-#define ED_SELECTBOX_ID_SELECT_CHANGE_PAGE 22
-#define ED_SELECTBOX_ID_GROUP_CHOICE_MODE 23
+#define ED_SELECTBOX_ID_ACTION_TYPE 22
+#define ED_SELECTBOX_ID_ACTION_MODE 23
+#define ED_SELECTBOX_ID_ACTION_ARG 24
+#define ED_SELECTBOX_ID_SELECT_CHANGE_PAGE 25
+#define ED_SELECTBOX_ID_GROUP_CHOICE_MODE 26
-#define ED_NUM_SELECTBOX 24
+#define ED_NUM_SELECTBOX 27
#define ED_SELECTBOX_ID_LEVEL_FIRST ED_SELECTBOX_ID_TIME_OR_STEPS
#define ED_SELECTBOX_ID_LEVEL_LAST ED_SELECTBOX_ID_GAME_ENGINE_TYPE
#define ED_CHECKBUTTON_ID_CHANGE_USE_CONTENT 34
#define ED_CHECKBUTTON_ID_CHANGE_ONLY_COMPLETE 35
#define ED_CHECKBUTTON_ID_CHANGE_USE_RANDOM 36
+#define ED_CHECKBUTTON_ID_CHANGE_USE_ACTION 37
-#define ED_NUM_CHECKBUTTONS 37
+#define ED_NUM_CHECKBUTTONS 38
#define ED_CHECKBUTTON_ID_LEVEL_FIRST ED_CHECKBUTTON_ID_INITIAL_GRAVITY
#define ED_CHECKBUTTON_ID_LEVEL_LAST ED_CHECKBUTTON_ID_RANDOM_RESTRICTED
#define ED_CHECKBUTTON_ID_CUSTOM_LAST ED_CHECKBUTTON_ID_CUSTOM2_LAST
#define ED_CHECKBUTTON_ID_CHANGE_FIRST ED_CHECKBUTTON_ID_CUSTOM_CAN_CHANGE
-#define ED_CHECKBUTTON_ID_CHANGE_LAST ED_CHECKBUTTON_ID_CHANGE_USE_RANDOM
+#define ED_CHECKBUTTON_ID_CHANGE_LAST ED_CHECKBUTTON_ID_CHANGE_USE_ACTION
/* values for radiobutton gadgets */
#define ED_RADIOBUTTON_ID_PERCENTAGE 0
/* values for elements with count for collecting */
#define MIN_COLLECT_COUNT 0
-#define MAX_COLLECT_COUNT 100
+#define MAX_COLLECT_COUNT 255
/* values for random placement */
#define RANDOM_USE_PERCENTAGE 0
char *text;
} control_info[ED_NUM_CTRL_BUTTONS] =
{
+ /* note: some additional characters are already reserved for "cheat mode"
+ shortcuts (":XYZ" style) -- for details, see "events.c" */
+
{ 's', "draw single items" },
{ 'd', "draw connected items" },
{ 'l', "draw lines" },
static struct ValueTextInfo options_access_direction[] =
{
+ { MV_NO_DIRECTIONS, "no direction" },
{ MV_LEFT, "left" },
{ MV_RIGHT, "right" },
{ MV_UP, "up" },
static struct ValueTextInfo options_move_stepsize[] =
{
+ { 0, "not moving" },
{ 1, "very slow" },
{ 2, "slow" },
{ 4, "normal" },
{ CE_IMPACT, "impact (on something)" },
{ CE_SMASHED, "smashed (from above)" },
+ { CE_COUNT_AT_ZERO, "CE count at zero" },
{ -1, NULL }
};
static struct ValueTextInfo options_change_other_action[] =
{
- { CE_OTHER_GETS_TOUCHED, "player touches" },
- { CE_OTHER_GETS_PRESSED, "player presses" },
- { CE_OTHER_GETS_PUSHED, "player pushes" },
- { CE_OTHER_GETS_ENTERED, "player enters" },
- { CE_OTHER_GETS_LEFT, "player leaves" },
- { CE_OTHER_GETS_DIGGED, "player digs" },
- { CE_OTHER_GETS_COLLECTED, "player collects" },
- { CE_OTHER_GETS_DROPPED, "player drops/throws" },
- { CE_OTHER_IS_TOUCHING, "touching" },
+ { CE_PLAYER_TOUCHES_X, "player touches" },
+ { CE_PLAYER_PRESSES_X, "player presses" },
+ { CE_PLAYER_PUSHES_X, "player pushes" },
+ { CE_PLAYER_ENTERS_X, "player enters" },
+ { CE_PLAYER_LEAVES_X, "player leaves" },
+ { CE_PLAYER_DIGS_X, "player digs" },
+ { CE_PLAYER_COLLECTS_X, "player collects" },
+ { CE_PLAYER_DROPS_X, "player drops/throws" },
+ { CE_TOUCHING_X, "touching" },
#if 1
- { CE_OTHER_IS_HITTING, "hitting" },
- { CE_OTHER_GETS_HIT, "hit by" },
+ { CE_HITTING_X, "hitting" },
+ { CE_HIT_BY_X, "hit by" },
#endif
- { CE_OTHER_IS_SWITCHING, "switch of" },
- { CE_OTHER_IS_CHANGING, "change by page of" },
- { CE_OTHER_IS_EXPLODING, "explosion of" },
+ { CE_SWITCH_OF_X, "switch of" },
+ { CE_CHANGE_OF_X, "change by page of" },
+ { CE_EXPLOSION_OF_X, "explosion of" },
+ { CE_COUNT_AT_ZERO_OF_X, "CE count at zero of" },
{ -1, NULL }
};
{ -1, NULL }
};
+static struct ValueTextInfo options_action_type[] =
+{
+ { CA_NO_ACTION, "no action" },
+ { CA_EXIT_PLAYER, "exit player" },
+ { CA_KILL_PLAYER, "kill player" },
+ { CA_RESTART_LEVEL, "restart level" },
+ { CA_SHOW_ENVELOPE, "show envelope" },
+ { CA_ADD_KEY, "add key" },
+ { CA_DEL_KEY, "remove key" },
+ { CA_SET_PLAYER_SPEED, "set player speed" },
+ { CA_SET_GEMS, "set gems" },
+ { CA_SET_TIME, "set time" },
+ { CA_SET_SCORE, "set score" },
+ { CA_SET_CE_SCORE, "set CE score" },
+ { CA_SET_CE_COUNT, "set CE count" },
+ { CA_SET_DYNABOMB_NUMBER, "set bomb number" },
+ { CA_SET_DYNABOMB_SIZE, "set bomb size" },
+ { CA_SET_DYNABOMB_POWER, "set bomb power" },
+ { CA_TOGGLE_PLAYER_GRAVITY, "toggle gravity" },
+ { CA_ENABLE_PLAYER_GRAVITY, "enable gravity" },
+ { CA_DISABLE_PLAYER_GRAVITY, "disable gravity" },
+
+ { -1, NULL }
+};
+
+static struct ValueTextInfo options_action_mode[] =
+{
+ { CA_MODE_UNDEFINED, " " },
+ { CA_MODE_ADD, "+" },
+ { CA_MODE_SUBTRACT, "-" },
+ { CA_MODE_MULTIPLY, "*" },
+ { CA_MODE_DIVIDE, "/" },
+ { CA_MODE_SET, "=" },
+
+ { -1, NULL }
+};
+
+static struct ValueTextInfo options_action_arg[] =
+{
+ { CA_ARG_PLAYER_HEADLINE, "[player]" },
+ { CA_ARG_PLAYER_1, "1" },
+ { CA_ARG_PLAYER_2, "2" },
+ { CA_ARG_PLAYER_3, "3" },
+ { CA_ARG_PLAYER_4, "4" },
+ { CA_ARG_PLAYER_ANY, "any" },
+ { CA_ARG_PLAYER_TRIGGER, "trigger" },
+ { CA_ARG_UNDEFINED, " " },
+ { CA_ARG_NUMBER_HEADLINE, "[number]" },
+ { CA_ARG_0, "0" },
+ { CA_ARG_1, "1" },
+ { CA_ARG_2, "2" },
+ { CA_ARG_3, "3" },
+ { CA_ARG_4, "4" },
+ { CA_ARG_5, "5" },
+ { CA_ARG_10, "10" },
+ { CA_ARG_100, "100" },
+ { CA_ARG_1000, "1000" },
+ { CA_ARG_UNDEFINED, " " },
+ { CA_ARG_NUMBER_MIN, "min" },
+ { CA_ARG_NUMBER_MAX, "max" },
+ { CA_ARG_NUMBER_NORMAL, "normal" },
+ { CA_ARG_NUMBER_RESET, "reset" },
+ { CA_ARG_NUMBER_CE_SCORE, "CE score" },
+ { CA_ARG_NUMBER_CE_COUNT, "CE count" },
+ { CA_ARG_NUMBER_CE_DELAY, "CE delay" },
+ { CA_ARG_UNDEFINED, " " },
+ { CA_ARG_ELEMENT_HEADLINE, "[element]" },
+ { CA_ARG_ELEMENT_TARGET, "target" },
+ { CA_ARG_ELEMENT_TRIGGER, "trigger" },
+
+ { -1, NULL }
+};
+
static char options_change_page_strings[MAX_CHANGE_PAGES][10];
static struct ValueTextInfo options_change_page[MAX_CHANGE_PAGES + 1] =
{
&custom_element_change.replace_when,
"replace when", NULL, "which elements can be replaced"
},
+ {
+ ED_ELEMENT_SETTINGS_XPOS(1), ED_ELEMENT_SETTINGS_YPOS(13),
+ GADGET_ID_ACTION_TYPE, GADGET_ID_NONE,
+ -1,
+ options_action_type,
+ &custom_element_change.action_type,
+ NULL, NULL, "action on specified condition"
+ },
+ {
+ -1, ED_ELEMENT_SETTINGS_YPOS(13),
+ GADGET_ID_ACTION_MODE, GADGET_ID_ACTION_TYPE,
+ -1,
+ options_action_mode,
+ &custom_element_change.action_mode,
+ NULL, NULL, "action operator"
+ },
+ {
+ -1, ED_ELEMENT_SETTINGS_YPOS(13),
+ GADGET_ID_ACTION_ARG, GADGET_ID_ACTION_MODE,
+ -1,
+ options_action_arg,
+ &custom_element_change.action_arg,
+ NULL, NULL, "action parameter"
+ },
{
ED_ELEMENT_SETTINGS_XPOS(1), ED_ELEMENT_SETTINGS_YPOS(14),
GADGET_ID_SELECT_CHANGE_PAGE, GADGET_ID_NONE,
ED_ELEMENT_SETTINGS_XPOS(0), ED_ELEMENT_SETTINGS_YPOS(1),
GADGET_ID_CUSTOM_CAN_CHANGE, GADGET_ID_NONE,
&custom_element_change.can_change,
- NULL, "element changes to:", "element can change to other element"
+ NULL, "element changes to:", "change element on specified condition"
},
{
ED_ELEMENT_SETTINGS_XPOS(1), ED_ELEMENT_SETTINGS_YPOS(2),
&custom_element_change.use_random_replace,
NULL, NULL, "use percentage for random replace"
},
+ {
+ ED_ELEMENT_SETTINGS_XPOS(0), ED_ELEMENT_SETTINGS_YPOS(13),
+ GADGET_ID_CHANGE_USE_ACTION, GADGET_ID_NONE,
+ &custom_element_change.use_action,
+ NULL, NULL, "execute action on specified condition"
+ },
};
static struct
static int new_element2 = EL_EMPTY;
static int new_element3 = EL_SAND;
+#define IS_VALID_BUTTON(button) (button >= 1 && button <= 3)
#define BUTTON_ELEMENT(button) ((button) == 1 ? new_element1 : \
(button) == 2 ? new_element2 : \
(button) == 3 ? new_element3 : EL_EMPTY)
static int editor_el_emerald_mine_club[] =
{
- EL_EM_KEY_5,
- EL_EM_KEY_6,
- EL_EM_KEY_7,
- EL_EM_KEY_8,
+ EL_EMC_KEY_5,
+ EL_EMC_KEY_6,
+ EL_EMC_KEY_7,
+ EL_EMC_KEY_8,
- EL_EM_GATE_5,
- EL_EM_GATE_6,
- EL_EM_GATE_7,
- EL_EM_GATE_8,
+ EL_EMC_GATE_5,
+ EL_EMC_GATE_6,
+ EL_EMC_GATE_7,
+ EL_EMC_GATE_8,
- EL_EM_GATE_5_GRAY,
- EL_EM_GATE_6_GRAY,
- EL_EM_GATE_7_GRAY,
- EL_EM_GATE_8_GRAY,
+ EL_EMC_GATE_5_GRAY,
+ EL_EMC_GATE_6_GRAY,
+ EL_EMC_GATE_7_GRAY,
+ EL_EMC_GATE_8_GRAY,
EL_EMC_STEELWALL_1,
EL_EMC_STEELWALL_2,
EL_EMC_WALL_11,
EL_EMC_WALL_12,
+#if RELEASE_311
+ EL_EMPTY,
+#else
EL_EMC_ANDROID,
+#endif
EL_BALLOON,
EL_BALLOON_SWITCH_ANY,
+#if RELEASE_311
+ EL_EMPTY,
+#else
EL_BALLOON_SWITCH_NONE,
+#endif
EL_BALLOON_SWITCH_LEFT,
EL_BALLOON_SWITCH_RIGHT,
EL_EMC_GRASS,
EL_EMC_PLANT,
+#if RELEASE_311
+ EL_EMPTY,
+ EL_EMPTY,
+#else
EL_EMC_LENSES,
EL_EMC_MAGNIFIER,
+#endif
+#if RELEASE_311
+ EL_EMPTY,
+ EL_EMPTY,
+#else
EL_EMC_MAGIC_BALL,
EL_EMC_MAGIC_BALL_SWITCH,
+#endif
EL_SPRING,
+#if RELEASE_311
+ EL_EMPTY,
+#else
EL_EMC_SPRING_BUMPER,
+#endif
- EL_EMC_DRIPPER,
+#if RELEASE_311
EL_EMPTY,
+#else
+ EL_EMC_DRIPPER,
+#endif
+ EL_EMC_FAKE_GRASS,
EL_EMPTY,
EL_EMPTY,
};
HAS_CHANGE_EVENT(element, CE_BLOCKED) ? CE_BLOCKED :
HAS_CHANGE_EVENT(element, CE_IMPACT) ? CE_IMPACT :
HAS_CHANGE_EVENT(element, CE_SMASHED) ? CE_SMASHED :
+ HAS_CHANGE_EVENT(element, CE_COUNT_AT_ZERO) ? CE_COUNT_AT_ZERO :
custom_element_change.direct_action);
/* set "change by other element action" selectbox help value */
custom_element_change.other_action =
- (HAS_CHANGE_EVENT(element, CE_OTHER_GETS_TOUCHED) ? CE_OTHER_GETS_TOUCHED :
- HAS_CHANGE_EVENT(element, CE_OTHER_GETS_PRESSED) ? CE_OTHER_GETS_PRESSED :
- HAS_CHANGE_EVENT(element, CE_OTHER_GETS_PUSHED) ? CE_OTHER_GETS_PUSHED :
- HAS_CHANGE_EVENT(element, CE_OTHER_GETS_ENTERED) ? CE_OTHER_GETS_ENTERED :
- HAS_CHANGE_EVENT(element, CE_OTHER_GETS_LEFT) ? CE_OTHER_GETS_LEFT :
- HAS_CHANGE_EVENT(element, CE_OTHER_GETS_DIGGED) ? CE_OTHER_GETS_DIGGED :
- HAS_CHANGE_EVENT(element, CE_OTHER_GETS_COLLECTED) ? CE_OTHER_GETS_COLLECTED :
- HAS_CHANGE_EVENT(element, CE_OTHER_GETS_DROPPED) ? CE_OTHER_GETS_DROPPED :
- HAS_CHANGE_EVENT(element, CE_OTHER_IS_TOUCHING) ? CE_OTHER_IS_TOUCHING :
- HAS_CHANGE_EVENT(element, CE_OTHER_IS_HITTING) ? CE_OTHER_IS_HITTING :
- HAS_CHANGE_EVENT(element, CE_OTHER_GETS_HIT) ? CE_OTHER_GETS_HIT :
- HAS_CHANGE_EVENT(element, CE_OTHER_IS_SWITCHING) ? CE_OTHER_IS_SWITCHING :
- HAS_CHANGE_EVENT(element, CE_OTHER_IS_CHANGING) ? CE_OTHER_IS_CHANGING :
- HAS_CHANGE_EVENT(element, CE_OTHER_IS_EXPLODING) ? CE_OTHER_IS_EXPLODING :
+ (HAS_CHANGE_EVENT(element, CE_PLAYER_TOUCHES_X) ? CE_PLAYER_TOUCHES_X :
+ HAS_CHANGE_EVENT(element, CE_PLAYER_PRESSES_X) ? CE_PLAYER_PRESSES_X :
+ HAS_CHANGE_EVENT(element, CE_PLAYER_PUSHES_X) ? CE_PLAYER_PUSHES_X :
+ HAS_CHANGE_EVENT(element, CE_PLAYER_ENTERS_X) ? CE_PLAYER_ENTERS_X :
+ HAS_CHANGE_EVENT(element, CE_PLAYER_LEAVES_X) ? CE_PLAYER_LEAVES_X :
+ HAS_CHANGE_EVENT(element, CE_PLAYER_DIGS_X) ? CE_PLAYER_DIGS_X :
+ HAS_CHANGE_EVENT(element, CE_PLAYER_COLLECTS_X) ? CE_PLAYER_COLLECTS_X :
+ HAS_CHANGE_EVENT(element, CE_PLAYER_DROPS_X) ? CE_PLAYER_DROPS_X :
+ HAS_CHANGE_EVENT(element, CE_TOUCHING_X) ? CE_TOUCHING_X :
+ HAS_CHANGE_EVENT(element, CE_HITTING_X) ? CE_HITTING_X :
+ HAS_CHANGE_EVENT(element, CE_HIT_BY_X) ? CE_HIT_BY_X :
+ HAS_CHANGE_EVENT(element, CE_SWITCH_OF_X) ? CE_SWITCH_OF_X :
+ HAS_CHANGE_EVENT(element, CE_CHANGE_OF_X) ? CE_CHANGE_OF_X :
+ HAS_CHANGE_EVENT(element, CE_EXPLOSION_OF_X) ? CE_EXPLOSION_OF_X :
+ HAS_CHANGE_EVENT(element, CE_COUNT_AT_ZERO_OF_X) ? CE_COUNT_AT_ZERO_OF_X :
custom_element_change.other_action);
}
custom_element_change_events[CE_BLOCKED] = FALSE;
custom_element_change_events[CE_IMPACT] = FALSE;
custom_element_change_events[CE_SMASHED] = FALSE;
+ custom_element_change_events[CE_COUNT_AT_ZERO] = FALSE;
custom_element_change_events[custom_element_change.direct_action] =
custom_element_change_events[CE_BY_DIRECT_ACTION];
/* set other element action change event from checkbox and selectbox */
- custom_element_change_events[CE_OTHER_GETS_TOUCHED] = FALSE;
- custom_element_change_events[CE_OTHER_GETS_PRESSED] = FALSE;
- custom_element_change_events[CE_OTHER_GETS_PUSHED] = FALSE;
- custom_element_change_events[CE_OTHER_GETS_ENTERED] = FALSE;
- custom_element_change_events[CE_OTHER_GETS_LEFT] = FALSE;
- custom_element_change_events[CE_OTHER_GETS_DIGGED] = FALSE;
- custom_element_change_events[CE_OTHER_GETS_COLLECTED] = FALSE;
- custom_element_change_events[CE_OTHER_GETS_DROPPED] = FALSE;
- custom_element_change_events[CE_OTHER_IS_TOUCHING] = FALSE;
- custom_element_change_events[CE_OTHER_IS_HITTING] = FALSE;
- custom_element_change_events[CE_OTHER_GETS_HIT] = FALSE;
- custom_element_change_events[CE_OTHER_IS_SWITCHING] = FALSE;
- custom_element_change_events[CE_OTHER_IS_CHANGING] = FALSE;
- custom_element_change_events[CE_OTHER_IS_EXPLODING] = FALSE;
+ custom_element_change_events[CE_PLAYER_TOUCHES_X] = FALSE;
+ custom_element_change_events[CE_PLAYER_PRESSES_X] = FALSE;
+ custom_element_change_events[CE_PLAYER_PUSHES_X] = FALSE;
+ custom_element_change_events[CE_PLAYER_ENTERS_X] = FALSE;
+ custom_element_change_events[CE_PLAYER_LEAVES_X] = FALSE;
+ custom_element_change_events[CE_PLAYER_DIGS_X] = FALSE;
+ custom_element_change_events[CE_PLAYER_COLLECTS_X] = FALSE;
+ custom_element_change_events[CE_PLAYER_DROPS_X] = FALSE;
+ custom_element_change_events[CE_TOUCHING_X] = FALSE;
+ custom_element_change_events[CE_HITTING_X] = FALSE;
+ custom_element_change_events[CE_HIT_BY_X] = FALSE;
+ custom_element_change_events[CE_SWITCH_OF_X] = FALSE;
+ custom_element_change_events[CE_CHANGE_OF_X] = FALSE;
+ custom_element_change_events[CE_EXPLOSION_OF_X] = FALSE;
+ custom_element_change_events[CE_COUNT_AT_ZERO_OF_X] = FALSE;
custom_element_change_events[custom_element_change.other_action] =
custom_element_change_events[CE_BY_OTHER_ACTION];
{ EL_EM_KEY_3_FILE, &level.score[SC_KEY], TEXT_COLLECTING },
{ EL_EM_KEY_4_FILE, &level.score[SC_KEY], TEXT_COLLECTING },
#endif
- { EL_EM_KEY_5, &level.score[SC_KEY], TEXT_COLLECTING },
- { EL_EM_KEY_6, &level.score[SC_KEY], TEXT_COLLECTING },
- { EL_EM_KEY_7, &level.score[SC_KEY], TEXT_COLLECTING },
- { EL_EM_KEY_8, &level.score[SC_KEY], TEXT_COLLECTING },
+ { EL_EMC_KEY_5, &level.score[SC_KEY], TEXT_COLLECTING },
+ { EL_EMC_KEY_6, &level.score[SC_KEY], TEXT_COLLECTING },
+ { EL_EMC_KEY_7, &level.score[SC_KEY], TEXT_COLLECTING },
+ { EL_EMC_KEY_8, &level.score[SC_KEY], TEXT_COLLECTING },
{ EL_AMOEBA_WET, &level.amoeba_speed, TEXT_AMOEBA_SPEED },
{ EL_AMOEBA_DRY, &level.amoeba_speed, TEXT_AMOEBA_SPEED },
{ EL_AMOEBA_FULL, &level.amoeba_speed, TEXT_AMOEBA_SPEED },
#define CB_BRUSH_TO_LEVEL 2
#define CB_DELETE_OLD_CURSOR 3
#define CB_DUMP_BRUSH 4
+#define CB_DUMP_BRUSH_SMALL 5
static void CopyBrushExt(int from_x, int from_y, int to_x, int to_y,
int button, int mode)
int new_element = BUTTON_ELEMENT(button);
int x, y;
- if (mode == CB_DUMP_BRUSH)
+ if (mode == CB_DUMP_BRUSH ||
+ mode == CB_DUMP_BRUSH_SMALL)
{
if (!draw_with_brush)
{
if (IS_CUSTOM_ELEMENT(element))
element_mapped = EL_CUSTOM_START;
- else if (element > EL_ENVELOPE_4)
- element_mapped = EL_CHAR_QUESTION; /* change to EL_UNKNOWN ... */
+ else if (IS_GROUP_ELEMENT(element))
+ element_mapped = EL_GROUP_START;
+ else if (element >= NUM_FILE_ELEMENTS)
+ element_mapped = EL_UNKNOWN;
- printf("`%03d", element_mapped);
+ printf("%c%03d", (mode == CB_DUMP_BRUSH ? '`' : 'ΒΈ'), element_mapped);
#endif
}
CopyBrushExt(0, 0, 0, 0, 0, CB_DUMP_BRUSH);
}
+void DumpBrush_Small()
+{
+ CopyBrushExt(0, 0, 0, 0, 0, CB_DUMP_BRUSH_SMALL);
+}
+
static void FloodFill(int from_x, int from_y, int fill_element)
{
int i,x,y;
if (!started_inside_drawing_area)
return;
+#if 1
+ if (!IS_VALID_BUTTON(button) && !button_release_event)
+ return;
+#else
if (!button && !button_release_event)
return;
+#endif
/* automatically switch to 'single item' drawing mode, if needed */
actual_drawing_function =
if ((level_changed && pressed) || (!level_changed && released))
return;
- if (level_changed && !Request("Level has changed! Discard changes ?",
+ if (level_changed && !Request("Level has changed ! Discard changes ?",
REQ_ASK))
{
if (gadget_id == counterbutton_info[counter_id].gadget_id_text)
int new_element = BUTTON_ELEMENT(button);
int x, y;
+#if 0
+ /* MAKES PROBLEMS WITH ELEMENT LIST SCROLLBAR AND IS PROBABLY NOT NEEDED */
+ /* !!! CHECK WHAT HAPPENS WHEN MOUSE WHEEL IS USED OVER ELEMENT LIST !!! */
+
+ if (!IS_VALID_BUTTON(button))
+ return;
+#endif
+
if (edit_mode == ED_MODE_DRAWING && drawing_function == GADGET_ID_TEXT)
DrawLevelText(0, 0, 0, TEXT_END);
{
if (!ask_if_level_has_changed ||
!LevelChanged() ||
- Request("Level has changed! Exit without saving ?",
+ Request("Level has changed ! Exit without saving ?",
REQ_ASK | REQ_STAY_OPEN))
{
#if 1