+static struct ValueTextInfo options_walk_to_action[] =
+{
+ { EP_DIGGABLE, "diggable" },
+ { EP_COLLECTIBLE, "collectible" },
+ { EP_PUSHABLE, "pushable" },
+ { -1, NULL }
+};
+static int index_walk_to_action = 0;
+
+static struct ValueTextInfo options_move_pattern[] =
+{
+ { MV_LEFT, "left" },
+ { MV_RIGHT, "right" },
+ { MV_UP, "up" },
+ { MV_DOWN, "down" },
+ { MV_HORIZONTAL, "horizontal" },
+ { MV_VERTICAL, "vertical" },
+ { MV_ALL_DIRECTIONS, "all directions" },
+ { MV_TOWARDS_PLAYER, "towards player" },
+ { MV_AWAY_FROM_PLAYER, "away from player" },
+ { MV_ALONG_LEFT_SIDE, "along left side" },
+ { MV_ALONG_RIGHT_SIDE, "along right side" },
+ { -1, NULL }
+};
+static int index_move_pattern = 0;
+
+static struct ValueTextInfo options_move_direction[] =
+{
+ { MV_NO_MOVING, "automatic" },
+ { MV_LEFT, "left" },
+ { MV_RIGHT, "right" },
+ { MV_UP, "up" },
+ { MV_DOWN, "down" },
+ { -1, NULL }
+};
+static int index_move_direction = 0;
+
+static struct ValueTextInfo options_consistency[] =
+{
+ { EP_INDESTRUCTIBLE, "indestructible" },
+ { EP_CAN_EXPLODE_BY_FIRE, "can explode by fire" },
+ { EP_CAN_EXPLODE_SMASHED, "can explode when smashed" },
+ { EP_CAN_EXPLODE_IMPACT, "can explode on impact" },
+ { -1, NULL }
+};
+static int index_consistency = 0;
+
+static struct ValueTextInfo options_deadliness[] =
+{
+ { EP_DONT_RUN_INTO, "running into" },
+ { EP_DONT_COLLIDE_WITH, "colliding with" },
+ { EP_DONT_TOUCH, "touching" },
+ { -1, NULL }
+};
+static int index_deadliness = 0;
+
+static struct ValueTextInfo options_walkable_layer[] =
+{
+ { EP_WALKABLE_OVER, "over" },
+ { EP_WALKABLE_INSIDE, "inside" },
+ { EP_WALKABLE_UNDER, "under" },
+ { -1, NULL }
+};
+static int index_walkable_layer = 0;
+
+static struct ValueTextInfo options_time_units[] =
+{
+ { 50, "seconds" },
+ { 1, "frames" },
+ { -1, NULL }
+};
+static int index_time_units = 0;
+
+static struct ValueTextInfo options_change_player_action[] =
+{
+ { CE_PRESSED_BY_PLAYER, "pressed" },
+ { CE_TOUCHED_BY_PLAYER, "touched" },
+ { -1, NULL }
+};
+static int index_change_player_action = 0, value_change_player_action = 0;
+
+static struct ValueTextInfo options_change_cause[] =
+{
+ { 1, "specified delay" },
+ { 2, "impact (active)" },
+ { 3, "impact (passive)" },
+ { 4, "touched by player" },
+ { 5, "pressed by player" },
+ { -1, NULL }
+};
+static int index_change_cause = 0, value_change_cause = 0;
+
+static struct
+{
+ int x, y;
+ int gadget_id;
+ int size; /* char size of selectbox or '-1' (dynamically determined) */
+ struct ValueTextInfo *options;
+ int *index, *value;
+ char *text_left, *text_right, *infotext;
+} selectbox_info[ED_NUM_SELECTBOX] =
+{
+ {
+ ED_SETTINGS_XPOS(1), ED_SETTINGS_YPOS(4),
+ GADGET_ID_CUSTOM_WALK_TO_ACTION,
+ -1,
+ options_walk_to_action, &index_walk_to_action,
+ &custom_element.walk_to_action,
+ NULL, NULL, "diggable/collectible/pushable"
+ },
+ {
+ ED_SETTINGS_XPOS(1), ED_SETTINGS_YPOS(3),
+ GADGET_ID_CUSTOM_CONSISTENCY,
+ -1,
+ options_consistency, &index_consistency,
+ &custom_element.consistency,
+ NULL, "to", "consistency/destructibility"
+ },
+ {
+ ED_SETTINGS_XPOS(1), ED_SETTINGS_YPOS(2),
+ GADGET_ID_CUSTOM_DEADLINESS,
+ -1,
+ options_deadliness, &index_deadliness,
+ &custom_element.deadliness,
+ "deadly when", NULL, "deadliness of element"
+ },
+ {
+ ED_SETTINGS_XPOS(1), ED_SETTINGS_YPOS(6),
+ GADGET_ID_CUSTOM_MOVE_PATTERN,
+ -1,
+ options_move_pattern, &index_move_pattern,
+ &custom_element.move_pattern,
+ "can move", NULL, "element move direction"
+ },
+ {
+ ED_SETTINGS_XPOS(1), ED_SETTINGS_YPOS(7),
+ GADGET_ID_CUSTOM_MOVE_DIRECTION,
+ -1,
+ options_move_direction, &index_move_direction,
+ &custom_element.move_direction_initial,
+ "starts moving", NULL, "initial element move direction"
+ },
+ {
+ ED_SETTINGS_XPOS(1), ED_SETTINGS_YPOS(13),
+ GADGET_ID_CUSTOM_WALKABLE_LAYER,
+ -1,
+ options_walkable_layer, &index_walkable_layer,
+ &custom_element.walkable_layer,
+ "player can walk", NULL, "layer where player can walk"
+ },
+ {
+ ED_SETTINGS_XPOS(2), ED_SETTINGS_YPOS(4),
+ GADGET_ID_CHANGE_TIME_UNITS,
+ -1,
+ options_time_units, &index_time_units,
+ &custom_element.change.delay_frames,
+ "delay time given in", NULL, "delay time units for change"
+ },
+ {
+ ED_SETTINGS_XPOS(2), ED_SETTINGS_YPOS(5),
+ GADGET_ID_CHANGE_PLAYER_ACTION,
+ -1,
+ options_change_player_action, &index_change_player_action,
+ &value_change_player_action,
+ NULL, "by player", "type of player contact"
+ },
+ {
+ ED_SETTINGS_XPOS(0), ED_SETTINGS_YPOS(10),
+ GADGET_ID_CHANGE_CAUSE,
+ -1,
+ options_change_cause, &index_change_cause,
+ &value_change_cause,
+ "test:", NULL, "test-selectbox entry"
+ },
+};
+
+static struct
+{
+ int x, y;
+ int gadget_id;
+ int size;
+ char *text, *infotext;
+} textbutton_info[ED_NUM_TEXTBUTTON] =
+{
+ {
+ ED_SETTINGS_XPOS(0), ED_COUNTER_YPOS(1),
+ GADGET_ID_PROPERTIES_INFO,
+ 11, "Information", "Show information about element"
+ },
+ {
+ ED_SETTINGS_XPOS(0) + 166, ED_COUNTER_YPOS(1),
+ GADGET_ID_PROPERTIES_CONFIG,
+ 11, "Configure", "Configure element properties"
+ },
+ {
+ ED_SETTINGS_XPOS(0) + 332, ED_COUNTER_YPOS(1),
+ GADGET_ID_PROPERTIES_ADVANCED,
+ 11, "Advanced", "Advanced element configuration"
+ },
+ {
+ ED_SETTINGS_XPOS(0) + 262, ED_SETTINGS_YPOS(12),
+ GADGET_ID_SAVE_AS_TEMPLATE,
+ -1, "Save as template", "Save current settings as new template"
+ },
+};
+