#define ED_SETTINGS_LEVEL_TABS_X (editor.settings.tabs.x)
#define ED_SETTINGS_LEVEL_TABS_Y (editor.settings.tabs.y)
+#define ED_SETTINGS_ENGINE_TABS_X (editor.settings.tabs.x)
+#define ED_SETTINGS_ENGINE_TABS_Y (editor.settings.tabs.y + \
+ ED_TABBUTTON_YSIZE + \
+ ED_GADGET_TINY_DISTANCE + \
+ ED_TAB_BAR_HEIGHT + \
+ ED_GADGET_TEXT_DISTANCE)
#define ED_SETTINGS_ELEMENT_TABS_X (editor.settings.tabs.x)
#define ED_SETTINGS_ELEMENT_TABS_Y (editor.settings.tabs.y + \
editor.settings.tabs.yoffset2)
ED_SETTINGS_TABS_YOFFSET + \
getFontHeight(FONT_TEXT_1) + \
ED_GADGET_TEXT_DISTANCE)
+#define ED_ENGINE_TABS_XSTART (ED_SETTINGS_ENGINE_TABS_X)
+#define ED_ENGINE_TABS_YSTART (ED_SETTINGS_ENGINE_TABS_Y)
+#define ED_ENGINE_SETTINGS_XSTART (ED_SETTINGS_ENGINE_TABS_X + \
+ ED_SETTINGS_TABS_XOFFSET)
+#define ED_ENGINE_SETTINGS_YSTART (ED_SETTINGS_ENGINE_TABS_Y + \
+ ED_TABBUTTON_YSIZE + \
+ ED_GADGET_TINY_DISTANCE + \
+ ED_TAB_BAR_HEIGHT + \
+ ED_SETTINGS_TABS_YOFFSET + \
+ getFontHeight(FONT_TEXT_1) + \
+ ED_GADGET_TEXT_DISTANCE)
#define ED_ELEMENT_TABS_XSTART (ED_SETTINGS_ELEMENT_TABS_X)
#define ED_ELEMENT_TABS_YSTART (ED_SETTINGS_ELEMENT_TABS_Y)
#define ED_ELEMENT_SETTINGS_XSTART (ED_SETTINGS_ELEMENT_TABS_X + \
#define ED_POS_LEVEL_TABS_LAST (2 * ED_POS_RANGE - 1)
#define ED_POS_LEVEL_SETTINGS_FIRST (2 * ED_POS_RANGE)
#define ED_POS_LEVEL_SETTINGS_LAST (3 * ED_POS_RANGE - 1)
-#define ED_POS_ELEMENT_TABS_FIRST (3 * ED_POS_RANGE)
-#define ED_POS_ELEMENT_TABS_LAST (4 * ED_POS_RANGE - 1)
-#define ED_POS_ELEMENT_SETTINGS_FIRST (4 * ED_POS_RANGE)
-#define ED_POS_ELEMENT_SETTINGS_LAST (5 * ED_POS_RANGE - 1)
+#define ED_POS_ENGINE_TABS_FIRST (3 * ED_POS_RANGE)
+#define ED_POS_ENGINE_TABS_LAST (4 * ED_POS_RANGE - 1)
+#define ED_POS_ENGINE_SETTINGS_FIRST (4 * ED_POS_RANGE)
+#define ED_POS_ENGINE_SETTINGS_LAST (5 * ED_POS_RANGE - 1)
+#define ED_POS_ELEMENT_TABS_FIRST (5 * ED_POS_RANGE)
+#define ED_POS_ELEMENT_TABS_LAST (6 * ED_POS_RANGE - 1)
+#define ED_POS_ELEMENT_SETTINGS_FIRST (6 * ED_POS_RANGE)
+#define ED_POS_ELEMENT_SETTINGS_LAST (7 * ED_POS_RANGE - 1)
#define ED_LEVEL_TABS_XPOS(n) (ED_POS_LEVEL_TABS_FIRST + (n))
#define ED_LEVEL_TABS_YPOS(n) (ED_POS_LEVEL_TABS_FIRST + (n))
#define ED_LEVEL_SETTINGS_XPOS(n) (ED_POS_LEVEL_SETTINGS_FIRST + (n))
#define ED_LEVEL_SETTINGS_YPOS(n) (ED_POS_LEVEL_SETTINGS_FIRST + (n))
+#define ED_ENGINE_TABS_XPOS(n) (ED_POS_ENGINE_TABS_FIRST + (n))
+#define ED_ENGINE_TABS_YPOS(n) (ED_POS_ENGINE_TABS_FIRST + (n))
+
+#define ED_ENGINE_SETTINGS_XPOS(n) (ED_POS_ENGINE_SETTINGS_FIRST + (n))
+#define ED_ENGINE_SETTINGS_YPOS(n) (ED_POS_ENGINE_SETTINGS_FIRST + (n))
+
#define ED_ELEMENT_TABS_XPOS(n) (ED_POS_ELEMENT_TABS_FIRST + (n))
#define ED_ELEMENT_TABS_YPOS(n) (ED_POS_ELEMENT_TABS_FIRST + (n))
(n) <= ED_POS_LEVEL_TABS_LAST)
#define IS_POS_LEVEL_SETTINGS(n) ((n) >= ED_POS_LEVEL_SETTINGS_FIRST && \
(n) <= ED_POS_LEVEL_SETTINGS_LAST)
+#define IS_POS_ENGINE_TABS(n) ((n) >= ED_POS_ENGINE_TABS_FIRST && \
+ (n) <= ED_POS_ENGINE_TABS_LAST)
+#define IS_POS_ENGINE_SETTINGS(n) ((n) >= ED_POS_ENGINE_SETTINGS_FIRST && \
+ (n) <= ED_POS_ENGINE_SETTINGS_LAST)
#define IS_POS_ELEMENT_TABS(n) ((n) >= ED_POS_ELEMENT_TABS_FIRST && \
(n) <= ED_POS_ELEMENT_TABS_LAST)
#define IS_POS_ELEMENT_SETTINGS(n) ((n) >= ED_POS_ELEMENT_SETTINGS_FIRST && \
#define ED_LEVEL_TABS_LINE(n) ((n) - ED_POS_LEVEL_TABS_FIRST)
#define ED_LEVEL_SETTINGS_LINE(n) ((n) - ED_POS_LEVEL_SETTINGS_FIRST)
+#define ED_ENGINE_TABS_LINE(n) ((n) - ED_POS_ENGINE_TABS_FIRST)
+#define ED_ENGINE_SETTINGS_LINE(n) ((n) - ED_POS_ENGINE_SETTINGS_FIRST)
#define ED_ELEMENT_TABS_LINE(n) ((n) - ED_POS_ELEMENT_TABS_FIRST)
#define ED_ELEMENT_SETTINGS_LINE(n) ((n) - ED_POS_ELEMENT_SETTINGS_FIRST)
#define ED_LEVEL_SETTINGS_Y(n) (ED_LEVEL_SETTINGS_YSTART + \
(n) * ED_SETTINGS_YOFFSET)
+#define ED_ENGINE_TABS_X(n) (ED_ENGINE_TABS_XSTART + \
+ (n) * ED_SETTINGS_TABS_XOFFSET)
+#define ED_ENGINE_TABS_Y(n) (ED_ENGINE_TABS_YSTART + \
+ (n) * ED_SETTINGS_TABS_YOFFSET)
+
+#define ED_ENGINE_SETTINGS_X(n) (ED_ENGINE_SETTINGS_XSTART + \
+ (n) * ED_SETTINGS_XOFFSET)
+#define ED_ENGINE_SETTINGS_Y(n) (ED_ENGINE_SETTINGS_YSTART + \
+ (n) * ED_SETTINGS_YOFFSET)
+
#define ED_ELEMENT_TABS_X(n) (ED_ELEMENT_TABS_XSTART + \
(n) * ED_SETTINGS_TABS_XOFFSET)
#define ED_ELEMENT_TABS_Y(n) (ED_ELEMENT_TABS_YSTART + \
#define ED_POS_TO_LEVEL_SETTINGS_Y(n) \
(ED_LEVEL_SETTINGS_Y(ED_LEVEL_SETTINGS_LINE(n)))
+#define ED_POS_TO_ENGINE_TABS_X(n) \
+ (ED_ENGINE_TABS_X(ED_ENGINE_TABS_LINE(n)))
+#define ED_POS_TO_ENGINE_TABS_Y(n) \
+ (ED_ENGINE_TABS_Y(ED_ENGINE_TABS_LINE(n)))
+
+#define ED_POS_TO_ENGINE_SETTINGS_X(n) \
+ (ED_ENGINE_SETTINGS_X(ED_ENGINE_SETTINGS_LINE(n)))
+#define ED_POS_TO_ENGINE_SETTINGS_Y(n) \
+ (ED_ENGINE_SETTINGS_Y(ED_ENGINE_SETTINGS_LINE(n)))
+
#define ED_POS_TO_ELEMENT_TABS_X(n) \
(ED_ELEMENT_TABS_X(ED_ELEMENT_TABS_LINE(n)))
#define ED_POS_TO_ELEMENT_TABS_Y(n) \
ED_POS_TO_LEVEL_TABS_X(n) : \
IS_POS_LEVEL_SETTINGS(n) ? \
ED_POS_TO_LEVEL_SETTINGS_X(n) : \
+ IS_POS_ENGINE_TABS(n) ? \
+ ED_POS_TO_ENGINE_TABS_X(n) : \
+ IS_POS_ENGINE_SETTINGS(n) ? \
+ ED_POS_TO_ENGINE_SETTINGS_X(n) : \
IS_POS_ELEMENT_TABS(n) ? \
ED_POS_TO_ELEMENT_TABS_X(n) : \
IS_POS_ELEMENT_SETTINGS(n) ? \
ED_POS_TO_LEVEL_TABS_Y(n) : \
IS_POS_LEVEL_SETTINGS(n) ? \
ED_POS_TO_LEVEL_SETTINGS_Y(n) : \
+ IS_POS_ENGINE_TABS(n) ? \
+ ED_POS_TO_ENGINE_TABS_Y(n) : \
+ IS_POS_ENGINE_SETTINGS(n) ? \
+ ED_POS_TO_ENGINE_SETTINGS_Y(n) : \
IS_POS_ELEMENT_TABS(n) ? \
ED_POS_TO_ELEMENT_TABS_Y(n) : \
IS_POS_ELEMENT_SETTINGS(n) ? \
GADGET_ID_MAGIC_BALL_CONTENT_7,
GADGET_ID_ANDROID_CONTENT,
GADGET_ID_AMOEBA_CONTENT,
+ GADGET_ID_BD_SNAP_ELEMENT,
+ GADGET_ID_BD_MAGIC_WALL_DIAMOND_TO,
+ GADGET_ID_BD_MAGIC_WALL_ROCK_TO,
+ GADGET_ID_BD_MAGIC_WALL_MEGA_ROCK_TO,
+ GADGET_ID_BD_MAGIC_WALL_NUT_TO,
+ GADGET_ID_BD_MAGIC_WALL_NITRO_PACK_TO,
+ GADGET_ID_BD_MAGIC_WALL_FLYING_DIAMOND_TO,
+ GADGET_ID_BD_MAGIC_WALL_FLYING_ROCK_TO,
+ GADGET_ID_BD_AMOEBA_CONTENT_TOO_BIG,
+ GADGET_ID_BD_AMOEBA_CONTENT_ENCLOSED,
+ GADGET_ID_BD_AMOEBA_2_CONTENT_TOO_BIG,
+ GADGET_ID_BD_AMOEBA_2_CONTENT_ENCLOSED,
+ GADGET_ID_BD_AMOEBA_2_CONTENT_EXPLODING,
+ GADGET_ID_BD_AMOEBA_2_CONTENT_LOOKS_LIKE,
+ GADGET_ID_BD_SLIME_EATS_ELEMENT_1,
+ GADGET_ID_BD_SLIME_CONVERTS_TO_ELEMENT_1,
+ GADGET_ID_BD_SLIME_EATS_ELEMENT_2,
+ GADGET_ID_BD_SLIME_CONVERTS_TO_ELEMENT_2,
+ GADGET_ID_BD_SLIME_EATS_ELEMENT_3,
+ GADGET_ID_BD_SLIME_CONVERTS_TO_ELEMENT_3,
+ GADGET_ID_BD_ACID_EATS_ELEMENT,
+ GADGET_ID_BD_ACID_TURNS_TO_ELEMENT,
+ GADGET_ID_BD_BITER_EATS_ELEMENT,
+ GADGET_ID_BD_BLADDER_CONVERTS_BY_ELEMENT,
+ GADGET_ID_BD_NUT_CONTENT,
+ GADGET_ID_BD_EXPANDING_WALL_LOOKS_LIKE,
+ GADGET_ID_BD_SAND_LOOKS_LIKE,
+ GADGET_ID_BD_ROCK_TURNS_TO_ON_FALLING,
+ GADGET_ID_BD_ROCK_TURNS_TO_ON_IMPACT,
+ GADGET_ID_BD_DIAMOND_TURNS_TO_ON_FALLING,
+ GADGET_ID_BD_DIAMOND_TURNS_TO_ON_IMPACT,
+ GADGET_ID_BD_FIREFLY_EXPLODES_TO,
+ GADGET_ID_BD_FIREFLY_2_EXPLODES_TO,
+ GADGET_ID_BD_BUTTERFLY_EXPLODES_TO,
+ GADGET_ID_BD_BUTTERFLY_2_EXPLODES_TO,
+ GADGET_ID_BD_STONEFLY_EXPLODES_TO,
+ GADGET_ID_BD_DRAGONFLY_EXPLODES_TO,
+ GADGET_ID_BD_DIAMOND_BIRTH_TURNS_TO,
+ GADGET_ID_BD_BOMB_EXPLOSION_TURNS_TO,
+ GADGET_ID_BD_NITRO_EXPLOSION_TURNS_TO,
+ GADGET_ID_BD_EXPLOSION_TURNS_TO,
GADGET_ID_START_ELEMENT,
GADGET_ID_ARTWORK_ELEMENT,
GADGET_ID_EXPLOSION_ELEMENT,
GADGET_ID_LEVEL_AUTHOR,
GADGET_ID_LEVELSET_NAME,
GADGET_ID_LEVELSET_AUTHOR,
+ GADGET_ID_BD_COLOR_TEXT_B,
+ GADGET_ID_BD_COLOR_TEXT_0,
+ GADGET_ID_BD_COLOR_TEXT_1,
+ GADGET_ID_BD_COLOR_TEXT_2,
+ GADGET_ID_BD_COLOR_TEXT_3,
+ GADGET_ID_BD_COLOR_TEXT_4,
+ GADGET_ID_BD_COLOR_TEXT_5,
GADGET_ID_ELEMENT_NAME,
// text area identifiers
GADGET_ID_TIME_OR_STEPS,
GADGET_ID_TIME_SCORE_BASE,
GADGET_ID_GAME_ENGINE_TYPE,
- GADGET_ID_BD_SCHEDULING_TYPE,
GADGET_ID_LEVELSET_SAVE_MODE,
+ GADGET_ID_BD_SCHEDULING_TYPE,
+ GADGET_ID_BD_COLOR_TYPE,
+ GADGET_ID_BD_COLOR_C64_B,
+ GADGET_ID_BD_COLOR_C64_0,
+ GADGET_ID_BD_COLOR_C64_1,
+ GADGET_ID_BD_COLOR_C64_2,
+ GADGET_ID_BD_COLOR_C64_3,
+ GADGET_ID_BD_COLOR_C64_4,
+ GADGET_ID_BD_COLOR_C64_5,
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,
GADGET_ID_LEVELCONFIG_LEVELSET,
GADGET_ID_LEVELCONFIG_EDITOR,
GADGET_ID_LEVELCONFIG_ENGINE,
+ GADGET_ID_ENGINECONFIG_CONFIG,
+ GADGET_ID_ENGINECONFIG_COLORS,
GADGET_ID_PROPERTIES_INFO,
GADGET_ID_PROPERTIES_CONFIG,
GADGET_ID_PROPERTIES_CONFIG_1,
GADGET_ID_SAVE_LEVELSET,
GADGET_ID_ADD_CHANGE_PAGE,
GADGET_ID_DEL_CHANGE_PAGE,
+ GADGET_ID_BD_SET_RANDOM_COLORS,
// graphicbutton identifiers
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,
GADGET_ID_BD_DIAGONAL_MOVEMENTS,
GADGET_ID_BD_TOPMOST_PLAYER_ACTIVE,
GADGET_ID_BD_PUSH_MEGA_ROCK_WITH_SWEET,
+ GADGET_ID_BD_MAGIC_WALL_ZERO_INFINITE,
+ GADGET_ID_BD_MAGIC_WALL_WAIT_HATCHING,
+ GADGET_ID_BD_MAGIC_WALL_STOPS_AMOEBA,
+ GADGET_ID_BD_MAGIC_WALL_BREAK_SCAN,
+ 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_BD_CHANGE_EXPANDING_WALL,
+ GADGET_ID_BD_REPLICATORS_ACTIVE,
+ GADGET_ID_BD_CONVEYOR_BELTS_ACTIVE,
+ GADGET_ID_BD_CONVEYOR_BELTS_CHANGED,
+ GADGET_ID_BD_WATER_CANNOT_FLOW_DOWN,
+ GADGET_ID_BD_HAMMER_WALLS_REAPPEAR,
+ GADGET_ID_BD_INFINITE_ROCKETS,
+ 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,
ED_TEXTINPUT_ID_LEVEL_AUTHOR,
ED_TEXTINPUT_ID_LEVELSET_NAME,
ED_TEXTINPUT_ID_LEVELSET_AUTHOR,
+ ED_TEXTINPUT_ID_BD_COLOR_TEXT_B,
+ ED_TEXTINPUT_ID_BD_COLOR_TEXT_0,
+ ED_TEXTINPUT_ID_BD_COLOR_TEXT_1,
+ ED_TEXTINPUT_ID_BD_COLOR_TEXT_2,
+ ED_TEXTINPUT_ID_BD_COLOR_TEXT_3,
+ ED_TEXTINPUT_ID_BD_COLOR_TEXT_4,
+ ED_TEXTINPUT_ID_BD_COLOR_TEXT_5,
ED_TEXTINPUT_ID_ELEMENT_NAME,
ED_NUM_TEXTINPUT
#define ED_TEXTINPUT_ID_LEVELSET_FIRST ED_TEXTINPUT_ID_LEVELSET_NAME
#define ED_TEXTINPUT_ID_LEVELSET_LAST ED_TEXTINPUT_ID_LEVELSET_AUTHOR
+#define ED_TEXTINPUT_ID_COLORS_FIRST ED_TEXTINPUT_ID_BD_COLOR_TEXT_B
+#define ED_TEXTINPUT_ID_COLORS_LAST ED_TEXTINPUT_ID_BD_COLOR_TEXT_5
+
// values for text area gadgets
enum
{
ED_SELECTBOX_ID_TIME_OR_STEPS,
ED_SELECTBOX_ID_TIME_SCORE_BASE,
ED_SELECTBOX_ID_GAME_ENGINE_TYPE,
- ED_SELECTBOX_ID_BD_SCHEDULING_TYPE,
ED_SELECTBOX_ID_LEVELSET_SAVE_MODE,
+ ED_SELECTBOX_ID_BD_SCHEDULING_TYPE,
+ ED_SELECTBOX_ID_BD_COLOR_TYPE,
+ ED_SELECTBOX_ID_BD_COLOR_C64_B,
+ ED_SELECTBOX_ID_BD_COLOR_C64_0,
+ ED_SELECTBOX_ID_BD_COLOR_C64_1,
+ ED_SELECTBOX_ID_BD_COLOR_C64_2,
+ ED_SELECTBOX_ID_BD_COLOR_C64_3,
+ ED_SELECTBOX_ID_BD_COLOR_C64_4,
+ ED_SELECTBOX_ID_BD_COLOR_C64_5,
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,
#define ED_SELECTBOX_ID_ENGINE_FIRST ED_SELECTBOX_ID_BD_SCHEDULING_TYPE
#define ED_SELECTBOX_ID_ENGINE_LAST ED_SELECTBOX_ID_BD_SCHEDULING_TYPE
+#define ED_SELECTBOX_ID_COLORS_FIRST ED_SELECTBOX_ID_BD_COLOR_C64_B
+#define ED_SELECTBOX_ID_COLORS_LAST ED_SELECTBOX_ID_BD_COLOR_C64_5
+
#define ED_SELECTBOX_ID_CUSTOM1_FIRST ED_SELECTBOX_ID_CUSTOM_ACCESS_TYPE
#define ED_SELECTBOX_ID_CUSTOM1_LAST ED_SELECTBOX_ID_CUSTOM_WALK_TO_ACTION
#define ED_SELECTBOX_ID_CUSTOM2_FIRST ED_SELECTBOX_ID_CUSTOM_MOVE_PATTERN
ED_TEXTBUTTON_ID_LEVELCONFIG_LEVELSET,
ED_TEXTBUTTON_ID_LEVELCONFIG_EDITOR,
ED_TEXTBUTTON_ID_LEVELCONFIG_ENGINE,
+ ED_TEXTBUTTON_ID_ENGINECONFIG_CONFIG,
+ ED_TEXTBUTTON_ID_ENGINECONFIG_COLORS,
ED_TEXTBUTTON_ID_PROPERTIES_INFO,
ED_TEXTBUTTON_ID_PROPERTIES_CONFIG,
ED_TEXTBUTTON_ID_PROPERTIES_CONFIG_1,
ED_TEXTBUTTON_ID_SAVE_AS_TEMPLATE_1,
ED_TEXTBUTTON_ID_ADD_CHANGE_PAGE,
ED_TEXTBUTTON_ID_DEL_CHANGE_PAGE,
+ ED_TEXTBUTTON_ID_BD_SET_RANDOM_COLORS,
ED_NUM_TEXTBUTTONS
};
#define ED_TAB_BUTTON_ID_LEVELCONFIG_FIRST ED_TEXTBUTTON_ID_LEVELCONFIG_LEVEL
#define ED_TAB_BUTTON_ID_LEVELCONFIG_LAST ED_TEXTBUTTON_ID_LEVELCONFIG_ENGINE
+#define ED_TAB_BUTTON_ID_ENGINECONFIG_FIRST ED_TEXTBUTTON_ID_ENGINECONFIG_CONFIG
+#define ED_TAB_BUTTON_ID_ENGINECONFIG_LAST ED_TEXTBUTTON_ID_ENGINECONFIG_COLORS
+
#define ED_TAB_BUTTON_ID_PROPERTIES_FIRST ED_TEXTBUTTON_ID_PROPERTIES_INFO
#define ED_TAB_BUTTON_ID_PROPERTIES_LAST ED_TEXTBUTTON_ID_PROPERTIES_CHANGE
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,
ED_CHECKBUTTON_ID_BD_DIAGONAL_MOVEMENTS,
ED_CHECKBUTTON_ID_BD_TOPMOST_PLAYER_ACTIVE,
ED_CHECKBUTTON_ID_BD_PUSH_MEGA_ROCK_WITH_SWEET,
+ ED_CHECKBUTTON_ID_BD_MAGIC_WALL_ZERO_INFINITE,
+ ED_CHECKBUTTON_ID_BD_MAGIC_WALL_WAIT_HATCHING,
+ ED_CHECKBUTTON_ID_BD_MAGIC_WALL_STOPS_AMOEBA,
+ ED_CHECKBUTTON_ID_BD_MAGIC_WALL_BREAK_SCAN,
+ 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_BD_CHANGE_EXPANDING_WALL,
+ ED_CHECKBUTTON_ID_BD_REPLICATORS_ACTIVE,
+ ED_CHECKBUTTON_ID_BD_CONVEYOR_BELTS_ACTIVE,
+ ED_CHECKBUTTON_ID_BD_CONVEYOR_BELTS_CHANGED,
+ ED_CHECKBUTTON_ID_BD_WATER_CANNOT_FLOW_DOWN,
+ ED_CHECKBUTTON_ID_BD_HAMMER_WALLS_REAPPEAR,
+ ED_CHECKBUTTON_ID_BD_INFINITE_ROCKETS,
+ 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,
#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
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_MAGIC_WALL_DIAMOND_TO,
+ ED_DRAWING_ID_BD_MAGIC_WALL_ROCK_TO,
+ ED_DRAWING_ID_BD_MAGIC_WALL_MEGA_ROCK_TO,
+ ED_DRAWING_ID_BD_MAGIC_WALL_NUT_TO,
+ ED_DRAWING_ID_BD_MAGIC_WALL_NITRO_PACK_TO,
+ ED_DRAWING_ID_BD_MAGIC_WALL_FLYING_DIAMOND_TO,
+ ED_DRAWING_ID_BD_MAGIC_WALL_FLYING_ROCK_TO,
+ ED_DRAWING_ID_BD_AMOEBA_CONTENT_TOO_BIG,
+ ED_DRAWING_ID_BD_AMOEBA_CONTENT_ENCLOSED,
+ ED_DRAWING_ID_BD_AMOEBA_2_CONTENT_TOO_BIG,
+ ED_DRAWING_ID_BD_AMOEBA_2_CONTENT_ENCLOSED,
+ ED_DRAWING_ID_BD_AMOEBA_2_CONTENT_EXPLODING,
+ ED_DRAWING_ID_BD_AMOEBA_2_CONTENT_LOOKS_LIKE,
+ ED_DRAWING_ID_BD_SLIME_EATS_ELEMENT_1,
+ ED_DRAWING_ID_BD_SLIME_CONVERTS_TO_ELEMENT_1,
+ ED_DRAWING_ID_BD_SLIME_EATS_ELEMENT_2,
+ ED_DRAWING_ID_BD_SLIME_CONVERTS_TO_ELEMENT_2,
+ ED_DRAWING_ID_BD_SLIME_EATS_ELEMENT_3,
+ ED_DRAWING_ID_BD_SLIME_CONVERTS_TO_ELEMENT_3,
+ ED_DRAWING_ID_BD_ACID_EATS_ELEMENT,
+ ED_DRAWING_ID_BD_ACID_TURNS_TO_ELEMENT,
+ ED_DRAWING_ID_BD_BITER_EATS_ELEMENT,
+ ED_DRAWING_ID_BD_BLADDER_CONVERTS_BY_ELEMENT,
+ ED_DRAWING_ID_BD_NUT_CONTENT,
+ ED_DRAWING_ID_BD_EXPANDING_WALL_LOOKS_LIKE,
+ ED_DRAWING_ID_BD_SAND_LOOKS_LIKE,
+ ED_DRAWING_ID_BD_ROCK_TURNS_TO_ON_FALLING,
+ ED_DRAWING_ID_BD_ROCK_TURNS_TO_ON_IMPACT,
+ ED_DRAWING_ID_BD_DIAMOND_TURNS_TO_ON_FALLING,
+ ED_DRAWING_ID_BD_DIAMOND_TURNS_TO_ON_IMPACT,
+ ED_DRAWING_ID_BD_FIREFLY_EXPLODES_TO,
+ ED_DRAWING_ID_BD_FIREFLY_2_EXPLODES_TO,
+ ED_DRAWING_ID_BD_BUTTERFLY_EXPLODES_TO,
+ ED_DRAWING_ID_BD_BUTTERFLY_2_EXPLODES_TO,
+ ED_DRAWING_ID_BD_STONEFLY_EXPLODES_TO,
+ ED_DRAWING_ID_BD_DRAGONFLY_EXPLODES_TO,
+ ED_DRAWING_ID_BD_DIAMOND_BIRTH_TURNS_TO,
+ ED_DRAWING_ID_BD_BOMB_EXPLOSION_TURNS_TO,
+ ED_DRAWING_ID_BD_NITRO_EXPLOSION_TURNS_TO,
+ ED_DRAWING_ID_BD_EXPLOSION_TURNS_TO,
ED_DRAWING_ID_START_ELEMENT,
ED_DRAWING_ID_ARTWORK_ELEMENT,
ED_DRAWING_ID_EXPLOSION_ELEMENT,
#define ED_MODE_LEVELCONFIG_EDITOR ED_TEXTBUTTON_ID_LEVELCONFIG_EDITOR
#define ED_MODE_LEVELCONFIG_ENGINE ED_TEXTBUTTON_ID_LEVELCONFIG_ENGINE
+// sub-screens in the engine settings section
+#define ED_MODE_ENGINECONFIG_CONFIG ED_TEXTBUTTON_ID_ENGINECONFIG_CONFIG
+#define ED_MODE_ENGINECONFIG_COLORS ED_TEXTBUTTON_ID_ENGINECONFIG_COLORS
+
// sub-screens in the element properties section
#define ED_MODE_PROPERTIES_INFO ED_TEXTBUTTON_ID_PROPERTIES_INFO
#define ED_MODE_PROPERTIES_CONFIG ED_TEXTBUTTON_ID_PROPERTIES_CONFIG
{
IMG_GFX_EDITOR_BUTTON_DRAW_SINGLE, GADGET_ID_SINGLE_ITEMS,
&editor.button.draw_single, GD_TYPE_RADIO_BUTTON,
- "draw single items", 's'
+ "Draw single items", 's'
},
{
IMG_GFX_EDITOR_BUTTON_DRAW_CONNECTED, GADGET_ID_CONNECTED_ITEMS,
&editor.button.draw_connected, GD_TYPE_RADIO_BUTTON,
- "draw connected items", 'd'
+ "Draw connected items", 'd'
},
{
IMG_GFX_EDITOR_BUTTON_DRAW_LINE, GADGET_ID_LINE,
&editor.button.draw_line, GD_TYPE_RADIO_BUTTON,
- "draw lines", 'l'
+ "Draw lines", 'l'
},
{
IMG_GFX_EDITOR_BUTTON_DRAW_ARC, GADGET_ID_ARC,
&editor.button.draw_arc, GD_TYPE_RADIO_BUTTON,
- "draw arcs", 'a'
+ "Draw arcs", 'a'
},
{
IMG_GFX_EDITOR_BUTTON_DRAW_RECTANGLE, GADGET_ID_RECTANGLE,
&editor.button.draw_rectangle, GD_TYPE_RADIO_BUTTON,
- "draw outline rectangles", 'r'
+ "Draw outline rectangles", 'r'
},
{
IMG_GFX_EDITOR_BUTTON_DRAW_FILLED_BOX, GADGET_ID_FILLED_BOX,
&editor.button.draw_filled_box, GD_TYPE_RADIO_BUTTON,
- "draw filled rectangles", 'R'
+ "Draw filled rectangles", 'R'
},
{
IMG_GFX_EDITOR_BUTTON_ROTATE_UP, GADGET_ID_WRAP_UP,
&editor.button.rotate_up, GD_TYPE_NORMAL_BUTTON,
- "wrap (rotate) level up", 0
+ "Wrap (rotate) level up", 0
},
{
IMG_GFX_EDITOR_BUTTON_DRAW_TEXT, GADGET_ID_TEXT,
&editor.button.draw_text, GD_TYPE_RADIO_BUTTON,
- "enter text elements", 't'
+ "Enter text elements", 't'
},
{
IMG_GFX_EDITOR_BUTTON_FLOOD_FILL, GADGET_ID_FLOOD_FILL,
&editor.button.flood_fill, GD_TYPE_RADIO_BUTTON,
- "flood fill", 'f'
+ "Flood fill", 'f'
},
{
IMG_GFX_EDITOR_BUTTON_ROTATE_LEFT, GADGET_ID_WRAP_LEFT,
&editor.button.rotate_left, GD_TYPE_NORMAL_BUTTON,
- "wrap (rotate) level left", 0
+ "Wrap (rotate) level left", 0
},
{
IMG_GFX_EDITOR_BUTTON_ZOOM_LEVEL, GADGET_ID_ZOOM,
&editor.button.zoom_level, GD_TYPE_NORMAL_BUTTON,
- "zoom level tile size", '+'
+ "Zoom level tile size", '+'
},
{
IMG_GFX_EDITOR_BUTTON_ROTATE_RIGHT, GADGET_ID_WRAP_RIGHT,
&editor.button.rotate_right, GD_TYPE_NORMAL_BUTTON,
- "wrap (rotate) level right", 0
+ "Wrap (rotate) level right", 0
},
{
IMG_GFX_EDITOR_BUTTON_DRAW_RANDOM, GADGET_ID_RANDOM_PLACEMENT,
&editor.button.draw_random, GD_TYPE_NORMAL_BUTTON,
- "random element placement", 0
+ "Random element placement", 0
},
{
IMG_GFX_EDITOR_BUTTON_GRAB_BRUSH, GADGET_ID_GRAB_BRUSH,
&editor.button.grab_brush, GD_TYPE_RADIO_BUTTON,
- "grab brush", 'b'
+ "Grab brush", 'b'
},
{
IMG_GFX_EDITOR_BUTTON_ROTATE_DOWN, GADGET_ID_WRAP_DOWN,
&editor.button.rotate_down, GD_TYPE_NORMAL_BUTTON,
- "wrap (rotate) level down", 0
+ "Wrap (rotate) level down", 0
},
{
IMG_GFX_EDITOR_BUTTON_PICK_ELEMENT, GADGET_ID_PICK_ELEMENT,
&editor.button.pick_element, GD_TYPE_RADIO_BUTTON,
- "pick drawing element", ','
+ "Pick drawing element", ','
},
// ---------- level control buttons -----------------------------------------
{
IMG_GFX_EDITOR_BUTTON_UNDO, GADGET_ID_UNDO,
&editor.button.undo, GD_TYPE_NORMAL_BUTTON,
- "undo/redo last operation", 'u'
+ "Undo/redo last operation", 'u'
},
{
IMG_GFX_EDITOR_BUTTON_CONF, GADGET_ID_CONF,
&editor.button.conf, GD_TYPE_NORMAL_BUTTON,
- "level and editor settings", 'I'
+ "Level and editor settings", 'I'
},
{
IMG_GFX_EDITOR_BUTTON_SAVE, GADGET_ID_SAVE,
&editor.button.save, GD_TYPE_NORMAL_BUTTON,
- "save level", 'S'
+ "Save level", 'S'
},
{
IMG_GFX_EDITOR_BUTTON_CLEAR, GADGET_ID_CLEAR,
&editor.button.clear, GD_TYPE_NORMAL_BUTTON,
- "clear level", 'C'
+ "Clear level", 'C'
},
{
IMG_GFX_EDITOR_BUTTON_TEST, GADGET_ID_TEST,
&editor.button.test, GD_TYPE_NORMAL_BUTTON,
- "test level", 'T'
+ "Test level", 'T'
},
{
IMG_GFX_EDITOR_BUTTON_EXIT, GADGET_ID_EXIT,
&editor.button.exit, GD_TYPE_NORMAL_BUTTON,
- "exit level editor", 'E'
+ "Exit level editor", 'E'
},
// ---------- CE and GE control buttons -------------------------------------
{
IMG_GFX_EDITOR_BUTTON_CE_COPY_FROM, GADGET_ID_CUSTOM_COPY_FROM,
&editor.button.ce_copy_from, GD_TYPE_RADIO_BUTTON,
- "copy settings from other element", 0
+ "Copy settings from other element", 0
},
{
IMG_GFX_EDITOR_BUTTON_CE_COPY_TO, GADGET_ID_CUSTOM_COPY_TO,
&editor.button.ce_copy_to, GD_TYPE_RADIO_BUTTON,
- "copy settings to other element", 0
+ "Copy settings to other element", 0
},
{
IMG_GFX_EDITOR_BUTTON_CE_SWAP, GADGET_ID_CUSTOM_EXCHANGE,
&editor.button.ce_swap, GD_TYPE_RADIO_BUTTON,
- "exchange element with other element", 0
+ "Exchange element with other element", 0
},
{
IMG_GFX_EDITOR_BUTTON_CE_COPY, GADGET_ID_CUSTOM_COPY,
&editor.button.ce_copy, GD_TYPE_NORMAL_BUTTON,
- "copy settings from this element", 0
+ "Copy settings from this element", 0
},
{
IMG_GFX_EDITOR_BUTTON_CE_PASTE, GADGET_ID_CUSTOM_PASTE,
&editor.button.ce_paste, GD_TYPE_NORMAL_BUTTON,
- "paste settings to this element", 0
+ "Paste settings to this element", 0
},
// ---------- palette control buttons ---------------------------------------
{
IMG_GFX_EDITOR_BUTTON_PROPERTIES, GADGET_ID_PROPERTIES,
&editor.button.properties, GD_TYPE_NORMAL_BUTTON,
- "properties of drawing element", 'p'
+ "Properties of drawing element", 'p'
},
{
IMG_GFX_EDITOR_BUTTON_ELEMENT_LEFT, GADGET_ID_ELEMENT_LEFT,
&editor.button.element_left, GD_TYPE_NORMAL_BUTTON,
- "properties of drawing element 1", '1'
+ "Properties of drawing element 1", '1'
},
{
IMG_GFX_EDITOR_BUTTON_ELEMENT_MIDDLE, GADGET_ID_ELEMENT_MIDDLE,
&editor.button.element_middle, GD_TYPE_NORMAL_BUTTON,
- "properties of drawing element 2", '2'
+ "Properties of drawing element 2", '2'
},
{
IMG_GFX_EDITOR_BUTTON_ELEMENT_RIGHT, GADGET_ID_ELEMENT_RIGHT,
&editor.button.element_right, GD_TYPE_NORMAL_BUTTON,
- "properties of drawing element 3", '3'
+ "Properties of drawing element 3", '3'
},
{
IMG_GFX_EDITOR_BUTTON_PALETTE, GADGET_ID_PALETTE,
&editor.button.palette, GD_TYPE_NORMAL_BUTTON,
- "show list of elements", 'e'
+ "Show list of elements", 'e'
}
};
static boolean levelset_copy_level_template = FALSE;
static int levelset_save_mode = LEVELSET_SAVE_MODE_UPDATE;
+#define MAX_BD_COLORS 7
+#define MAX_BD_COLOR_TEXT_LEN 10
+
+static boolean bd_color_type_changed = FALSE;
+static int bd_color_type_default = GD_COLOR_TYPE_RGB;
+static int bd_color_c64[MAX_BD_COLORS];
+static char bd_color_text[MAX_BD_COLORS][MAX_BD_COLOR_TEXT_LEN + 1];
+static int bd_color_default[MAX_BD_COLORS];
+static int *bd_color[MAX_BD_COLORS] =
+{
+ &level.bd_color_b,
+ &level.bd_color_0,
+ &level.bd_color_1,
+ &level.bd_color_2,
+ &level.bd_color_3,
+ &level.bd_color_4,
+ &level.bd_color_5,
+};
+
static struct
{
int gadget_type_id;
{
ED_COUNTER_ID_SELECT_LEVEL,
-1, -1, // these values are not constant, but can change at runtime
- 1, 100,
- GADGET_ID_SELECT_LEVEL_DOWN, GADGET_ID_SELECT_LEVEL_UP,
- GADGET_ID_SELECT_LEVEL_TEXT, GADGET_ID_NONE,
+ 1, 100,
+ GADGET_ID_SELECT_LEVEL_DOWN, GADGET_ID_SELECT_LEVEL_UP,
+ GADGET_ID_SELECT_LEVEL_TEXT, GADGET_ID_NONE,
&level_nr,
- NULL, NULL, NULL
+ NULL, NULL, NULL
},
// ---------- level and editor settings -------------------------------------
{
ED_COUNTER_ID_LEVEL_XSIZE,
- ED_LEVEL_SETTINGS_XPOS(0), ED_LEVEL_SETTINGS_YPOS(4),
- MIN_LEV_FIELDX, MAX_LEV_FIELDX,
- GADGET_ID_LEVEL_XSIZE_DOWN, GADGET_ID_LEVEL_XSIZE_UP,
- GADGET_ID_LEVEL_XSIZE_TEXT, GADGET_ID_NONE,
+ ED_LEVEL_SETTINGS_XPOS(0), ED_LEVEL_SETTINGS_YPOS(4),
+ MIN_LEV_FIELDX, MAX_LEV_FIELDX,
+ GADGET_ID_LEVEL_XSIZE_DOWN, GADGET_ID_LEVEL_XSIZE_UP,
+ GADGET_ID_LEVEL_XSIZE_TEXT, GADGET_ID_NONE,
&level.fieldx,
- "playfield size:", NULL, "width",
+ "Playfield size:", NULL, "Width",
},
{
ED_COUNTER_ID_LEVEL_YSIZE,
- -1, ED_LEVEL_SETTINGS_YPOS(4),
- MIN_LEV_FIELDY, MAX_LEV_FIELDY,
- GADGET_ID_LEVEL_YSIZE_DOWN, GADGET_ID_LEVEL_YSIZE_UP,
- GADGET_ID_LEVEL_YSIZE_TEXT, GADGET_ID_LEVEL_XSIZE_UP,
+ -1, ED_LEVEL_SETTINGS_YPOS(4),
+ MIN_LEV_FIELDY, MAX_LEV_FIELDY,
+ GADGET_ID_LEVEL_YSIZE_DOWN, GADGET_ID_LEVEL_YSIZE_UP,
+ GADGET_ID_LEVEL_YSIZE_TEXT, GADGET_ID_LEVEL_XSIZE_UP,
&level.fieldy,
- NULL, " ", "height",
+ NULL, " ", "Height",
},
{
ED_COUNTER_ID_LEVEL_GEMSLIMIT,
- ED_LEVEL_SETTINGS_XPOS(0), ED_LEVEL_SETTINGS_YPOS(5),
- 0, 999,
- GADGET_ID_LEVEL_GEMSLIMIT_DOWN, GADGET_ID_LEVEL_GEMSLIMIT_UP,
- GADGET_ID_LEVEL_GEMSLIMIT_TEXT, GADGET_ID_NONE,
+ ED_LEVEL_SETTINGS_XPOS(0), ED_LEVEL_SETTINGS_YPOS(5),
+ 0, 999,
+ GADGET_ID_LEVEL_GEMSLIMIT_DOWN, GADGET_ID_LEVEL_GEMSLIMIT_UP,
+ GADGET_ID_LEVEL_GEMSLIMIT_TEXT, GADGET_ID_NONE,
&level.gems_needed,
- NULL, "number of gems to collect:", NULL
+ NULL, "Number of gems to collect:", NULL
},
{
ED_COUNTER_ID_LEVEL_TIMELIMIT,
- ED_LEVEL_SETTINGS_XPOS(0), ED_LEVEL_SETTINGS_YPOS(8),
- 0, 9999,
- GADGET_ID_LEVEL_TIMELIMIT_DOWN, GADGET_ID_LEVEL_TIMELIMIT_UP,
- GADGET_ID_LEVEL_TIMELIMIT_TEXT, GADGET_ID_NONE,
+ ED_LEVEL_SETTINGS_XPOS(0), ED_LEVEL_SETTINGS_YPOS(8),
+ 0, 9999,
+ GADGET_ID_LEVEL_TIMELIMIT_DOWN, GADGET_ID_LEVEL_TIMELIMIT_UP,
+ GADGET_ID_LEVEL_TIMELIMIT_TEXT, GADGET_ID_NONE,
&level.time,
- "time or step limit to solve level:", NULL, NULL
+ "Time or step limit to solve level:", NULL, NULL
},
{
ED_COUNTER_ID_LEVEL_TIMESCORE,
- ED_LEVEL_SETTINGS_XPOS(0), ED_LEVEL_SETTINGS_YPOS(10),
- 0, 999,
- GADGET_ID_LEVEL_TIMESCORE_DOWN, GADGET_ID_LEVEL_TIMESCORE_UP,
- GADGET_ID_LEVEL_TIMESCORE_TEXT, GADGET_ID_NONE,
+ ED_LEVEL_SETTINGS_XPOS(0), ED_LEVEL_SETTINGS_YPOS(10),
+ 0, 999,
+ 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 time or steps left:", NULL, NULL
+ "Score for time or steps left:", NULL, NULL
},
{
ED_COUNTER_ID_LEVEL_RANDOM_SEED,
- ED_LEVEL_SETTINGS_XPOS(0), ED_LEVEL_SETTINGS_YPOS(13),
- 0, 9999,
- GADGET_ID_LEVEL_RANDOM_SEED_DOWN, GADGET_ID_LEVEL_RANDOM_SEED_UP,
- GADGET_ID_LEVEL_RANDOM_SEED_TEXT, GADGET_ID_NONE,
+ ED_LEVEL_SETTINGS_XPOS(0), ED_LEVEL_SETTINGS_YPOS(13),
+ 0, 9999,
+ GADGET_ID_LEVEL_RANDOM_SEED_DOWN, GADGET_ID_LEVEL_RANDOM_SEED_UP,
+ GADGET_ID_LEVEL_RANDOM_SEED_TEXT, GADGET_ID_NONE,
&level.random_seed,
- NULL, "random seed:", "(0 => random)"
+ NULL, "Random seed:", "(0 => random)"
},
{
ED_COUNTER_ID_LEVELSET_NUM_LEVELS,
- ED_LEVEL_SETTINGS_XPOS(0), ED_LEVEL_SETTINGS_YPOS(4),
- 1, MAX_LEVELS,
- GADGET_ID_LEVELSET_NUM_LEVELS_DOWN, GADGET_ID_LEVELSET_NUM_LEVELS_UP,
- GADGET_ID_LEVELSET_NUM_LEVELS_TEXT, GADGET_ID_NONE,
+ ED_LEVEL_SETTINGS_XPOS(0), ED_LEVEL_SETTINGS_YPOS(4),
+ 1, MAX_LEVELS,
+ GADGET_ID_LEVELSET_NUM_LEVELS_DOWN, GADGET_ID_LEVELSET_NUM_LEVELS_UP,
+ GADGET_ID_LEVELSET_NUM_LEVELS_TEXT, GADGET_ID_NONE,
&levelset_num_levels,
- "number of levels:", NULL, NULL,
+ "Number of levels:", NULL, NULL,
},
{
ED_COUNTER_ID_LEVEL_RANDOM,
- ED_LEVEL_SETTINGS_XPOS(0), ED_LEVEL_SETTINGS_YPOS(0),
- 1, 100,
- GADGET_ID_LEVEL_RANDOM_DOWN, GADGET_ID_LEVEL_RANDOM_UP,
- GADGET_ID_LEVEL_RANDOM_TEXT, GADGET_ID_NONE,
+ ED_LEVEL_SETTINGS_XPOS(0), ED_LEVEL_SETTINGS_YPOS(0),
+ 1, 100,
+ GADGET_ID_LEVEL_RANDOM_DOWN, GADGET_ID_LEVEL_RANDOM_UP,
+ GADGET_ID_LEVEL_RANDOM_TEXT, GADGET_ID_NONE,
&random_placement_value,
- "random element placement:", NULL, "in"
+ "Random element placement:", NULL, "in"
},
{
ED_COUNTER_ID_BD_CYCLE_DELAY_MS,
- ED_LEVEL_SETTINGS_XPOS(0), ED_LEVEL_SETTINGS_YPOS(3),
- 50, 500,
- GADGET_ID_BD_CYCLE_DELAY_MS_DOWN, GADGET_ID_BD_CYCLE_DELAY_MS_UP,
- GADGET_ID_BD_CYCLE_DELAY_MS_TEXT, GADGET_ID_NONE,
+ ED_ENGINE_SETTINGS_XPOS(0), ED_ENGINE_SETTINGS_YPOS(3),
+ 50, 500,
+ GADGET_ID_BD_CYCLE_DELAY_MS_DOWN, GADGET_ID_BD_CYCLE_DELAY_MS_UP,
+ GADGET_ID_BD_CYCLE_DELAY_MS_TEXT, GADGET_ID_NONE,
&level.bd_cycle_delay_ms,
- NULL, NULL, "game cycle delay (ms)"
+ NULL, NULL, "Game cycle delay (ms)"
},
{
ED_COUNTER_ID_BD_CYCLE_DELAY_C64,
- ED_LEVEL_SETTINGS_XPOS(0), ED_LEVEL_SETTINGS_YPOS(3),
- 0, 32,
- GADGET_ID_BD_CYCLE_DELAY_C64_DOWN, GADGET_ID_BD_CYCLE_DELAY_C64_UP,
- GADGET_ID_BD_CYCLE_DELAY_C64_TEXT, GADGET_ID_NONE,
+ ED_ENGINE_SETTINGS_XPOS(0), ED_ENGINE_SETTINGS_YPOS(3),
+ 0, 32,
+ GADGET_ID_BD_CYCLE_DELAY_C64_DOWN, GADGET_ID_BD_CYCLE_DELAY_C64_UP,
+ GADGET_ID_BD_CYCLE_DELAY_C64_TEXT, GADGET_ID_NONE,
&level.bd_cycle_delay_c64,
- NULL, NULL, "game cycle delay (C64-style)"
+ NULL, NULL, "Game cycle delay (C64-style)"
},
{
ED_COUNTER_ID_BD_HATCHING_DELAY_CYCLES,
- ED_LEVEL_SETTINGS_XPOS(0), ED_LEVEL_SETTINGS_YPOS(4),
- 1, 40,
+ ED_ENGINE_SETTINGS_XPOS(0), ED_ENGINE_SETTINGS_YPOS(4),
+ 1, 40,
GADGET_ID_BD_HATCHING_DELAY_CYCLES_DOWN, GADGET_ID_BD_HATCHING_DELAY_CYCLES_UP,
GADGET_ID_BD_HATCHING_DELAY_CYCLES_TEXT, GADGET_ID_NONE,
&level.bd_hatching_delay_cycles,
- NULL, NULL, "hatching delay (cycles)"
+ NULL, NULL, "Hatching delay (cycles)"
},
{
ED_COUNTER_ID_BD_HATCHING_DELAY_SECONDS,
- ED_LEVEL_SETTINGS_XPOS(0), ED_LEVEL_SETTINGS_YPOS(4),
- 1, 40,
+ ED_ENGINE_SETTINGS_XPOS(0), ED_ENGINE_SETTINGS_YPOS(4),
+ 1, 40,
GADGET_ID_BD_HATCHING_DELAY_SECONDS_DOWN, GADGET_ID_BD_HATCHING_DELAY_SECONDS_UP,
GADGET_ID_BD_HATCHING_DELAY_SECONDS_TEXT, GADGET_ID_NONE,
&level.bd_hatching_delay_seconds,
- NULL, NULL, "hatching delay (seconds)"
+ NULL, NULL, "Hatching delay (seconds)"
},
// ---------- element settings: configure (various elements) ----------------
{
ED_COUNTER_ID_BD_PUSHING_PROB,
- ED_ELEMENT_SETTINGS_XPOS(0), ED_ELEMENT_SETTINGS_YPOS(2),
- 0, 100,
- GADGET_ID_BD_PUSHING_PROB_DOWN, GADGET_ID_BD_PUSHING_PROB_UP,
- GADGET_ID_BD_PUSHING_PROB_TEXT, GADGET_ID_NONE,
+ ED_ELEMENT_SETTINGS_XPOS(0), ED_ELEMENT_SETTINGS_YPOS(2),
+ 0, 100,
+ GADGET_ID_BD_PUSHING_PROB_DOWN, GADGET_ID_BD_PUSHING_PROB_UP,
+ GADGET_ID_BD_PUSHING_PROB_TEXT, GADGET_ID_NONE,
&level.bd_pushing_prob,
- NULL, NULL, "push probability"
+ NULL, NULL, "Push probability"
},
{
ED_COUNTER_ID_BD_PUSHING_PROB_WITH_SWEET,
- ED_ELEMENT_SETTINGS_XPOS(0), ED_ELEMENT_SETTINGS_YPOS(3),
- 0, 100,
+ ED_ELEMENT_SETTINGS_XPOS(0), ED_ELEMENT_SETTINGS_YPOS(3),
+ 0, 100,
GADGET_ID_BD_PUSHING_PROB_WITH_SWEET_DOWN, GADGET_ID_BD_PUSHING_PROB_WITH_SWEET_UP,
GADGET_ID_BD_PUSHING_PROB_WITH_SWEET_TEXT, GADGET_ID_NONE,
&level.bd_pushing_prob_with_sweet,
- NULL, NULL, "push probability with sweet"
+ NULL, NULL, "Push probability with sweet"
},
{
ED_COUNTER_ID_ELEMENT_VALUE1,
- ED_ELEMENT_SETTINGS_XPOS(0), ED_ELEMENT_SETTINGS_YPOS(0),
- MIN_SCORE, MAX_SCORE,
- GADGET_ID_ELEMENT_VALUE1_DOWN, GADGET_ID_ELEMENT_VALUE1_UP,
- GADGET_ID_ELEMENT_VALUE1_TEXT, GADGET_ID_NONE,
- NULL, // will be set when used
- NULL, NULL, NULL
+ ED_ELEMENT_SETTINGS_XPOS(0), ED_ELEMENT_SETTINGS_YPOS(0),
+ MIN_SCORE, MAX_SCORE,
+ GADGET_ID_ELEMENT_VALUE1_DOWN, GADGET_ID_ELEMENT_VALUE1_UP,
+ GADGET_ID_ELEMENT_VALUE1_TEXT, GADGET_ID_NONE,
+ NULL, // will be set when used
+ NULL, NULL, NULL
},
{
ED_COUNTER_ID_ELEMENT_VALUE2,
- ED_ELEMENT_SETTINGS_XPOS(0), ED_ELEMENT_SETTINGS_YPOS(1),
- MIN_SCORE, MAX_SCORE,
- GADGET_ID_ELEMENT_VALUE2_DOWN, GADGET_ID_ELEMENT_VALUE2_UP,
- GADGET_ID_ELEMENT_VALUE2_TEXT, GADGET_ID_NONE,
- NULL, // will be set when used
- NULL, NULL, NULL
+ ED_ELEMENT_SETTINGS_XPOS(0), ED_ELEMENT_SETTINGS_YPOS(1),
+ MIN_SCORE, MAX_SCORE,
+ GADGET_ID_ELEMENT_VALUE2_DOWN, GADGET_ID_ELEMENT_VALUE2_UP,
+ GADGET_ID_ELEMENT_VALUE2_TEXT, GADGET_ID_NONE,
+ NULL, // will be set when used
+ NULL, NULL, NULL
},
{
ED_COUNTER_ID_ELEMENT_VALUE3,
- ED_ELEMENT_SETTINGS_XPOS(0), ED_ELEMENT_SETTINGS_YPOS(2),
- MIN_SCORE, MAX_SCORE,
- GADGET_ID_ELEMENT_VALUE3_DOWN, GADGET_ID_ELEMENT_VALUE3_UP,
- GADGET_ID_ELEMENT_VALUE3_TEXT, GADGET_ID_NONE,
- NULL, // will be set when used
- NULL, NULL, NULL
+ ED_ELEMENT_SETTINGS_XPOS(0), ED_ELEMENT_SETTINGS_YPOS(2),
+ MIN_SCORE, MAX_SCORE,
+ GADGET_ID_ELEMENT_VALUE3_DOWN, GADGET_ID_ELEMENT_VALUE3_UP,
+ GADGET_ID_ELEMENT_VALUE3_TEXT, GADGET_ID_NONE,
+ NULL, // will be set when used
+ NULL, NULL, NULL
},
{
ED_COUNTER_ID_ELEMENT_VALUE4,
- ED_ELEMENT_SETTINGS_XPOS(0), ED_ELEMENT_SETTINGS_YPOS(3),
- MIN_SCORE, MAX_SCORE,
- GADGET_ID_ELEMENT_VALUE4_DOWN, GADGET_ID_ELEMENT_VALUE4_UP,
- GADGET_ID_ELEMENT_VALUE4_TEXT, GADGET_ID_NONE,
- NULL, // will be set when used
- NULL, NULL, NULL
+ ED_ELEMENT_SETTINGS_XPOS(0), ED_ELEMENT_SETTINGS_YPOS(3),
+ MIN_SCORE, MAX_SCORE,
+ GADGET_ID_ELEMENT_VALUE4_DOWN, GADGET_ID_ELEMENT_VALUE4_UP,
+ GADGET_ID_ELEMENT_VALUE4_TEXT, GADGET_ID_NONE,
+ NULL, // will be set when used
+ NULL, NULL, NULL
},
{
ED_COUNTER_ID_YAMYAM_CONTENT,
- ED_ELEMENT_SETTINGS_XPOS(0), ED_ELEMENT_SETTINGS_YPOS(3),
- MIN_ELEMENT_CONTENTS, MAX_ELEMENT_CONTENTS,
- GADGET_ID_YAMYAM_CONTENT_DOWN, GADGET_ID_YAMYAM_CONTENT_UP,
- GADGET_ID_YAMYAM_CONTENT_TEXT, GADGET_ID_NONE,
+ ED_ELEMENT_SETTINGS_XPOS(0), ED_ELEMENT_SETTINGS_YPOS(3),
+ MIN_ELEMENT_CONTENTS, MAX_ELEMENT_CONTENTS,
+ GADGET_ID_YAMYAM_CONTENT_DOWN, GADGET_ID_YAMYAM_CONTENT_UP,
+ GADGET_ID_YAMYAM_CONTENT_TEXT, GADGET_ID_NONE,
&level.num_yamyam_contents,
- NULL, NULL, "number of content areas"
+ NULL, NULL, "Number of content areas"
},
{
ED_COUNTER_ID_BALL_CONTENT,
- ED_ELEMENT_SETTINGS_XPOS(0), ED_ELEMENT_SETTINGS_YPOS(4),
- MIN_ELEMENT_CONTENTS, MAX_ELEMENT_CONTENTS,
- GADGET_ID_BALL_CONTENT_DOWN, GADGET_ID_BALL_CONTENT_UP,
- GADGET_ID_BALL_CONTENT_TEXT, GADGET_ID_NONE,
+ ED_ELEMENT_SETTINGS_XPOS(0), ED_ELEMENT_SETTINGS_YPOS(4),
+ MIN_ELEMENT_CONTENTS, MAX_ELEMENT_CONTENTS,
+ GADGET_ID_BALL_CONTENT_DOWN, GADGET_ID_BALL_CONTENT_UP,
+ GADGET_ID_BALL_CONTENT_TEXT, GADGET_ID_NONE,
&level.num_ball_contents,
- NULL, NULL, "number of content areas"
+ NULL, NULL, "Number of content areas"
},
{
ED_COUNTER_ID_ANDROID_CONTENT,
- ED_ELEMENT_SETTINGS_XPOS(0), ED_ELEMENT_SETTINGS_YPOS(4),
- MIN_ANDROID_ELEMENTS, MAX_ANDROID_ELEMENTS,
- GADGET_ID_ANDROID_CONTENT_DOWN, GADGET_ID_ANDROID_CONTENT_UP,
- GADGET_ID_ANDROID_CONTENT_TEXT, GADGET_ID_NONE,
+ ED_ELEMENT_SETTINGS_XPOS(0), ED_ELEMENT_SETTINGS_YPOS(4),
+ MIN_ANDROID_ELEMENTS, MAX_ANDROID_ELEMENTS,
+ GADGET_ID_ANDROID_CONTENT_DOWN, GADGET_ID_ANDROID_CONTENT_UP,
+ GADGET_ID_ANDROID_CONTENT_TEXT, GADGET_ID_NONE,
&level.num_android_clone_elements,
- NULL, NULL, "number of clonable elements"
+ NULL, NULL, "Number of clonable elements"
},
{
ED_COUNTER_ID_ENVELOPE_XSIZE,
- ED_ELEMENT_SETTINGS_XPOS(0), ED_ELEMENT_SETTINGS_YPOS(0),
- MIN_ENVELOPE_XSIZE, MAX_ENVELOPE_XSIZE,
- GADGET_ID_ENVELOPE_XSIZE_DOWN, GADGET_ID_ENVELOPE_XSIZE_UP,
- GADGET_ID_ENVELOPE_XSIZE_TEXT, GADGET_ID_NONE,
- NULL, // will be set when used
- NULL, NULL, "width",
+ ED_ELEMENT_SETTINGS_XPOS(0), ED_ELEMENT_SETTINGS_YPOS(0),
+ MIN_ENVELOPE_XSIZE, MAX_ENVELOPE_XSIZE,
+ GADGET_ID_ENVELOPE_XSIZE_DOWN, GADGET_ID_ENVELOPE_XSIZE_UP,
+ GADGET_ID_ENVELOPE_XSIZE_TEXT, GADGET_ID_NONE,
+ NULL, // will be set when used
+ NULL, NULL, "Width",
},
{
ED_COUNTER_ID_ENVELOPE_YSIZE,
- -1, ED_ELEMENT_SETTINGS_YPOS(0),
- MIN_ENVELOPE_YSIZE, MAX_ENVELOPE_YSIZE,
- GADGET_ID_ENVELOPE_YSIZE_DOWN, GADGET_ID_ENVELOPE_YSIZE_UP,
- GADGET_ID_ENVELOPE_YSIZE_TEXT, GADGET_ID_ENVELOPE_XSIZE_UP,
- NULL, // will be set when used
- NULL, " ", "height",
+ -1, ED_ELEMENT_SETTINGS_YPOS(0),
+ MIN_ENVELOPE_YSIZE, MAX_ENVELOPE_YSIZE,
+ GADGET_ID_ENVELOPE_YSIZE_DOWN, GADGET_ID_ENVELOPE_YSIZE_UP,
+ GADGET_ID_ENVELOPE_YSIZE_TEXT, GADGET_ID_ENVELOPE_XSIZE_UP,
+ NULL, // will be set when used
+ NULL, " ", "Height",
},
{
ED_COUNTER_ID_INVENTORY_SIZE,
- ED_ELEMENT_SETTINGS_XPOS(0), ED_ELEMENT_SETTINGS_YPOS(2),
- MIN_INITIAL_INVENTORY_SIZE, MAX_INITIAL_INVENTORY_SIZE,
- GADGET_ID_INVENTORY_SIZE_DOWN, GADGET_ID_INVENTORY_SIZE_UP,
- GADGET_ID_INVENTORY_SIZE_TEXT, GADGET_ID_NONE,
+ ED_ELEMENT_SETTINGS_XPOS(0), ED_ELEMENT_SETTINGS_YPOS(2),
+ MIN_INITIAL_INVENTORY_SIZE, MAX_INITIAL_INVENTORY_SIZE,
+ GADGET_ID_INVENTORY_SIZE_DOWN, GADGET_ID_INVENTORY_SIZE_UP,
+ GADGET_ID_INVENTORY_SIZE_TEXT, GADGET_ID_NONE,
&level.initial_inventory_size[0],
- NULL, NULL, "number of inventory elements"
+ NULL, NULL, "Number of inventory elements"
},
{
ED_COUNTER_ID_MM_BALL_CONTENT,
- ED_ELEMENT_SETTINGS_XPOS(0), ED_ELEMENT_SETTINGS_YPOS(3),
- MIN_ELEMENTS_IN_GROUP, MAX_MM_BALL_CONTENTS,
- GADGET_ID_MM_BALL_CONTENT_DOWN, GADGET_ID_MM_BALL_CONTENT_UP,
- GADGET_ID_MM_BALL_CONTENT_TEXT, GADGET_ID_NONE,
+ ED_ELEMENT_SETTINGS_XPOS(0), ED_ELEMENT_SETTINGS_YPOS(3),
+ MIN_ELEMENTS_IN_GROUP, MAX_MM_BALL_CONTENTS,
+ GADGET_ID_MM_BALL_CONTENT_DOWN, GADGET_ID_MM_BALL_CONTENT_UP,
+ GADGET_ID_MM_BALL_CONTENT_TEXT, GADGET_ID_NONE,
&level.num_mm_ball_contents,
- NULL, NULL, "number of content elements"
+ NULL, NULL, "Number of content elements"
},
// ---------- element settings: configure 1 (custom elements) ---------------
{
ED_COUNTER_ID_CUSTOM_SCORE,
- ED_ELEMENT_SETTINGS_XPOS(1), ED_ELEMENT_SETTINGS_YPOS(5),
- MIN_SCORE, MAX_SCORE,
- GADGET_ID_CUSTOM_SCORE_DOWN, GADGET_ID_CUSTOM_SCORE_UP,
- GADGET_ID_CUSTOM_SCORE_TEXT, GADGET_ID_NONE,
+ ED_ELEMENT_SETTINGS_XPOS(1), ED_ELEMENT_SETTINGS_YPOS(5),
+ MIN_SCORE, MAX_SCORE,
+ GADGET_ID_CUSTOM_SCORE_DOWN, GADGET_ID_CUSTOM_SCORE_UP,
+ GADGET_ID_CUSTOM_SCORE_TEXT, GADGET_ID_NONE,
&custom_element.collect_score_initial,
- NULL, "CE score", " "
+ NULL, "CE score", " "
},
{
ED_COUNTER_ID_CUSTOM_GEMCOUNT,
- -1, ED_ELEMENT_SETTINGS_YPOS(5),
- MIN_COLLECT_COUNT, MAX_COLLECT_COUNT,
- GADGET_ID_CUSTOM_GEMCOUNT_DOWN, GADGET_ID_CUSTOM_GEMCOUNT_UP,
- GADGET_ID_CUSTOM_GEMCOUNT_TEXT, GADGET_ID_CUSTOM_SCORE_UP,
+ -1, ED_ELEMENT_SETTINGS_YPOS(5),
+ MIN_COLLECT_COUNT, MAX_COLLECT_COUNT,
+ GADGET_ID_CUSTOM_GEMCOUNT_DOWN, GADGET_ID_CUSTOM_GEMCOUNT_UP,
+ GADGET_ID_CUSTOM_GEMCOUNT_TEXT, GADGET_ID_CUSTOM_SCORE_UP,
&custom_element.collect_count_initial,
- NULL, "CE count", NULL
+ NULL, "CE count", NULL
},
{
ED_COUNTER_ID_CUSTOM_VALUE_FIX,
- ED_ELEMENT_SETTINGS_XPOS(0), ED_ELEMENT_SETTINGS_YPOS(10),
- 0, 9999,
- GADGET_ID_CUSTOM_VALUE_FIX_DOWN, GADGET_ID_CUSTOM_VALUE_FIX_UP,
- GADGET_ID_CUSTOM_VALUE_FIX_TEXT, GADGET_ID_NONE,
+ ED_ELEMENT_SETTINGS_XPOS(0), ED_ELEMENT_SETTINGS_YPOS(10),
+ 0, 9999,
+ GADGET_ID_CUSTOM_VALUE_FIX_DOWN, GADGET_ID_CUSTOM_VALUE_FIX_UP,
+ GADGET_ID_CUSTOM_VALUE_FIX_TEXT, GADGET_ID_NONE,
&custom_element.ce_value_fixed_initial,
- NULL, "CE value", NULL
+ NULL, "CE value", NULL
},
{
ED_COUNTER_ID_CUSTOM_VALUE_RND,
- ED_ELEMENT_SETTINGS_XPOS(0), ED_ELEMENT_SETTINGS_YPOS(10),
- 0, 9999,
- GADGET_ID_CUSTOM_VALUE_RND_DOWN, GADGET_ID_CUSTOM_VALUE_RND_UP,
- GADGET_ID_CUSTOM_VALUE_RND_TEXT, GADGET_ID_CUSTOM_VALUE_FIX_UP,
+ ED_ELEMENT_SETTINGS_XPOS(0), ED_ELEMENT_SETTINGS_YPOS(10),
+ 0, 9999,
+ GADGET_ID_CUSTOM_VALUE_RND_DOWN, GADGET_ID_CUSTOM_VALUE_RND_UP,
+ GADGET_ID_CUSTOM_VALUE_RND_TEXT, GADGET_ID_CUSTOM_VALUE_FIX_UP,
&custom_element.ce_value_random_initial,
- NULL, "+random", NULL
+ NULL, "+random", NULL
},
{
ED_COUNTER_ID_PUSH_DELAY_FIX,
- ED_ELEMENT_SETTINGS_XPOS(1), ED_ELEMENT_SETTINGS_YPOS(6),
- 0, 999,
- GADGET_ID_PUSH_DELAY_FIX_DOWN, GADGET_ID_PUSH_DELAY_FIX_UP,
- GADGET_ID_PUSH_DELAY_FIX_TEXT, GADGET_ID_NONE,
+ ED_ELEMENT_SETTINGS_XPOS(1), ED_ELEMENT_SETTINGS_YPOS(6),
+ 0, 999,
+ GADGET_ID_PUSH_DELAY_FIX_DOWN, GADGET_ID_PUSH_DELAY_FIX_UP,
+ GADGET_ID_PUSH_DELAY_FIX_TEXT, GADGET_ID_NONE,
&custom_element.push_delay_fixed,
- NULL, "push delay", NULL
+ NULL, "Push delay", NULL
},
{
ED_COUNTER_ID_PUSH_DELAY_RND,
- -1, ED_ELEMENT_SETTINGS_YPOS(6),
- 0, 999,
- GADGET_ID_PUSH_DELAY_RND_DOWN, GADGET_ID_PUSH_DELAY_RND_UP,
- GADGET_ID_PUSH_DELAY_RND_TEXT, GADGET_ID_PUSH_DELAY_FIX_UP,
+ -1, ED_ELEMENT_SETTINGS_YPOS(6),
+ 0, 999,
+ GADGET_ID_PUSH_DELAY_RND_DOWN, GADGET_ID_PUSH_DELAY_RND_UP,
+ GADGET_ID_PUSH_DELAY_RND_TEXT, GADGET_ID_PUSH_DELAY_FIX_UP,
&custom_element.push_delay_random,
- NULL, "+random", NULL
+ NULL, "+random", NULL
},
{
ED_COUNTER_ID_DROP_DELAY_FIX,
- ED_ELEMENT_SETTINGS_XPOS(1), ED_ELEMENT_SETTINGS_YPOS(7),
- 0, 999,
- GADGET_ID_DROP_DELAY_FIX_DOWN, GADGET_ID_DROP_DELAY_FIX_UP,
- GADGET_ID_DROP_DELAY_FIX_TEXT, GADGET_ID_NONE,
+ ED_ELEMENT_SETTINGS_XPOS(1), ED_ELEMENT_SETTINGS_YPOS(7),
+ 0, 999,
+ GADGET_ID_DROP_DELAY_FIX_DOWN, GADGET_ID_DROP_DELAY_FIX_UP,
+ GADGET_ID_DROP_DELAY_FIX_TEXT, GADGET_ID_NONE,
&custom_element.drop_delay_fixed,
- NULL, "drop delay", NULL
+ NULL, "Drop delay", NULL
},
{
ED_COUNTER_ID_DROP_DELAY_RND,
- -1, ED_ELEMENT_SETTINGS_YPOS(7),
- 0, 999,
- GADGET_ID_DROP_DELAY_RND_DOWN, GADGET_ID_DROP_DELAY_RND_UP,
- GADGET_ID_DROP_DELAY_RND_TEXT, GADGET_ID_DROP_DELAY_FIX_UP,
+ -1, ED_ELEMENT_SETTINGS_YPOS(7),
+ 0, 999,
+ GADGET_ID_DROP_DELAY_RND_DOWN, GADGET_ID_DROP_DELAY_RND_UP,
+ GADGET_ID_DROP_DELAY_RND_TEXT, GADGET_ID_DROP_DELAY_FIX_UP,
&custom_element.drop_delay_random,
- NULL, "+random", NULL
+ NULL, "+random", NULL
},
// ---------- element settings: configure 2 (custom elements) ---------------
{
ED_COUNTER_ID_MOVE_DELAY_FIX,
- ED_ELEMENT_SETTINGS_XPOS(1), ED_ELEMENT_SETTINGS_YPOS(5),
- 0, 999,
- GADGET_ID_MOVE_DELAY_FIX_DOWN, GADGET_ID_MOVE_DELAY_FIX_UP,
- GADGET_ID_MOVE_DELAY_FIX_TEXT, GADGET_ID_NONE,
+ ED_ELEMENT_SETTINGS_XPOS(1), ED_ELEMENT_SETTINGS_YPOS(5),
+ 0, 999,
+ GADGET_ID_MOVE_DELAY_FIX_DOWN, GADGET_ID_MOVE_DELAY_FIX_UP,
+ GADGET_ID_MOVE_DELAY_FIX_TEXT, GADGET_ID_NONE,
&custom_element.move_delay_fixed,
- NULL, "move delay", NULL
+ NULL, "Move delay", NULL
},
{
ED_COUNTER_ID_MOVE_DELAY_RND,
- -1, ED_ELEMENT_SETTINGS_YPOS(5),
- 0, 999,
- GADGET_ID_MOVE_DELAY_RND_DOWN, GADGET_ID_MOVE_DELAY_RND_UP,
- GADGET_ID_MOVE_DELAY_RND_TEXT, GADGET_ID_MOVE_DELAY_FIX_UP,
+ -1, ED_ELEMENT_SETTINGS_YPOS(5),
+ 0, 999,
+ GADGET_ID_MOVE_DELAY_RND_DOWN, GADGET_ID_MOVE_DELAY_RND_UP,
+ GADGET_ID_MOVE_DELAY_RND_TEXT, GADGET_ID_MOVE_DELAY_FIX_UP,
&custom_element.move_delay_random,
- NULL, "+random", NULL
+ NULL, "+random", NULL
},
{
ED_COUNTER_ID_STEP_DELAY_FIX,
- ED_ELEMENT_SETTINGS_XPOS(1), ED_ELEMENT_SETTINGS_YPOS(6),
- 0, 999,
- GADGET_ID_STEP_DELAY_FIX_DOWN, GADGET_ID_STEP_DELAY_FIX_UP,
- GADGET_ID_STEP_DELAY_FIX_TEXT, GADGET_ID_NONE,
+ ED_ELEMENT_SETTINGS_XPOS(1), ED_ELEMENT_SETTINGS_YPOS(6),
+ 0, 999,
+ GADGET_ID_STEP_DELAY_FIX_DOWN, GADGET_ID_STEP_DELAY_FIX_UP,
+ GADGET_ID_STEP_DELAY_FIX_TEXT, GADGET_ID_NONE,
&custom_element.step_delay_fixed,
- NULL, "step delay", NULL
+ NULL, "Step delay", NULL
},
{
ED_COUNTER_ID_STEP_DELAY_RND,
- -1, ED_ELEMENT_SETTINGS_YPOS(6),
- 0, 999,
- GADGET_ID_STEP_DELAY_RND_DOWN, GADGET_ID_STEP_DELAY_RND_UP,
- GADGET_ID_STEP_DELAY_RND_TEXT, GADGET_ID_STEP_DELAY_FIX_UP,
+ -1, ED_ELEMENT_SETTINGS_YPOS(6),
+ 0, 999,
+ GADGET_ID_STEP_DELAY_RND_DOWN, GADGET_ID_STEP_DELAY_RND_UP,
+ GADGET_ID_STEP_DELAY_RND_TEXT, GADGET_ID_STEP_DELAY_FIX_UP,
&custom_element.step_delay_random,
- NULL, "+random", NULL
+ NULL, "+random", NULL
},
{
ED_COUNTER_ID_EXPLOSION_DELAY,
- ED_ELEMENT_SETTINGS_XPOS(1), ED_ELEMENT_SETTINGS_YPOS(13),
- 0, 999,
- GADGET_ID_EXPLOSION_DELAY_DOWN, GADGET_ID_EXPLOSION_DELAY_UP,
- GADGET_ID_EXPLOSION_DELAY_TEXT, GADGET_ID_NONE,
+ ED_ELEMENT_SETTINGS_XPOS(1), ED_ELEMENT_SETTINGS_YPOS(13),
+ 0, 999,
+ GADGET_ID_EXPLOSION_DELAY_DOWN, GADGET_ID_EXPLOSION_DELAY_UP,
+ GADGET_ID_EXPLOSION_DELAY_TEXT, GADGET_ID_NONE,
&custom_element.explosion_delay,
- NULL, "explosion delay", NULL
+ NULL, "Explosion delay", NULL
},
{
ED_COUNTER_ID_IGNITION_DELAY,
- ED_ELEMENT_SETTINGS_XPOS(1), ED_ELEMENT_SETTINGS_YPOS(14),
- 0, 999,
- GADGET_ID_IGNITION_DELAY_DOWN, GADGET_ID_IGNITION_DELAY_UP,
- GADGET_ID_IGNITION_DELAY_TEXT, GADGET_ID_NONE,
+ ED_ELEMENT_SETTINGS_XPOS(1), ED_ELEMENT_SETTINGS_YPOS(14),
+ 0, 999,
+ GADGET_ID_IGNITION_DELAY_DOWN, GADGET_ID_IGNITION_DELAY_UP,
+ GADGET_ID_IGNITION_DELAY_TEXT, GADGET_ID_NONE,
&custom_element.ignition_delay,
- NULL, "ignition delay", "(by fire)"
+ NULL, "Ignition delay", "(by fire)"
},
// ---------- element settings: configure (group elements) ------------------
{
ED_COUNTER_ID_GROUP_CONTENT,
- ED_ELEMENT_SETTINGS_XPOS(0), ED_ELEMENT_SETTINGS_YPOS(3),
- MIN_ELEMENTS_IN_GROUP, MAX_ELEMENTS_IN_GROUP,
- GADGET_ID_GROUP_CONTENT_DOWN, GADGET_ID_GROUP_CONTENT_UP,
- GADGET_ID_GROUP_CONTENT_TEXT, GADGET_ID_NONE,
+ ED_ELEMENT_SETTINGS_XPOS(0), ED_ELEMENT_SETTINGS_YPOS(3),
+ MIN_ELEMENTS_IN_GROUP, MAX_ELEMENTS_IN_GROUP,
+ GADGET_ID_GROUP_CONTENT_DOWN, GADGET_ID_GROUP_CONTENT_UP,
+ GADGET_ID_GROUP_CONTENT_TEXT, GADGET_ID_NONE,
&group_element_info.num_elements,
- NULL, NULL, "number of elements in group"
+ NULL, NULL, "Number of elements in group"
},
// ---------- element settings: advanced (custom elements) ------------------
{
ED_COUNTER_ID_CHANGE_DELAY_FIX,
- ED_ELEMENT_SETTINGS_XPOS(2), ED_ELEMENT_SETTINGS_YPOS(2),
- 0, 999,
- GADGET_ID_CHANGE_DELAY_FIX_DOWN, GADGET_ID_CHANGE_DELAY_FIX_UP,
- GADGET_ID_CHANGE_DELAY_FIX_TEXT, GADGET_ID_NONE,
+ ED_ELEMENT_SETTINGS_XPOS(2), ED_ELEMENT_SETTINGS_YPOS(2),
+ 0, 999,
+ GADGET_ID_CHANGE_DELAY_FIX_DOWN, GADGET_ID_CHANGE_DELAY_FIX_UP,
+ GADGET_ID_CHANGE_DELAY_FIX_TEXT, GADGET_ID_NONE,
&custom_element_change.delay_fixed,
- NULL, "CE delay", NULL,
+ NULL, "CE delay", NULL,
},
{
ED_COUNTER_ID_CHANGE_DELAY_RND,
- -1, ED_ELEMENT_SETTINGS_YPOS(2),
- 0, 999,
- GADGET_ID_CHANGE_DELAY_RND_DOWN, GADGET_ID_CHANGE_DELAY_RND_UP,
- GADGET_ID_CHANGE_DELAY_RND_TEXT, GADGET_ID_CHANGE_DELAY_FIX_UP,
+ -1, ED_ELEMENT_SETTINGS_YPOS(2),
+ 0, 999,
+ GADGET_ID_CHANGE_DELAY_RND_DOWN, GADGET_ID_CHANGE_DELAY_RND_UP,
+ GADGET_ID_CHANGE_DELAY_RND_TEXT, GADGET_ID_CHANGE_DELAY_FIX_UP,
&custom_element_change.delay_random,
- NULL, "+random", NULL
+ NULL, "+random", NULL
},
{
ED_COUNTER_ID_CHANGE_CONT_RND,
- ED_ELEMENT_SETTINGS_XPOS(3), ED_ELEMENT_SETTINGS_YPOS(12),
- 0, 100,
- GADGET_ID_CHANGE_CONT_RND_DOWN, GADGET_ID_CHANGE_CONT_RND_UP,
- GADGET_ID_CHANGE_CONT_RND_TEXT, GADGET_ID_NONE,
+ ED_ELEMENT_SETTINGS_XPOS(3), ED_ELEMENT_SETTINGS_YPOS(12),
+ 0, 100,
+ GADGET_ID_CHANGE_CONT_RND_DOWN, GADGET_ID_CHANGE_CONT_RND_UP,
+ GADGET_ID_CHANGE_CONT_RND_TEXT, GADGET_ID_NONE,
&custom_element_change.random_percentage,
- NULL, "use random replace:", "%"
+ NULL, "Use random replace:", "%"
},
};
int gadget_id;
int size;
char *value;
- char *text_above, *infotext;
+ char *text_above, *text_left, *text_right, *infotext;
} textinput_info[ED_NUM_TEXTINPUT] =
{
+ // ---------- level and editor settings -------------------------------------
+
{
ED_TEXTINPUT_ID_LEVEL_NAME,
- ED_LEVEL_SETTINGS_XPOS(0), ED_LEVEL_SETTINGS_YPOS(0),
+ ED_LEVEL_SETTINGS_XPOS(0), ED_LEVEL_SETTINGS_YPOS(0),
GADGET_ID_LEVEL_NAME,
MAX_LEVEL_NAME_LEN,
level.name,
- "Title:", "Title for this level"
+ "Title:", NULL, NULL, "Enter title for this level"
},
{
ED_TEXTINPUT_ID_LEVEL_AUTHOR,
- ED_LEVEL_SETTINGS_XPOS(0), ED_LEVEL_SETTINGS_YPOS(2),
+ ED_LEVEL_SETTINGS_XPOS(0), ED_LEVEL_SETTINGS_YPOS(2),
GADGET_ID_LEVEL_AUTHOR,
MAX_LEVEL_AUTHOR_LEN,
level.author,
- "Author:", "Author for this level"
+ "Author:", NULL, NULL, "Enter author for this level"
},
{
ED_TEXTINPUT_ID_LEVELSET_NAME,
- ED_LEVEL_SETTINGS_XPOS(0), ED_LEVEL_SETTINGS_YPOS(0),
+ ED_LEVEL_SETTINGS_XPOS(0), ED_LEVEL_SETTINGS_YPOS(0),
GADGET_ID_LEVELSET_NAME,
MAX_LEVEL_NAME_LEN,
levelset_name,
- "Title:", "Title for this or new level set"
+ "Title:", NULL, NULL, "Enter title for this or new level set"
},
{
ED_TEXTINPUT_ID_LEVELSET_AUTHOR,
- ED_LEVEL_SETTINGS_XPOS(0), ED_LEVEL_SETTINGS_YPOS(2),
+ ED_LEVEL_SETTINGS_XPOS(0), ED_LEVEL_SETTINGS_YPOS(2),
GADGET_ID_LEVELSET_AUTHOR,
MAX_LEVEL_AUTHOR_LEN,
levelset_author,
- "Author:", "Author for this or new level set"
+ "Author:", NULL, NULL, "Enter author for this or new level set"
+ },
+
+ // ---------- engine settings: colors ---------------------------------------
+
+ {
+ ED_TEXTINPUT_ID_BD_COLOR_TEXT_B,
+ ED_ENGINE_SETTINGS_XPOS(0), ED_ENGINE_SETTINGS_YPOS(1),
+ GADGET_ID_BD_COLOR_TEXT_B,
+ MAX_BD_COLOR_TEXT_LEN,
+ bd_color_text[0],
+ NULL, "Border color: ", NULL, "Enter border color (not used)"
},
+ {
+ ED_TEXTINPUT_ID_BD_COLOR_TEXT_0,
+ ED_ENGINE_SETTINGS_XPOS(0), ED_ENGINE_SETTINGS_YPOS(2),
+ GADGET_ID_BD_COLOR_TEXT_0,
+ MAX_BD_COLOR_TEXT_LEN,
+ bd_color_text[1],
+ NULL, "Background color: ", NULL, "Enter background color (C64 graphics)"
+ },
+ {
+ ED_TEXTINPUT_ID_BD_COLOR_TEXT_1,
+ ED_ENGINE_SETTINGS_XPOS(0), ED_ENGINE_SETTINGS_YPOS(3),
+ GADGET_ID_BD_COLOR_TEXT_1,
+ MAX_BD_COLOR_TEXT_LEN,
+ bd_color_text[2],
+ NULL, "Sand color: ", NULL, "Enter sand color (C64 graphics)"
+ },
+ {
+ ED_TEXTINPUT_ID_BD_COLOR_TEXT_2,
+ ED_ENGINE_SETTINGS_XPOS(0), ED_ENGINE_SETTINGS_YPOS(4),
+ GADGET_ID_BD_COLOR_TEXT_2,
+ MAX_BD_COLOR_TEXT_LEN,
+ bd_color_text[3],
+ NULL, "Steel wall color: ", NULL, "Enter steel wall color (C64 graphics)"
+ },
+ {
+ ED_TEXTINPUT_ID_BD_COLOR_TEXT_3,
+ ED_ENGINE_SETTINGS_XPOS(0), ED_ENGINE_SETTINGS_YPOS(5),
+ GADGET_ID_BD_COLOR_TEXT_3,
+ MAX_BD_COLOR_TEXT_LEN,
+ bd_color_text[4],
+ NULL, "Wall color: ", NULL, "Enter wall color (C64 graphics)"
+ },
+ {
+ ED_TEXTINPUT_ID_BD_COLOR_TEXT_4,
+ ED_ENGINE_SETTINGS_XPOS(0), ED_ENGINE_SETTINGS_YPOS(6),
+ GADGET_ID_BD_COLOR_TEXT_4,
+ MAX_BD_COLOR_TEXT_LEN,
+ bd_color_text[5],
+ NULL, "Amoeba color: ", NULL, "Enter amoeba color (C64 graphics)"
+ },
+ {
+ ED_TEXTINPUT_ID_BD_COLOR_TEXT_5,
+ ED_ENGINE_SETTINGS_XPOS(0), ED_ENGINE_SETTINGS_YPOS(7),
+ GADGET_ID_BD_COLOR_TEXT_5,
+ MAX_BD_COLOR_TEXT_LEN,
+ bd_color_text[6],
+ NULL, "Slime color: ", NULL, "Enter slime color (C64 graphics)"
+ },
+
+ // ---------- element settings: configure (several elements) ----------------
+
{
ED_TEXTINPUT_ID_ELEMENT_NAME,
-1, -1, // these values are not constant, but can change at runtime
GADGET_ID_ELEMENT_NAME,
- MAX_ELEMENT_NAME_LEN - 2, // currently 2 chars less editable
+ MAX_ELEMENT_NAME_LEN - 2, // currently 2 chars less editable
custom_element.description,
- NULL, "Element name"
+ NULL, NULL, NULL, "Enter element name"
}
};
{
{
ED_TEXTAREA_ID_ENVELOPE_INFO,
- ED_ELEMENT_SETTINGS_XPOS(0), ED_ELEMENT_SETTINGS_YPOS(3),
+ ED_ELEMENT_SETTINGS_XPOS(0), ED_ELEMENT_SETTINGS_YPOS(3),
GADGET_ID_ENVELOPE_INFO,
MAX_ENVELOPE_XSIZE, MAX_ENVELOPE_YSIZE,
NULL,
static struct ValueTextInfo options_time_or_steps[] =
{
- { 0, "seconds" },
- { 1, "steps" },
+ { 0, "seconds" },
+ { 1, "steps" },
- { -1, NULL }
+ { -1, NULL }
};
static struct ValueTextInfo options_time_score_base[] =
{
- { 1, "per second/step" },
- { 10, "per 10 seconds/steps" },
+ { 1, "per second/step" },
+ { 10, "per 10 seconds/steps" },
- { -1, NULL }
+ { -1, NULL }
};
static struct ValueTextInfo options_game_engine_type[] =
{
- { GAME_ENGINE_TYPE_RND, "Rocks'n'Diamonds" },
- { GAME_ENGINE_TYPE_BD, "Boulder Dash" },
- { GAME_ENGINE_TYPE_EM, "Emerald Mine" },
- { GAME_ENGINE_TYPE_SP, "Supaplex" },
- { GAME_ENGINE_TYPE_MM, "Mirror Magic" },
+ { GAME_ENGINE_TYPE_RND, "Rocks'n'Diamonds" },
+ { GAME_ENGINE_TYPE_BD, "Boulder Dash" },
+ { GAME_ENGINE_TYPE_EM, "Emerald Mine" },
+ { GAME_ENGINE_TYPE_SP, "Supaplex" },
+ { GAME_ENGINE_TYPE_MM, "Mirror Magic" },
- { -1, NULL }
+ { -1, NULL }
};
static struct ValueTextInfo options_levelset_save_mode[] =
{
- { LEVELSET_SAVE_MODE_UPDATE, "Update this level set" },
- { LEVELSET_SAVE_MODE_CREATE, "Create new level set" },
+ { LEVELSET_SAVE_MODE_UPDATE, "Update this level set" },
+ { LEVELSET_SAVE_MODE_CREATE, "Create new level set" },
- { -1, NULL }
+ { -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" },
- { MV_START_LEFT, "left" },
- { MV_START_RIGHT, "right" },
- { MV_START_UP, "up" },
- { MV_START_DOWN, "down" },
+ { MV_START_NONE, "none" },
+ { MV_START_LEFT, "left" },
+ { MV_START_RIGHT, "right" },
+ { MV_START_UP, "up" },
+ { MV_START_DOWN, "down" },
- { -1, NULL }
+ { -1, NULL }
};
static struct ValueTextInfo options_player_speed[] =
{
- { 0, "frozen" },
- { 1, "very slow" },
- { 2, "slow" },
- { 4, "normal" },
- { 8, "fast" },
- { 16, "very fast" },
- { 32, "ultrafast" },
+ { 0, "frozen" },
+ { 1, "very slow" },
+ { 2, "slow" },
+ { 4, "normal" },
+ { 8, "fast" },
+ { 16, "very fast" },
+ { 32, "ultrafast" },
- { -1, NULL }
+ { -1, NULL }
};
static struct ValueTextInfo options_access_type[] =
{
- { EP_WALKABLE, "walkable" },
- { EP_PASSABLE, "passable" },
+ { EP_WALKABLE, "walkable" },
+ { EP_PASSABLE, "passable" },
- { -1, NULL }
+ { -1, NULL }
};
static struct ValueTextInfo options_access_layer[] =
{
- { EP_ACCESSIBLE_OVER, "over" },
- { EP_ACCESSIBLE_INSIDE, "inside" },
- { EP_ACCESSIBLE_UNDER, "under" },
+ { EP_ACCESSIBLE_OVER, "over" },
+ { EP_ACCESSIBLE_INSIDE, "inside" },
+ { EP_ACCESSIBLE_UNDER, "under" },
- { -1, NULL }
+ { -1, NULL }
};
static struct ValueTextInfo options_access_protected[] =
{
- { 0, "unprotected" },
- { 1, "protected" },
+ { 0, "unprotected" },
+ { 1, "protected" },
- { -1, NULL }
+ { -1, NULL }
};
static struct ValueTextInfo options_access_direction[] =
{
- { MV_NO_DIRECTION, "no direction" },
- { MV_LEFT, "left" },
- { MV_RIGHT, "right" },
- { MV_UP, "up" },
- { MV_DOWN, "down" },
- { MV_LEFT | MV_UP, "left + up" },
- { MV_LEFT | MV_DOWN, "left + down" },
- { MV_RIGHT | MV_UP, "right + up" },
- { MV_RIGHT | MV_DOWN, "right + down" },
- { MV_HORIZONTAL, "horizontal" },
- { MV_VERTICAL, "vertical" },
- { MV_HORIZONTAL | MV_UP, "horizontal + up" },
- { MV_HORIZONTAL | MV_DOWN, "horizontal + down" },
- { MV_VERTICAL | MV_LEFT, "vertical + left" },
- { MV_VERTICAL | MV_RIGHT, "vertical + right" },
- { MV_ALL_DIRECTIONS, "all directions" },
-
- { -1, NULL }
+ { MV_NO_DIRECTION, "no direction" },
+ { MV_LEFT, "left" },
+ { MV_RIGHT, "right" },
+ { MV_UP, "up" },
+ { MV_DOWN, "down" },
+ { MV_LEFT | MV_UP, "left + up" },
+ { MV_LEFT | MV_DOWN, "left + down" },
+ { MV_RIGHT | MV_UP, "right + up" },
+ { MV_RIGHT | MV_DOWN, "right + down" },
+ { MV_HORIZONTAL, "horizontal" },
+ { MV_VERTICAL, "vertical" },
+ { MV_HORIZONTAL | MV_UP, "horizontal + up" },
+ { MV_HORIZONTAL | MV_DOWN, "horizontal + down" },
+ { MV_VERTICAL | MV_LEFT, "vertical + left" },
+ { MV_VERTICAL | MV_RIGHT, "vertical + right" },
+ { MV_ALL_DIRECTIONS, "all directions" },
+
+ { -1, NULL }
};
static struct ValueTextInfo options_walk_to_action[] =
{
- { EP_DIGGABLE, "diggable" },
- { EP_COLLECTIBLE_ONLY, "collectible" },
- { EP_DROPPABLE, "collectible & droppable" },
- { EP_THROWABLE, "collectible & throwable" },
- { EP_PUSHABLE, "pushable" },
+ { EP_DIGGABLE, "diggable" },
+ { EP_COLLECTIBLE_ONLY, "collectible" },
+ { EP_DROPPABLE, "collectible & droppable" },
+ { EP_THROWABLE, "collectible & throwable" },
+ { EP_PUSHABLE, "pushable" },
- { -1, NULL }
+ { -1, NULL }
};
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_WIND_DIRECTION, "wind direction" },
- { 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" },
- { MV_TURNING_LEFT, "turning left" },
- { MV_TURNING_RIGHT, "turning right" },
- { MV_TURNING_LEFT_RIGHT, "turning left, right" },
- { MV_TURNING_RIGHT_LEFT, "turning right, left" },
- { MV_TURNING_RANDOM, "turning random" },
- { MV_MAZE_RUNNER, "maze runner style" },
- { MV_MAZE_HUNTER, "maze hunter style" },
- { MV_WHEN_PUSHED, "when pushed" },
- { MV_WHEN_DROPPED, "when dropped/thrown" },
-
- { -1, NULL }
+ { MV_LEFT, "left" },
+ { MV_RIGHT, "right" },
+ { MV_UP, "up" },
+ { MV_DOWN, "down" },
+ { MV_HORIZONTAL, "horizontal" },
+ { MV_VERTICAL, "vertical" },
+ { MV_ALL_DIRECTIONS, "all directions" },
+ { MV_WIND_DIRECTION, "wind direction" },
+ { 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" },
+ { MV_TURNING_LEFT, "turning left" },
+ { MV_TURNING_RIGHT, "turning right" },
+ { MV_TURNING_LEFT_RIGHT, "turning left, right" },
+ { MV_TURNING_RIGHT_LEFT, "turning right, left" },
+ { MV_TURNING_RANDOM, "turning random" },
+ { MV_MAZE_RUNNER, "maze runner style" },
+ { MV_MAZE_HUNTER, "maze hunter style" },
+ { MV_WHEN_PUSHED, "when pushed" },
+ { MV_WHEN_DROPPED, "when dropped/thrown" },
+
+ { -1, NULL }
};
static struct ValueTextInfo options_move_direction[] =
{
- { MV_START_AUTOMATIC, "automatic" },
- { MV_START_LEFT, "left" },
- { MV_START_RIGHT, "right" },
- { MV_START_UP, "up" },
- { MV_START_DOWN, "down" },
- { MV_START_RANDOM, "random" },
- { MV_START_PREVIOUS, "previous" },
+ { MV_START_AUTOMATIC, "automatic" },
+ { MV_START_LEFT, "left" },
+ { MV_START_RIGHT, "right" },
+ { MV_START_UP, "up" },
+ { MV_START_DOWN, "down" },
+ { MV_START_RANDOM, "random" },
+ { MV_START_PREVIOUS, "previous" },
- { -1, NULL }
+ { -1, NULL }
};
static struct ValueTextInfo options_move_stepsize[] =
{
- { 0, "not moving" },
- { 1, "very slow" },
- { 2, "slow" },
- { 4, "normal" },
- { 8, "fast" },
- { 16, "very fast" },
- { 32, "even faster" },
+ { 0, "not moving" },
+ { 1, "very slow" },
+ { 2, "slow" },
+ { 4, "normal" },
+ { 8, "fast" },
+ { 16, "very fast" },
+ { 32, "even faster" },
- { -1, NULL }
+ { -1, NULL }
};
static struct ValueTextInfo options_move_leave_type[] =
{
- { LEAVE_TYPE_UNLIMITED, "leave behind" },
- { LEAVE_TYPE_LIMITED, "change it to" },
+ { LEAVE_TYPE_UNLIMITED, "leave behind" },
+ { LEAVE_TYPE_LIMITED, "change it to" },
- { -1, NULL }
+ { -1, NULL }
};
static struct ValueTextInfo options_smash_targets[] =
{
- { EP_CAN_SMASH_PLAYER, "player" },
+ { EP_CAN_SMASH_PLAYER, "player" },
#if 0
- { EP_CAN_SMASH_ENEMIES, "enemies" },
+ { EP_CAN_SMASH_ENEMIES, "enemies" },
#endif
- { EP_CAN_SMASH_EVERYTHING, "everything" },
+ { EP_CAN_SMASH_EVERYTHING, "everything" },
- { -1, NULL }
+ { -1, NULL }
};
static struct ValueTextInfo options_slippery_type[] =
{
- { SLIPPERY_ANY_RANDOM, "random" },
- { SLIPPERY_ANY_LEFT_RIGHT, "left, right" },
- { SLIPPERY_ANY_RIGHT_LEFT, "right, left" },
- { SLIPPERY_ONLY_LEFT, "only left" },
- { SLIPPERY_ONLY_RIGHT, "only right" },
+ { SLIPPERY_ANY_RANDOM, "random" },
+ { SLIPPERY_ANY_LEFT_RIGHT, "left, right" },
+ { SLIPPERY_ANY_RIGHT_LEFT, "right, left" },
+ { SLIPPERY_ONLY_LEFT, "only left" },
+ { SLIPPERY_ONLY_RIGHT, "only right" },
- { -1, NULL }
+ { -1, NULL }
};
static struct ValueTextInfo options_deadliness[] =
{
- { EP_DONT_RUN_INTO, "running into" },
- { EP_DONT_COLLIDE_WITH, "colliding with" },
- { EP_DONT_GET_HIT_BY, "getting hit by" },
- { EP_DONT_TOUCH, "touching" },
+ { EP_DONT_RUN_INTO, "running into" },
+ { EP_DONT_COLLIDE_WITH, "colliding with" },
+ { EP_DONT_GET_HIT_BY, "getting hit by" },
+ { EP_DONT_TOUCH, "touching" },
- { -1, NULL }
+ { -1, NULL }
};
static struct ValueTextInfo options_explosion_type[] =
{
- { EXPLODES_3X3, "3x3" },
- { EXPLODES_CROSS, "3+3" },
- { EXPLODES_1X1, "1x1" },
+ { EXPLODES_3X3, "3x3" },
+ { EXPLODES_CROSS, "3+3" },
+ { EXPLODES_1X1, "1x1" },
- { -1, NULL }
+ { -1, NULL }
};
static struct ValueTextInfo options_time_units[] =
{
- { 1, "frames" },
- { FRAMES_PER_SECOND, "seconds" },
+ { 1, "frames" },
+ { FRAMES_PER_SECOND, "seconds" },
- { -1, NULL }
+ { -1, NULL }
};
static struct ValueTextInfo options_change_direct_action[] =
{
- { CE_TOUCHED_BY_PLAYER, "touched by player" },
- { CE_PRESSED_BY_PLAYER, "pressed by player" },
- { CE_SWITCHED_BY_PLAYER, "switched by player" },
- { CE_SNAPPED_BY_PLAYER, "snapped by player" },
- { CE_PUSHED_BY_PLAYER, "pushed by player" },
- { CE_ENTERED_BY_PLAYER, "entered by player" },
- { CE_LEFT_BY_PLAYER, "left by player" },
- { CE_DROPPED_BY_PLAYER, "dropped/thrown by player" },
- { CE_SWITCHED, "switched" },
- { CE_HITTING_SOMETHING, "hitting something" },
- { CE_HIT_BY_SOMETHING, "hit by something" },
+ { CE_TOUCHED_BY_PLAYER, "touched by player" },
+ { CE_PRESSED_BY_PLAYER, "pressed by player" },
+ { CE_SWITCHED_BY_PLAYER, "switched by player" },
+ { CE_SNAPPED_BY_PLAYER, "snapped by player" },
+ { CE_PUSHED_BY_PLAYER, "pushed by player" },
+ { CE_ENTERED_BY_PLAYER, "entered by player" },
+ { CE_LEFT_BY_PLAYER, "left by player" },
+ { CE_DROPPED_BY_PLAYER, "dropped/thrown by player" },
+ { CE_SWITCHED, "switched" },
+ { CE_HITTING_SOMETHING, "hitting something" },
+ { CE_HIT_BY_SOMETHING, "hit by something" },
#if 0
- { CE_BLOCKED, "blocked" },
+ { CE_BLOCKED, "blocked" },
#endif
- { CE_IMPACT, "impact (on something)" },
- { CE_SMASHED, "smashed (from above)" },
+ { CE_IMPACT, "impact (on something)" },
+ { CE_SMASHED, "smashed (from above)" },
#if 0
- { CE_VALUE_CHANGES, "CE value changes" },
- { CE_SCORE_CHANGES, "CE score changes" },
+ { CE_VALUE_CHANGES, "CE value changes" },
+ { CE_SCORE_CHANGES, "CE score changes" },
#endif
- { CE_VALUE_GETS_ZERO, "CE value gets 0" },
- { CE_SCORE_GETS_ZERO, "CE score gets 0" },
- { CE_UNDEFINED, " " },
- { CE_HEADLINE_SPECIAL_EVENTS, "[mouse events]" },
- { CE_CLICKED_BY_MOUSE, "clicked by mouse" },
- { CE_PRESSED_BY_MOUSE, "pressed by mouse" },
- { CE_UNDEFINED, " " },
- { CE_HEADLINE_SPECIAL_EVENTS, "[static states]" },
- { CE_NEXT_TO_PLAYER, "next to player" },
-
- { -1, NULL }
+ { CE_VALUE_GETS_ZERO, "CE value gets 0" },
+ { CE_SCORE_GETS_ZERO, "CE score gets 0" },
+ { CE_UNDEFINED, " " },
+ { CE_HEADLINE_SPECIAL_EVENTS, "[mouse events]" },
+ { CE_CLICKED_BY_MOUSE, "clicked by mouse" },
+ { CE_PRESSED_BY_MOUSE, "pressed by mouse" },
+ { CE_UNDEFINED, " " },
+ { CE_HEADLINE_SPECIAL_EVENTS, "[static states]" },
+ { CE_NEXT_TO_PLAYER, "next to player" },
+
+ { -1, NULL }
};
static struct ValueTextInfo options_change_other_action[] =
{
- { CE_PLAYER_TOUCHES_X, "player touches" },
- { CE_PLAYER_PRESSES_X, "player presses" },
- { CE_PLAYER_SWITCHES_X, "player switches" },
- { CE_PLAYER_SNAPS_X, "player snaps" },
- { 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" },
- { CE_HITTING_X, "hitting" },
- { CE_DIGGING_X, "digging" },
- { CE_HIT_BY_X, "hit by" },
- { CE_SWITCH_OF_X, "switch of" },
- { CE_CHANGE_OF_X, "change by page of" },
- { CE_EXPLOSION_OF_X, "explosion of" },
- { CE_MOVE_OF_X, "move of" },
- { CE_CREATION_OF_X, "creation of" },
- { CE_VALUE_CHANGES_OF_X, "CE value changes of" },
- { CE_SCORE_CHANGES_OF_X, "CE score changes of" },
- { CE_VALUE_GETS_ZERO_OF_X, "CE value gets 0 of" },
- { CE_SCORE_GETS_ZERO_OF_X, "CE score gets 0 of" },
- { CE_UNDEFINED, " " },
- { CE_HEADLINE_SPECIAL_EVENTS, "[mouse events]" },
- { CE_MOUSE_CLICKED_ON_X, "mouse clicked on" },
- { CE_MOUSE_PRESSED_ON_X, "mouse pressed on" },
- { CE_UNDEFINED, " " },
- { CE_HEADLINE_SPECIAL_EVENTS, "[static states]" },
- { CE_PLAYER_NEXT_TO_X, "player next to" },
- { CE_NEXT_TO_X, "next to" },
-
- { -1, NULL }
+ { CE_PLAYER_TOUCHES_X, "player touches" },
+ { CE_PLAYER_PRESSES_X, "player presses" },
+ { CE_PLAYER_SWITCHES_X, "player switches" },
+ { CE_PLAYER_SNAPS_X, "player snaps" },
+ { 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" },
+ { CE_HITTING_X, "hitting" },
+ { CE_DIGGING_X, "digging" },
+ { CE_HIT_BY_X, "hit by" },
+ { CE_SWITCH_OF_X, "switch of" },
+ { CE_CHANGE_OF_X, "change by page of" },
+ { CE_EXPLOSION_OF_X, "explosion of" },
+ { CE_MOVE_OF_X, "move of" },
+ { CE_CREATION_OF_X, "creation of" },
+ { CE_VALUE_CHANGES_OF_X, "CE value changes of" },
+ { CE_SCORE_CHANGES_OF_X, "CE score changes of" },
+ { CE_VALUE_GETS_ZERO_OF_X, "CE value gets 0 of" },
+ { CE_SCORE_GETS_ZERO_OF_X, "CE score gets 0 of" },
+ { CE_UNDEFINED, " " },
+ { CE_HEADLINE_SPECIAL_EVENTS, "[mouse events]" },
+ { CE_MOUSE_CLICKED_ON_X, "mouse clicked on" },
+ { CE_MOUSE_PRESSED_ON_X, "mouse pressed on" },
+ { CE_UNDEFINED, " " },
+ { CE_HEADLINE_SPECIAL_EVENTS, "[static states]" },
+ { CE_PLAYER_NEXT_TO_X, "player next to" },
+ { CE_NEXT_TO_X, "next to" },
+
+ { -1, NULL }
};
static struct ValueTextInfo options_change_trigger_side[] =
{
- { CH_SIDE_LEFT, "left" },
- { CH_SIDE_RIGHT, "right" },
- { CH_SIDE_TOP, "top" },
- { CH_SIDE_BOTTOM, "bottom" },
- { CH_SIDE_LEFT_RIGHT, "left/right" },
- { CH_SIDE_TOP_BOTTOM, "top/bottom" },
- { CH_SIDE_ANY, "any" },
+ { CH_SIDE_LEFT, "left" },
+ { CH_SIDE_RIGHT, "right" },
+ { CH_SIDE_TOP, "top" },
+ { CH_SIDE_BOTTOM, "bottom" },
+ { CH_SIDE_LEFT_RIGHT, "left/right" },
+ { CH_SIDE_TOP_BOTTOM, "top/bottom" },
+ { CH_SIDE_ANY, "any" },
- { -1, NULL }
+ { -1, NULL }
};
static struct ValueTextInfo options_change_trigger_player[] =
{
- { CH_PLAYER_1, "1" },
- { CH_PLAYER_2, "2" },
- { CH_PLAYER_3, "3" },
- { CH_PLAYER_4, "4" },
- { CH_PLAYER_ANY, "any" },
+ { CH_PLAYER_1, "1" },
+ { CH_PLAYER_2, "2" },
+ { CH_PLAYER_3, "3" },
+ { CH_PLAYER_4, "4" },
+ { CH_PLAYER_ANY, "any" },
- { -1, NULL }
+ { -1, NULL }
};
static struct ValueTextInfo options_change_trigger_page[] =
{
- { (1u << 0), "1" },
- { (1u << 1), "2" },
- { (1u << 2), "3" },
- { (1u << 3), "4" },
- { (1u << 4), "5" },
- { (1u << 5), "6" },
- { (1u << 6), "7" },
- { (1u << 7), "8" },
- { (1u << 8), "9" },
- { (1u << 9), "10" },
- { (1u << 10), "11" },
- { (1u << 11), "12" },
- { (1u << 12), "13" },
- { (1u << 13), "14" },
- { (1u << 14), "15" },
- { (1u << 15), "16" },
- { (1u << 16), "17" },
- { (1u << 17), "18" },
- { (1u << 18), "19" },
- { (1u << 19), "20" },
- { (1u << 20), "21" },
- { (1u << 21), "22" },
- { (1u << 22), "23" },
- { (1u << 23), "24" },
- { (1u << 24), "25" },
- { (1u << 25), "26" },
- { (1u << 26), "27" },
- { (1u << 27), "28" },
- { (1u << 28), "29" },
- { (1u << 29), "30" },
- { (1u << 30), "31" },
- { (1u << 31), "32" },
- { CH_PAGE_ANY, "any" },
-
- { -1, NULL }
+ { (1u << 0), "1" },
+ { (1u << 1), "2" },
+ { (1u << 2), "3" },
+ { (1u << 3), "4" },
+ { (1u << 4), "5" },
+ { (1u << 5), "6" },
+ { (1u << 6), "7" },
+ { (1u << 7), "8" },
+ { (1u << 8), "9" },
+ { (1u << 9), "10" },
+ { (1u << 10), "11" },
+ { (1u << 11), "12" },
+ { (1u << 12), "13" },
+ { (1u << 13), "14" },
+ { (1u << 14), "15" },
+ { (1u << 15), "16" },
+ { (1u << 16), "17" },
+ { (1u << 17), "18" },
+ { (1u << 18), "19" },
+ { (1u << 19), "20" },
+ { (1u << 20), "21" },
+ { (1u << 21), "22" },
+ { (1u << 22), "23" },
+ { (1u << 23), "24" },
+ { (1u << 24), "25" },
+ { (1u << 25), "26" },
+ { (1u << 26), "27" },
+ { (1u << 27), "28" },
+ { (1u << 28), "29" },
+ { (1u << 29), "30" },
+ { (1u << 30), "31" },
+ { (1u << 31), "32" },
+ { CH_PAGE_ANY, "any" },
+
+ { -1, NULL }
};
static struct ValueTextInfo options_change_replace_when[] =
{
- { CP_WHEN_EMPTY, "empty" },
- { CP_WHEN_WALKABLE, "walkable" },
- { CP_WHEN_DIGGABLE, "diggable" },
- { CP_WHEN_COLLECTIBLE, "collectible" },
- { CP_WHEN_REMOVABLE, "removable" },
- { CP_WHEN_DESTRUCTIBLE, "destructible" },
+ { CP_WHEN_EMPTY, "empty" },
+ { CP_WHEN_WALKABLE, "walkable" },
+ { CP_WHEN_DIGGABLE, "diggable" },
+ { CP_WHEN_COLLECTIBLE, "collectible" },
+ { CP_WHEN_REMOVABLE, "removable" },
+ { CP_WHEN_DESTRUCTIBLE, "destructible" },
- { -1, NULL }
+ { -1, NULL }
};
static struct ValueTextInfo options_action_type[] =
{
- { CA_NO_ACTION, "no action" },
- { CA_UNDEFINED, " " },
- { CA_HEADLINE_LEVEL_ACTIONS, "[level]" },
- { CA_RESTART_LEVEL, "restart level" },
- { CA_SHOW_ENVELOPE, "show envelope" },
- { CA_SET_LEVEL_TIME, "set time" },
- { CA_SET_LEVEL_SCORE, "set score" },
- { CA_SET_LEVEL_GEMS, "set gems" },
- { CA_SET_LEVEL_WIND, "set wind dir." },
- { CA_SET_LEVEL_RANDOM_SEED, "set random seed" },
- { CA_UNDEFINED, " " },
- { CA_HEADLINE_PLAYER_ACTIONS, "[player]" },
- { CA_MOVE_PLAYER, "move player" },
- { CA_MOVE_PLAYER_NEW, "move player new" },
- { CA_EXIT_PLAYER, "exit player" },
- { CA_KILL_PLAYER, "kill player" },
- { CA_SET_PLAYER_KEYS, "set keys" },
- { CA_SET_PLAYER_SPEED, "set speed" },
- { CA_SET_PLAYER_SHIELD, "set shield" },
- { CA_SET_PLAYER_GRAVITY, "set gravity" },
- { CA_SET_PLAYER_ARTWORK, "set artwork" },
- { CA_SET_PLAYER_INVENTORY, "set inventory" },
- { CA_UNDEFINED, " " },
- { CA_HEADLINE_CE_ACTIONS, "[CE]" },
- { CA_SET_CE_VALUE, "set CE value" },
- { CA_SET_CE_SCORE, "set CE score" },
- { CA_SET_CE_ARTWORK, "set CE artwork" },
- { CA_UNDEFINED, " " },
- { CA_HEADLINE_ENGINE_ACTIONS, "[engine]" },
- { CA_SET_ENGINE_SCAN_MODE, "set scan mode" },
-
- { -1, NULL }
+ { CA_NO_ACTION, "no action" },
+ { CA_UNDEFINED, " " },
+ { CA_HEADLINE_LEVEL_ACTIONS, "[level]" },
+ { CA_RESTART_LEVEL, "restart level" },
+ { CA_SHOW_ENVELOPE, "show envelope" },
+ { CA_SET_LEVEL_TIME, "set time" },
+ { CA_SET_LEVEL_SCORE, "set score" },
+ { CA_SET_LEVEL_GEMS, "set gems" },
+ { CA_SET_LEVEL_WIND, "set wind dir." },
+ { CA_SET_LEVEL_RANDOM_SEED, "set random seed" },
+ { CA_UNDEFINED, " " },
+ { CA_HEADLINE_PLAYER_ACTIONS, "[player]" },
+ { CA_MOVE_PLAYER, "move player" },
+ { CA_MOVE_PLAYER_NEW, "move player new" },
+ { CA_EXIT_PLAYER, "exit player" },
+ { CA_KILL_PLAYER, "kill player" },
+ { CA_SET_PLAYER_KEYS, "set keys" },
+ { CA_SET_PLAYER_SPEED, "set speed" },
+ { CA_SET_PLAYER_SHIELD, "set shield" },
+ { CA_SET_PLAYER_GRAVITY, "set gravity" },
+ { CA_SET_PLAYER_ARTWORK, "set artwork" },
+ { CA_SET_PLAYER_INVENTORY, "set inventory" },
+ { CA_UNDEFINED, " " },
+ { CA_HEADLINE_CE_ACTIONS, "[CE]" },
+ { CA_SET_CE_VALUE, "set CE value" },
+ { CA_SET_CE_SCORE, "set CE score" },
+ { CA_SET_CE_ARTWORK, "set CE artwork" },
+ { CA_UNDEFINED, " " },
+ { CA_HEADLINE_ENGINE_ACTIONS, "[engine]" },
+ { CA_SET_ENGINE_SCAN_MODE, "set scan mode" },
+
+ { -1, NULL }
};
static struct ValueTextInfo options_action_mode_none[] =
{
- { CA_MODE_UNDEFINED, " " },
+ { CA_MODE_UNDEFINED, " " },
- { -1, NULL }
+ { -1, NULL }
};
static struct ValueTextInfo options_action_mode_assign[] =
{
- { CA_MODE_SET, "=" },
+ { CA_MODE_SET, "=" },
- { -1, NULL }
+ { -1, NULL }
};
static struct ValueTextInfo options_action_mode_add_remove[] =
{
- { CA_MODE_ADD, "+" },
- { CA_MODE_SUBTRACT, "-" },
+ { CA_MODE_ADD, "+" },
+ { CA_MODE_SUBTRACT, "-" },
- { -1, NULL }
+ { -1, NULL }
};
static struct ValueTextInfo options_action_mode_calculate[] =
{
- { CA_MODE_SET, "=" },
- { CA_MODE_ADD, "+" },
- { CA_MODE_SUBTRACT, "-" },
- { CA_MODE_MULTIPLY, "*" },
- { CA_MODE_DIVIDE, "/" },
- { CA_MODE_MODULO, "%" },
+ { CA_MODE_SET, "=" },
+ { CA_MODE_ADD, "+" },
+ { CA_MODE_SUBTRACT, "-" },
+ { CA_MODE_MULTIPLY, "*" },
+ { CA_MODE_DIVIDE, "/" },
+ { CA_MODE_MODULO, "%" },
- { -1, NULL }
+ { -1, NULL }
};
static struct ValueTextInfo options_action_arg_none[] =
{
- { CA_ARG_UNDEFINED, " " },
+ { CA_ARG_UNDEFINED, " " },
- { -1, NULL }
+ { -1, NULL }
};
static struct ValueTextInfo options_action_arg_player[] =
{
- { 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_PLAYER_ACTION, "action ->" },
+ { 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_PLAYER_ACTION, "action ->" },
- { -1, NULL }
+ { -1, NULL }
};
static struct ValueTextInfo options_action_arg_number[] =
{
- { 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_UNDEFINED, " " },
- { CA_ARG_NUMBER_RESET, "reset" },
- { CA_ARG_UNDEFINED, " " },
- { CA_ARG_NUMBER_CE_VALUE, "CE value" },
- { CA_ARG_NUMBER_CE_SCORE, "CE score" },
- { CA_ARG_NUMBER_CE_DELAY, "CE delay" },
- { CA_ARG_UNDEFINED, " " },
- { CA_ARG_NUMBER_LEVEL_TIME, "time" },
- { CA_ARG_NUMBER_LEVEL_GEMS, "gems" },
- { CA_ARG_NUMBER_LEVEL_SCORE, "score" },
- { CA_ARG_UNDEFINED, " " },
- { CA_ARG_ELEMENT_CV_HEADLINE, "[CE value]" },
- { CA_ARG_ELEMENT_CV_TARGET, "target" },
- { CA_ARG_ELEMENT_CV_TRIGGER, "trigger" },
- { CA_ARG_ELEMENT_CV_ACTION, "action ->" },
- { CA_ARG_UNDEFINED, " " },
- { CA_ARG_ELEMENT_CS_HEADLINE, "[CE score]" },
- { CA_ARG_ELEMENT_CS_TARGET, "target" },
- { CA_ARG_ELEMENT_CS_TRIGGER, "trigger" },
- { CA_ARG_ELEMENT_CS_ACTION, "action ->" },
-
- { -1, NULL }
+ { 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_UNDEFINED, " " },
+ { CA_ARG_NUMBER_RESET, "reset" },
+ { CA_ARG_UNDEFINED, " " },
+ { CA_ARG_NUMBER_CE_VALUE, "CE value" },
+ { CA_ARG_NUMBER_CE_SCORE, "CE score" },
+ { CA_ARG_NUMBER_CE_DELAY, "CE delay" },
+ { CA_ARG_UNDEFINED, " " },
+ { CA_ARG_NUMBER_LEVEL_TIME, "time" },
+ { CA_ARG_NUMBER_LEVEL_GEMS, "gems" },
+ { CA_ARG_NUMBER_LEVEL_SCORE, "score" },
+ { CA_ARG_UNDEFINED, " " },
+ { CA_ARG_ELEMENT_CV_HEADLINE, "[CE value]" },
+ { CA_ARG_ELEMENT_CV_TARGET, "target" },
+ { CA_ARG_ELEMENT_CV_TRIGGER, "trigger" },
+ { CA_ARG_ELEMENT_CV_ACTION, "action ->" },
+ { CA_ARG_UNDEFINED, " " },
+ { CA_ARG_ELEMENT_CS_HEADLINE, "[CE score]" },
+ { CA_ARG_ELEMENT_CS_TARGET, "target" },
+ { CA_ARG_ELEMENT_CS_TRIGGER, "trigger" },
+ { CA_ARG_ELEMENT_CS_ACTION, "action ->" },
+
+ { -1, NULL }
};
static struct ValueTextInfo options_action_arg_value[] =
{
- { 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_UNDEFINED, " " },
- { CA_ARG_NUMBER_RESET, "reset" },
- { CA_ARG_UNDEFINED, " " },
- { CA_ARG_NUMBER_CE_VALUE, "CE value" },
- { CA_ARG_NUMBER_CE_SCORE, "CE score" },
- { CA_ARG_NUMBER_CE_DELAY, "CE delay" },
- { CA_ARG_UNDEFINED, " " },
- { CA_ARG_NUMBER_LEVEL_TIME, "time" },
- { CA_ARG_NUMBER_LEVEL_GEMS, "gems" },
- { CA_ARG_NUMBER_LEVEL_SCORE, "score" },
- { CA_ARG_UNDEFINED, " " },
- { CA_ARG_ELEMENT_CV_HEADLINE, "[CE value]" },
- { CA_ARG_ELEMENT_CV_TARGET, "target" },
- { CA_ARG_ELEMENT_CV_TRIGGER, "trigger" },
- { CA_ARG_ELEMENT_CV_ACTION, "action ->" },
- { CA_ARG_UNDEFINED, " " },
- { CA_ARG_ELEMENT_CS_HEADLINE, "[CE score]" },
- { CA_ARG_ELEMENT_CS_TARGET, "target" },
- { CA_ARG_ELEMENT_CS_TRIGGER, "trigger" },
- { CA_ARG_ELEMENT_CS_ACTION, "action ->" },
- { CA_ARG_UNDEFINED, " " },
- { CA_ARG_ELEMENT_NR_HEADLINE, "[element]" },
- { CA_ARG_ELEMENT_NR_TARGET, "target" },
- { CA_ARG_ELEMENT_NR_TRIGGER, "trigger" },
- { CA_ARG_ELEMENT_NR_ACTION, "action ->" },
-
- { -1, NULL }
+ { 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_UNDEFINED, " " },
+ { CA_ARG_NUMBER_RESET, "reset" },
+ { CA_ARG_UNDEFINED, " " },
+ { CA_ARG_NUMBER_CE_VALUE, "CE value" },
+ { CA_ARG_NUMBER_CE_SCORE, "CE score" },
+ { CA_ARG_NUMBER_CE_DELAY, "CE delay" },
+ { CA_ARG_UNDEFINED, " " },
+ { CA_ARG_NUMBER_LEVEL_TIME, "time" },
+ { CA_ARG_NUMBER_LEVEL_GEMS, "gems" },
+ { CA_ARG_NUMBER_LEVEL_SCORE, "score" },
+ { CA_ARG_UNDEFINED, " " },
+ { CA_ARG_ELEMENT_CV_HEADLINE, "[CE value]" },
+ { CA_ARG_ELEMENT_CV_TARGET, "target" },
+ { CA_ARG_ELEMENT_CV_TRIGGER, "trigger" },
+ { CA_ARG_ELEMENT_CV_ACTION, "action ->" },
+ { CA_ARG_UNDEFINED, " " },
+ { CA_ARG_ELEMENT_CS_HEADLINE, "[CE score]" },
+ { CA_ARG_ELEMENT_CS_TARGET, "target" },
+ { CA_ARG_ELEMENT_CS_TRIGGER, "trigger" },
+ { CA_ARG_ELEMENT_CS_ACTION, "action ->" },
+ { CA_ARG_UNDEFINED, " " },
+ { CA_ARG_ELEMENT_NR_HEADLINE, "[element]" },
+ { CA_ARG_ELEMENT_NR_TARGET, "target" },
+ { CA_ARG_ELEMENT_NR_TRIGGER, "trigger" },
+ { CA_ARG_ELEMENT_NR_ACTION, "action ->" },
+
+ { -1, NULL }
};
static struct ValueTextInfo options_action_arg_envelope[] =
{
- { CA_ARG_NUMBER_HEADLINE, "[number]" },
- { CA_ARG_1, "1" },
- { CA_ARG_2, "2" },
- { CA_ARG_3, "3" },
- { CA_ARG_4, "4" },
- { CA_ARG_UNDEFINED, " " },
- { CA_ARG_ELEMENT_HEADLINE, "[element]" },
- { CA_ARG_ELEMENT_TARGET, "target" },
- { CA_ARG_ELEMENT_TRIGGER, "trigger" },
- { CA_ARG_ELEMENT_ACTION, "action ->" },
-
- { -1, NULL }
+ { CA_ARG_NUMBER_HEADLINE, "[number]" },
+ { CA_ARG_1, "1" },
+ { CA_ARG_2, "2" },
+ { CA_ARG_3, "3" },
+ { CA_ARG_4, "4" },
+ { CA_ARG_UNDEFINED, " " },
+ { CA_ARG_ELEMENT_HEADLINE, "[element]" },
+ { CA_ARG_ELEMENT_TARGET, "target" },
+ { CA_ARG_ELEMENT_TRIGGER, "trigger" },
+ { CA_ARG_ELEMENT_ACTION, "action ->" },
+
+ { -1, NULL }
};
static struct ValueTextInfo options_action_arg_key[] =
{
- { CA_ARG_NUMBER_HEADLINE, "[number]" },
- { CA_ARG_1, "1" },
- { CA_ARG_2, "2" },
- { CA_ARG_3, "3" },
- { CA_ARG_4, "4" },
- { CA_ARG_5, "5" },
- { CA_ARG_6, "6" },
- { CA_ARG_7, "7" },
- { CA_ARG_8, "8" },
- { CA_ARG_UNDEFINED, " " },
- { CA_ARG_ELEMENT_HEADLINE, "[element]" },
- { CA_ARG_ELEMENT_TARGET, "target" },
- { CA_ARG_ELEMENT_TRIGGER, "trigger" },
- { CA_ARG_ELEMENT_ACTION, "action ->" },
-
- { -1, NULL }
+ { CA_ARG_NUMBER_HEADLINE, "[number]" },
+ { CA_ARG_1, "1" },
+ { CA_ARG_2, "2" },
+ { CA_ARG_3, "3" },
+ { CA_ARG_4, "4" },
+ { CA_ARG_5, "5" },
+ { CA_ARG_6, "6" },
+ { CA_ARG_7, "7" },
+ { CA_ARG_8, "8" },
+ { CA_ARG_UNDEFINED, " " },
+ { CA_ARG_ELEMENT_HEADLINE, "[element]" },
+ { CA_ARG_ELEMENT_TARGET, "target" },
+ { CA_ARG_ELEMENT_TRIGGER, "trigger" },
+ { CA_ARG_ELEMENT_ACTION, "action ->" },
+
+ { -1, NULL }
};
static struct ValueTextInfo options_action_arg_speed[] =
{
- { CA_ARG_SPEED_HEADLINE, "[speed]" },
- { CA_ARG_SPEED_NOT_MOVING, "frozen" },
- { CA_ARG_SPEED_VERY_SLOW, "very slow" },
- { CA_ARG_SPEED_SLOW, "slow" },
- { CA_ARG_SPEED_NORMAL, "normal" },
- { CA_ARG_SPEED_FAST, "fast" },
- { CA_ARG_SPEED_VERY_FAST, "very fast" },
- { CA_ARG_SPEED_EVEN_FASTER, "ultrafast" },
- { CA_ARG_UNDEFINED, " " },
- { CA_ARG_SPEED_SLOWER, "slower" },
- { CA_ARG_SPEED_FASTER, "faster" },
- { CA_ARG_UNDEFINED, " " },
- { CA_ARG_SPEED_RESET, "reset" },
-
- { -1, NULL }
+ { CA_ARG_SPEED_HEADLINE, "[speed]" },
+ { CA_ARG_SPEED_NOT_MOVING, "frozen" },
+ { CA_ARG_SPEED_VERY_SLOW, "very slow" },
+ { CA_ARG_SPEED_SLOW, "slow" },
+ { CA_ARG_SPEED_NORMAL, "normal" },
+ { CA_ARG_SPEED_FAST, "fast" },
+ { CA_ARG_SPEED_VERY_FAST, "very fast" },
+ { CA_ARG_SPEED_EVEN_FASTER, "ultrafast" },
+ { CA_ARG_UNDEFINED, " " },
+ { CA_ARG_SPEED_SLOWER, "slower" },
+ { CA_ARG_SPEED_FASTER, "faster" },
+ { CA_ARG_UNDEFINED, " " },
+ { CA_ARG_SPEED_RESET, "reset" },
+
+ { -1, NULL }
};
static struct ValueTextInfo options_action_arg_shield[] =
{
- { CA_ARG_SHIELD_HEADLINE, "[shield]" },
- { CA_ARG_SHIELD_OFF, "off" },
- { CA_ARG_SHIELD_NORMAL, "normal" },
- { CA_ARG_SHIELD_DEADLY, "deadly" },
+ { CA_ARG_SHIELD_HEADLINE, "[shield]" },
+ { CA_ARG_SHIELD_OFF, "off" },
+ { CA_ARG_SHIELD_NORMAL, "normal" },
+ { CA_ARG_SHIELD_DEADLY, "deadly" },
- { -1, NULL }
+ { -1, NULL }
};
static struct ValueTextInfo options_action_arg_artwork[] =
{
- { CA_ARG_ELEMENT_HEADLINE, "[element]" },
- { CA_ARG_ELEMENT_TARGET, "target" },
- { CA_ARG_ELEMENT_TRIGGER, "trigger" },
- { CA_ARG_ELEMENT_ACTION, "action ->" },
- { CA_ARG_UNDEFINED, " " },
- { CA_ARG_ELEMENT_RESET, "reset" },
+ { CA_ARG_ELEMENT_HEADLINE, "[element]" },
+ { CA_ARG_ELEMENT_TARGET, "target" },
+ { CA_ARG_ELEMENT_TRIGGER, "trigger" },
+ { CA_ARG_ELEMENT_ACTION, "action ->" },
+ { CA_ARG_UNDEFINED, " " },
+ { CA_ARG_ELEMENT_RESET, "reset" },
- { -1, NULL }
+ { -1, NULL }
};
static struct ValueTextInfo options_action_arg_gravity[] =
{
- { CA_ARG_GRAVITY_HEADLINE, "[gravity]" },
- { CA_ARG_GRAVITY_ON, "on" },
- { CA_ARG_GRAVITY_OFF, "off" },
- { CA_ARG_GRAVITY_TOGGLE, "toggle" },
+ { CA_ARG_GRAVITY_HEADLINE, "[gravity]" },
+ { CA_ARG_GRAVITY_ON, "on" },
+ { CA_ARG_GRAVITY_OFF, "off" },
+ { CA_ARG_GRAVITY_TOGGLE, "toggle" },
- { -1, NULL }
+ { -1, NULL }
};
static struct ValueTextInfo options_action_arg_direction[] =
{
- { CA_ARG_DIRECTION_HEADLINE, "[dir.]" },
- { CA_ARG_DIRECTION_NONE, "none" },
- { CA_ARG_DIRECTION_LEFT, "left" },
- { CA_ARG_DIRECTION_RIGHT, "right" },
- { CA_ARG_DIRECTION_UP, "up" },
- { CA_ARG_DIRECTION_DOWN, "down" },
- { CA_ARG_DIRECTION_TRIGGER, "trigger" },
- { CA_ARG_DIRECTION_TRIGGER_BACK, "-trigger" },
+ { CA_ARG_DIRECTION_HEADLINE, "[dir.]" },
+ { CA_ARG_DIRECTION_NONE, "none" },
+ { CA_ARG_DIRECTION_LEFT, "left" },
+ { CA_ARG_DIRECTION_RIGHT, "right" },
+ { CA_ARG_DIRECTION_UP, "up" },
+ { CA_ARG_DIRECTION_DOWN, "down" },
+ { CA_ARG_DIRECTION_TRIGGER, "trigger" },
+ { CA_ARG_DIRECTION_TRIGGER_BACK, "-trigger" },
- { -1, NULL }
+ { -1, NULL }
};
static struct ValueTextInfo options_action_arg_scan_mode[] =
{
- { CA_ARG_SCAN_MODE_HEADLINE, "[mode]" },
- { CA_ARG_SCAN_MODE_NORMAL, "normal" },
- { CA_ARG_SCAN_MODE_REVERSE, "reverse" },
+ { CA_ARG_SCAN_MODE_HEADLINE, "[mode]" },
+ { CA_ARG_SCAN_MODE_NORMAL, "normal" },
+ { CA_ARG_SCAN_MODE_REVERSE, "reverse" },
- { -1, NULL }
+ { -1, NULL }
};
static struct ValueTextInfo options_action_arg_inventory[] =
{
- { CA_ARG_INVENTORY_HEADLINE, "[add]" },
- { CA_ARG_ELEMENT_TARGET, "+ target" },
- { CA_ARG_ELEMENT_TRIGGER, "+ trigger" },
- { CA_ARG_ELEMENT_ACTION, "+ action" },
- { CA_ARG_UNDEFINED, " " },
- { CA_ARG_INVENTORY_RM_HEADLINE,"[remove]" },
- { CA_ARG_INVENTORY_RM_TARGET, "- target" },
- { CA_ARG_INVENTORY_RM_TRIGGER,"- trigger" },
- { CA_ARG_INVENTORY_RM_ACTION, "- action" },
- { CA_ARG_INVENTORY_RM_FIRST, "- first" },
- { CA_ARG_INVENTORY_RM_LAST, "- last" },
- { CA_ARG_INVENTORY_RM_ALL, "- all" },
- { CA_ARG_UNDEFINED, " " },
- { CA_ARG_INVENTORY_RESET, "reset" },
-
- { -1, NULL }
+ { CA_ARG_INVENTORY_HEADLINE, "[add]" },
+ { CA_ARG_ELEMENT_TARGET, "+ target" },
+ { CA_ARG_ELEMENT_TRIGGER, "+ trigger" },
+ { CA_ARG_ELEMENT_ACTION, "+ action" },
+ { CA_ARG_UNDEFINED, " " },
+ { CA_ARG_INVENTORY_RM_HEADLINE, "[remove]" },
+ { CA_ARG_INVENTORY_RM_TARGET, "- target" },
+ { CA_ARG_INVENTORY_RM_TRIGGER, "- trigger" },
+ { CA_ARG_INVENTORY_RM_ACTION, "- action" },
+ { CA_ARG_INVENTORY_RM_FIRST, "- first" },
+ { CA_ARG_INVENTORY_RM_LAST, "- last" },
+ { CA_ARG_INVENTORY_RM_ALL, "- all" },
+ { CA_ARG_UNDEFINED, " " },
+ { CA_ARG_INVENTORY_RESET, "reset" },
+
+ { -1, NULL }
};
static char options_change_page_strings[MAX_CHANGE_PAGES][10];
static struct ValueTextInfo options_change_page[MAX_CHANGE_PAGES + 1] =
{
- { -1, NULL }
+ { -1, NULL }
};
static struct ValueTextInfo options_group_choice_mode[] =
{
- { ANIM_RANDOM, "random" },
- { ANIM_LOOP, "loop" },
- { ANIM_LINEAR, "linear" },
- { ANIM_PINGPONG, "pingpong" },
- { ANIM_PINGPONG2, "pingpong 2" },
- { ANIM_LEVEL_NR, "level number" },
+ { ANIM_RANDOM, "random" },
+ { ANIM_LOOP, "loop" },
+ { ANIM_LINEAR, "linear" },
+ { ANIM_PINGPONG, "pingpong" },
+ { ANIM_PINGPONG2, "pingpong 2" },
+ { ANIM_LEVEL_NR, "level number" },
- { -1, NULL }
+ { -1, NULL }
};
static struct ValueTextInfo options_bd_scheduling_type[] =
{
- { GD_SCHEDULING_MILLISECONDS, "Milliseconds" },
- { GD_SCHEDULING_BD1, "BD1" },
- { GD_SCHEDULING_BD2, "BD2" },
- { GD_SCHEDULING_PLCK, "Construction Kit" },
- { GD_SCHEDULING_CRDR, "Crazy Dream 7" },
- { GD_SCHEDULING_BD1_ATARI, "Atari BD1" },
- { GD_SCHEDULING_BD2_PLCK_ATARI, "Atari BD2 / PLCK" },
+ { GD_SCHEDULING_MILLISECONDS, "Milliseconds" },
+ { GD_SCHEDULING_BD1, "BD1" },
+ { GD_SCHEDULING_BD2, "BD2" },
+ { GD_SCHEDULING_PLCK, "Construction Kit" },
+ { GD_SCHEDULING_CRDR, "Crazy Dream 7" },
+ { GD_SCHEDULING_BD1_ATARI, "Atari BD1" },
+ { GD_SCHEDULING_BD2_PLCK_ATARI, "Atari BD2 / PLCK" },
+
+ { -1, NULL }
+};
+
+static struct ValueTextInfo options_bd_color_type[] =
+{
+ { GD_COLOR_TYPE_RGB, "RGB colors" },
+ { GD_COLOR_TYPE_C64, "C64 colors" },
+ { GD_COLOR_TYPE_C64DTV, "C64DTV colors" },
+ { GD_COLOR_TYPE_ATARI, "Atari colors" },
- { -1, NULL }
+ { -1, NULL }
+};
+
+static struct ValueTextInfo options_bd_color_c64_name[] =
+{
+ { GD_COLOR_INDEX_BLACK, "Black" },
+ { GD_COLOR_INDEX_WHITE, "White" },
+ { GD_COLOR_INDEX_RED, "Red" },
+ { GD_COLOR_INDEX_CYAN, "Cyan" },
+ { GD_COLOR_INDEX_PURPLE, "Purple" },
+ { GD_COLOR_INDEX_GREEN, "Green" },
+ { GD_COLOR_INDEX_BLUE, "Blue" },
+ { GD_COLOR_INDEX_YELLOW, "Yellow" },
+ { GD_COLOR_INDEX_ORANGE, "Orange" },
+ { GD_COLOR_INDEX_BROWN, "Brown" },
+ { GD_COLOR_INDEX_LIGHTRED, "Light red" },
+ { GD_COLOR_INDEX_GRAY1, "Dark gray" },
+ { GD_COLOR_INDEX_GRAY2, "Gray" },
+ { GD_COLOR_INDEX_LIGHTGREEN, "Light green" },
+ { GD_COLOR_INDEX_LIGHTBLUE, "Light blue" },
+ { GD_COLOR_INDEX_GRAY3, "Light gray" },
+
+ { -1, NULL }
};
static struct ValueTextInfo *action_arg_modes[] =
{
ED_SELECTBOX_ID_TIME_OR_STEPS,
- -1, ED_LEVEL_SETTINGS_YPOS(8),
- GADGET_ID_TIME_OR_STEPS, GADGET_ID_LEVEL_TIMELIMIT_UP,
+ -1, ED_LEVEL_SETTINGS_YPOS(8),
+ GADGET_ID_TIME_OR_STEPS, GADGET_ID_LEVEL_TIMELIMIT_UP,
-1,
options_time_or_steps,
&level.use_step_counter,
- NULL, NULL, "(0 => no limit)", "time or step limit"
+ NULL, NULL, "(0 => no limit)", "Select time or step limit"
},
{
ED_SELECTBOX_ID_TIME_SCORE_BASE,
- -1, ED_LEVEL_SETTINGS_YPOS(10),
- GADGET_ID_TIME_SCORE_BASE, GADGET_ID_LEVEL_TIMESCORE_UP,
+ -1, ED_LEVEL_SETTINGS_YPOS(10),
+ GADGET_ID_TIME_SCORE_BASE, GADGET_ID_LEVEL_TIMESCORE_UP,
-1,
options_time_score_base,
&level.time_score_base,
- NULL, NULL, NULL, "time score for 1 or 10 seconds/steps"
+ NULL, NULL, NULL, "Select time score for 1 or 10 seconds/steps"
},
{
ED_SELECTBOX_ID_GAME_ENGINE_TYPE,
- ED_LEVEL_SETTINGS_XPOS(0), ED_LEVEL_SETTINGS_YPOS(12),
- GADGET_ID_GAME_ENGINE_TYPE, GADGET_ID_NONE,
+ ED_LEVEL_SETTINGS_XPOS(0), ED_LEVEL_SETTINGS_YPOS(12),
+ GADGET_ID_GAME_ENGINE_TYPE, GADGET_ID_NONE,
-1,
options_game_engine_type,
&level.game_engine_type,
- NULL, "game engine:", NULL, "game engine"
+ NULL, "Game engine:", NULL, "Select game engine"
},
+ {
+ ED_SELECTBOX_ID_LEVELSET_SAVE_MODE,
+ ED_LEVEL_SETTINGS_XPOS(0), ED_LEVEL_SETTINGS_YPOS(10),
+ GADGET_ID_LEVELSET_SAVE_MODE, GADGET_ID_NONE,
+ -1,
+ options_levelset_save_mode,
+ &levelset_save_mode,
+ "Action:", NULL, NULL, "Select action when saving level set"
+ },
+
+ // ---------- engine settings: config ---------------------------------------
+
{
ED_SELECTBOX_ID_BD_SCHEDULING_TYPE,
- ED_LEVEL_SETTINGS_XPOS(0), ED_LEVEL_SETTINGS_YPOS(1),
- GADGET_ID_BD_SCHEDULING_TYPE, GADGET_ID_NONE,
+ ED_ENGINE_SETTINGS_XPOS(0), ED_ENGINE_SETTINGS_YPOS(1),
+ GADGET_ID_BD_SCHEDULING_TYPE, GADGET_ID_NONE,
-1,
options_bd_scheduling_type,
&level.bd_scheduling_type,
- NULL, "scheduling type:", NULL, "level timing"
+ NULL, "Scheduling type:", NULL, "Select level timing"
},
+
+ // ---------- engine settings: colors ---------------------------------------
+
{
- ED_SELECTBOX_ID_LEVELSET_SAVE_MODE,
- ED_LEVEL_SETTINGS_XPOS(0), ED_LEVEL_SETTINGS_YPOS(10),
- GADGET_ID_LEVELSET_SAVE_MODE, GADGET_ID_NONE,
+ ED_SELECTBOX_ID_BD_COLOR_TYPE,
+ ED_ENGINE_SETTINGS_XPOS(0), ED_ENGINE_SETTINGS_YPOS(0),
+ GADGET_ID_BD_COLOR_TYPE, GADGET_ID_NONE,
-1,
- options_levelset_save_mode,
- &levelset_save_mode,
- "Action:", NULL, NULL, "action when saving level set"
+ options_bd_color_type,
+ &level.bd_color_type,
+ "Boulder Dash level colors:",
+ "Color palette type:", NULL, "Select color palette type"
+ },
+ {
+ ED_SELECTBOX_ID_BD_COLOR_C64_B,
+ ED_ENGINE_SETTINGS_XPOS(0), ED_ENGINE_SETTINGS_YPOS(1),
+ GADGET_ID_BD_COLOR_C64_B, GADGET_ID_NONE,
+ -1,
+ options_bd_color_c64_name,
+ &bd_color_c64[0],
+ NULL, "Border color: ", NULL, "Select border color (not used)"
+ },
+ {
+ ED_SELECTBOX_ID_BD_COLOR_C64_0,
+ ED_ENGINE_SETTINGS_XPOS(0), ED_ENGINE_SETTINGS_YPOS(2),
+ GADGET_ID_BD_COLOR_C64_0, GADGET_ID_NONE,
+ -1,
+ options_bd_color_c64_name,
+ &bd_color_c64[1],
+ NULL, "Background color: ", NULL, "Select background color (C64 graphics)"
+ },
+ {
+ ED_SELECTBOX_ID_BD_COLOR_C64_1,
+ ED_ENGINE_SETTINGS_XPOS(0), ED_ENGINE_SETTINGS_YPOS(3),
+ GADGET_ID_BD_COLOR_C64_1, GADGET_ID_NONE,
+ -1,
+ options_bd_color_c64_name,
+ &bd_color_c64[2],
+ NULL, "Sand color: ", NULL, "Select sand color (C64 graphics)"
+ },
+ {
+ ED_SELECTBOX_ID_BD_COLOR_C64_2,
+ ED_ENGINE_SETTINGS_XPOS(0), ED_ENGINE_SETTINGS_YPOS(4),
+ GADGET_ID_BD_COLOR_C64_2, GADGET_ID_NONE,
+ -1,
+ options_bd_color_c64_name,
+ &bd_color_c64[3],
+ NULL, "Steel wall color: ", NULL, "Select steel wall color (C64 graphics)"
+ },
+ {
+ ED_SELECTBOX_ID_BD_COLOR_C64_3,
+ ED_ENGINE_SETTINGS_XPOS(0), ED_ENGINE_SETTINGS_YPOS(5),
+ GADGET_ID_BD_COLOR_C64_3, GADGET_ID_NONE,
+ -1,
+ options_bd_color_c64_name,
+ &bd_color_c64[4],
+ NULL, "Wall color: ", NULL, "Select wall color (C64 graphics)"
+ },
+ {
+ ED_SELECTBOX_ID_BD_COLOR_C64_4,
+ ED_ENGINE_SETTINGS_XPOS(0), ED_ENGINE_SETTINGS_YPOS(6),
+ GADGET_ID_BD_COLOR_C64_4, GADGET_ID_NONE,
+ -1,
+ options_bd_color_c64_name,
+ &bd_color_c64[5],
+ NULL, "Amoeba color: ", NULL, "Select amoeba color (C64 graphics)"
+ },
+ {
+ ED_SELECTBOX_ID_BD_COLOR_C64_5,
+ ED_ENGINE_SETTINGS_XPOS(0), ED_ENGINE_SETTINGS_YPOS(7),
+ GADGET_ID_BD_COLOR_C64_5, GADGET_ID_NONE,
+ -1,
+ options_bd_color_c64_name,
+ &bd_color_c64[6],
+ NULL, "Slime color: ", NULL, "Select slime color (C64 graphics)"
},
// ---------- element settings: configure (several elements) ----------------
{
ED_SELECTBOX_ID_WIND_DIRECTION,
- ED_ELEMENT_SETTINGS_XPOS(0), ED_ELEMENT_SETTINGS_YPOS(0),
- GADGET_ID_WIND_DIRECTION, GADGET_ID_NONE,
+ ED_ELEMENT_SETTINGS_XPOS(0), ED_ELEMENT_SETTINGS_YPOS(0),
+ GADGET_ID_WIND_DIRECTION, GADGET_ID_NONE,
-1,
options_wind_direction,
&level.wind_direction_initial,
- NULL, "initial wind direction:", NULL, "initial wind direction"
+ NULL, "Initial wind direction:", NULL, "Select initial wind direction"
},
{
ED_SELECTBOX_ID_PLAYER_SPEED,
- ED_ELEMENT_SETTINGS_XPOS(0), ED_ELEMENT_SETTINGS_YPOS(7),
- GADGET_ID_PLAYER_SPEED, GADGET_ID_NONE,
+ ED_ELEMENT_SETTINGS_XPOS(0), ED_ELEMENT_SETTINGS_YPOS(7),
+ GADGET_ID_PLAYER_SPEED, GADGET_ID_NONE,
-1,
options_player_speed,
&level.initial_player_stepsize[0],
- NULL, "initial player speed:", NULL, "initial player speed"
+ 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),
- GADGET_ID_MM_BALL_CHOICE_MODE, GADGET_ID_NONE,
+ ED_ELEMENT_SETTINGS_XPOS(0), ED_ELEMENT_SETTINGS_YPOS(4),
+ GADGET_ID_MM_BALL_CHOICE_MODE, GADGET_ID_NONE,
-1,
options_group_choice_mode,
&level.mm_ball_choice_mode,
- NULL, "choice type:", NULL, "type of content choice"
+ NULL, "Choice type:", NULL, "Select type of content choice"
},
// ---------- element settings: configure 1 (custom elements) ---------------
{
ED_SELECTBOX_ID_CUSTOM_ACCESS_TYPE,
- ED_ELEMENT_SETTINGS_XPOS(1), ED_ELEMENT_SETTINGS_YPOS(2),
- GADGET_ID_CUSTOM_ACCESS_TYPE, GADGET_ID_NONE,
+ ED_ELEMENT_SETTINGS_XPOS(1), ED_ELEMENT_SETTINGS_YPOS(2),
+ GADGET_ID_CUSTOM_ACCESS_TYPE, GADGET_ID_NONE,
-1,
options_access_type,
&custom_element.access_type,
- NULL, NULL, NULL, "type of access to this field"
+ NULL, NULL, NULL, "Select type of access to this field"
},
{
ED_SELECTBOX_ID_CUSTOM_ACCESS_LAYER,
- -1, ED_ELEMENT_SETTINGS_YPOS(2),
- GADGET_ID_CUSTOM_ACCESS_LAYER, GADGET_ID_CUSTOM_ACCESS_TYPE,
+ -1, ED_ELEMENT_SETTINGS_YPOS(2),
+ GADGET_ID_CUSTOM_ACCESS_LAYER, GADGET_ID_CUSTOM_ACCESS_TYPE,
-1,
options_access_layer,
&custom_element.access_layer,
- NULL, NULL, NULL, "layer of access for this field"
+ NULL, NULL, NULL, "Select layer of access for this field"
},
{
ED_SELECTBOX_ID_CUSTOM_ACCESS_PROTECTED,
- -1, ED_ELEMENT_SETTINGS_YPOS(2),
- GADGET_ID_CUSTOM_ACCESS_PROTECTED, GADGET_ID_CUSTOM_ACCESS_LAYER,
+ -1, ED_ELEMENT_SETTINGS_YPOS(2),
+ GADGET_ID_CUSTOM_ACCESS_PROTECTED, GADGET_ID_CUSTOM_ACCESS_LAYER,
-1,
options_access_protected,
&custom_element.access_protected,
- NULL, NULL, NULL, "protected access for this field"
+ NULL, NULL, NULL, "Select protected access for this field"
},
{
ED_SELECTBOX_ID_CUSTOM_ACCESS_DIRECTION,
- ED_ELEMENT_SETTINGS_XPOS(1), ED_ELEMENT_SETTINGS_YPOS(3),
- GADGET_ID_CUSTOM_ACCESS_DIRECTION, GADGET_ID_NONE,
+ ED_ELEMENT_SETTINGS_XPOS(1), ED_ELEMENT_SETTINGS_YPOS(3),
+ GADGET_ID_CUSTOM_ACCESS_DIRECTION, GADGET_ID_NONE,
-1,
options_access_direction,
&custom_element.access_direction,
- NULL, "from", NULL, "access direction for this field"
+ NULL, "from", NULL, "Select access direction for this field"
},
{
ED_SELECTBOX_ID_CUSTOM_WALK_TO_ACTION,
- ED_ELEMENT_SETTINGS_XPOS(1), ED_ELEMENT_SETTINGS_YPOS(4),
- GADGET_ID_CUSTOM_WALK_TO_ACTION, GADGET_ID_NONE,
+ ED_ELEMENT_SETTINGS_XPOS(1), ED_ELEMENT_SETTINGS_YPOS(4),
+ GADGET_ID_CUSTOM_WALK_TO_ACTION, GADGET_ID_NONE,
-1,
options_walk_to_action,
&custom_element.walk_to_action,
- NULL, NULL, NULL, "diggable/collectible/pushable"
+ NULL, NULL, NULL, "Select diggable/collectible/pushable"
},
// ---------- element settings: configure 2 (custom elements) ---------------
{
ED_SELECTBOX_ID_CUSTOM_MOVE_PATTERN,
- ED_ELEMENT_SETTINGS_XPOS(1), ED_ELEMENT_SETTINGS_YPOS(1),
- GADGET_ID_CUSTOM_MOVE_PATTERN, GADGET_ID_NONE,
+ ED_ELEMENT_SETTINGS_XPOS(1), ED_ELEMENT_SETTINGS_YPOS(1),
+ GADGET_ID_CUSTOM_MOVE_PATTERN, GADGET_ID_NONE,
-1,
options_move_pattern,
&custom_element.move_pattern,
- NULL, "can move", NULL, "element move pattern"
+ NULL, "Can move", NULL, "Select element move pattern"
},
{
ED_SELECTBOX_ID_CUSTOM_MOVE_DIRECTION,
- ED_ELEMENT_SETTINGS_XPOS(1), ED_ELEMENT_SETTINGS_YPOS(2),
- GADGET_ID_CUSTOM_MOVE_DIRECTION, GADGET_ID_NONE,
+ ED_ELEMENT_SETTINGS_XPOS(1), ED_ELEMENT_SETTINGS_YPOS(2),
+ GADGET_ID_CUSTOM_MOVE_DIRECTION, GADGET_ID_NONE,
-1,
options_move_direction,
&custom_element.move_direction_initial,
- NULL, "starts moving", NULL, "initial element move direction"
+ NULL, "Starts moving", NULL, "Select initial element move direction"
},
{
ED_SELECTBOX_ID_CUSTOM_MOVE_STEPSIZE,
- ED_ELEMENT_SETTINGS_XPOS(1), ED_ELEMENT_SETTINGS_YPOS(4),
- GADGET_ID_CUSTOM_MOVE_STEPSIZE, GADGET_ID_NONE,
+ ED_ELEMENT_SETTINGS_XPOS(1), ED_ELEMENT_SETTINGS_YPOS(4),
+ GADGET_ID_CUSTOM_MOVE_STEPSIZE, GADGET_ID_NONE,
-1,
options_move_stepsize,
&custom_element.move_stepsize,
- NULL, "move/fall speed", NULL, "speed of element movement"
+ NULL, "Move/fall speed", NULL, "Select speed of element movement"
},
{
ED_SELECTBOX_ID_CUSTOM_MOVE_LEAVE_TYPE,
- ED_ELEMENT_SETTINGS_XPOS(1), ED_ELEMENT_SETTINGS_YPOS(3),
- GADGET_ID_CUSTOM_MOVE_LEAVE_TYPE, GADGET_ID_NONE,
+ ED_ELEMENT_SETTINGS_XPOS(1), ED_ELEMENT_SETTINGS_YPOS(3),
+ GADGET_ID_CUSTOM_MOVE_LEAVE_TYPE, GADGET_ID_NONE,
-1,
options_move_leave_type,
&custom_element.move_leave_type,
// left text with leading spaces to place gadget next to "can dig" gadget
// (needed because drawing area gadgets created after selectbox gadgets)
- // NULL, "can dig: can", ":", "leave behind or change element"
- NULL, " can", ":", "leave behind or change element"
+ // NULL, "can dig: can", ":", "leave behind or change element"
+ NULL, " Can", ":", "Select leave behind or change element"
},
{
ED_SELECTBOX_ID_CUSTOM_SMASH_TARGETS,
- -1, ED_ELEMENT_SETTINGS_YPOS(8),
- GADGET_ID_CUSTOM_SMASH_TARGETS, GADGET_ID_CUSTOM_CAN_SMASH,
+ -1, ED_ELEMENT_SETTINGS_YPOS(8),
+ GADGET_ID_CUSTOM_SMASH_TARGETS, GADGET_ID_CUSTOM_CAN_SMASH,
-1,
options_smash_targets,
&custom_element.smash_targets,
- NULL, "can smash", NULL, "elements that can be smashed"
+ NULL, "Can smash", NULL, "Select elements that can be smashed"
},
{
ED_SELECTBOX_ID_CUSTOM_SLIPPERY_TYPE,
- ED_ELEMENT_SETTINGS_XPOS(1), ED_ELEMENT_SETTINGS_YPOS(9),
- GADGET_ID_CUSTOM_SLIPPERY_TYPE, GADGET_ID_NONE,
+ ED_ELEMENT_SETTINGS_XPOS(1), ED_ELEMENT_SETTINGS_YPOS(9),
+ GADGET_ID_CUSTOM_SLIPPERY_TYPE, GADGET_ID_NONE,
-1,
options_slippery_type,
&custom_element.slippery_type,
- NULL, "slippery", NULL, "where other elements fall down"
+ NULL, "Slippery", NULL, "Select where other elements fall down"
},
{
ED_SELECTBOX_ID_CUSTOM_DEADLINESS,
- ED_ELEMENT_SETTINGS_XPOS(1), ED_ELEMENT_SETTINGS_YPOS(10),
- GADGET_ID_CUSTOM_DEADLINESS, GADGET_ID_NONE,
+ ED_ELEMENT_SETTINGS_XPOS(1), ED_ELEMENT_SETTINGS_YPOS(10),
+ GADGET_ID_CUSTOM_DEADLINESS, GADGET_ID_NONE,
-1,
options_deadliness,
&custom_element.deadliness,
- NULL, "deadly when", NULL, "deadliness of element"
+ NULL, "Deadly when", NULL, "Select deadliness of element"
},
{
ED_SELECTBOX_ID_CUSTOM_EXPLOSION_TYPE,
- ED_ELEMENT_SETTINGS_XPOS(1), ED_ELEMENT_SETTINGS_YPOS(11),
- GADGET_ID_CUSTOM_EXPLOSION_TYPE, GADGET_ID_NONE,
+ ED_ELEMENT_SETTINGS_XPOS(1), ED_ELEMENT_SETTINGS_YPOS(11),
+ GADGET_ID_CUSTOM_EXPLOSION_TYPE, GADGET_ID_NONE,
-1,
options_explosion_type,
&custom_element.explosion_type,
- NULL, "can explode", NULL, "explosion type"
+ NULL, "Can explode", NULL, "Select explosion type"
},
// ---------- element settings: advanced (custom elements) ------------------
{
ED_SELECTBOX_ID_CHANGE_TIME_UNITS,
- ED_ELEMENT_SETTINGS_XPOS(2), ED_ELEMENT_SETTINGS_YPOS(3),
- GADGET_ID_CHANGE_TIME_UNITS, GADGET_ID_NONE,
+ ED_ELEMENT_SETTINGS_XPOS(2), ED_ELEMENT_SETTINGS_YPOS(3),
+ GADGET_ID_CHANGE_TIME_UNITS, GADGET_ID_NONE,
-1,
options_time_units,
&custom_element_change.delay_frames,
- NULL, "delay time given in", NULL, "delay time units for change"
+ NULL, "Delay time given in", NULL, "Select delay time units for change"
},
{
ED_SELECTBOX_ID_CHANGE_DIRECT_ACTION,
- ED_ELEMENT_SETTINGS_XPOS(2), ED_ELEMENT_SETTINGS_YPOS(4),
- GADGET_ID_CHANGE_DIRECT_ACTION, GADGET_ID_NONE,
+ ED_ELEMENT_SETTINGS_XPOS(2), ED_ELEMENT_SETTINGS_YPOS(4),
+ GADGET_ID_CHANGE_DIRECT_ACTION, GADGET_ID_NONE,
-1,
options_change_direct_action,
&custom_element_change.direct_action,
- NULL, NULL, NULL, "type of direct action"
+ NULL, NULL, NULL, "Select type of direct action"
},
{
ED_SELECTBOX_ID_CHANGE_OTHER_ACTION,
- ED_ELEMENT_SETTINGS_XPOS(2), ED_ELEMENT_SETTINGS_YPOS(5),
- GADGET_ID_CHANGE_OTHER_ACTION, GADGET_ID_NONE,
+ ED_ELEMENT_SETTINGS_XPOS(2), ED_ELEMENT_SETTINGS_YPOS(5),
+ GADGET_ID_CHANGE_OTHER_ACTION, GADGET_ID_NONE,
-1,
options_change_other_action,
&custom_element_change.other_action,
- NULL, NULL, "element:", "type of other element action"
+ NULL, NULL, "element:", "Select type of other element action"
},
{
ED_SELECTBOX_ID_CHANGE_SIDE,
- ED_ELEMENT_SETTINGS_XPOS(2), ED_ELEMENT_SETTINGS_YPOS(6),
- GADGET_ID_CHANGE_SIDE, GADGET_ID_NONE,
+ ED_ELEMENT_SETTINGS_XPOS(2), ED_ELEMENT_SETTINGS_YPOS(6),
+ GADGET_ID_CHANGE_SIDE, GADGET_ID_NONE,
-1,
options_change_trigger_side,
&custom_element_change.trigger_side,
- NULL, "at", "side", "element side triggering change"
+ NULL, "at", "side", "Select element side triggering change"
},
{
ED_SELECTBOX_ID_CHANGE_PLAYER,
- ED_ELEMENT_SETTINGS_XPOS(2), ED_ELEMENT_SETTINGS_YPOS(7),
- GADGET_ID_CHANGE_PLAYER, GADGET_ID_NONE,
+ ED_ELEMENT_SETTINGS_XPOS(2), ED_ELEMENT_SETTINGS_YPOS(7),
+ GADGET_ID_CHANGE_PLAYER, GADGET_ID_NONE,
-1,
options_change_trigger_player,
&custom_element_change.trigger_player,
- NULL, "player:", " ", "player that causes change"
+ NULL, "Player:", " ", "Select player that causes change"
},
{
ED_SELECTBOX_ID_CHANGE_PAGE,
- ED_ELEMENT_SETTINGS_XPOS(2), ED_ELEMENT_SETTINGS_YPOS(7),
- GADGET_ID_CHANGE_PAGE, GADGET_ID_CHANGE_PLAYER,
+ ED_ELEMENT_SETTINGS_XPOS(2), ED_ELEMENT_SETTINGS_YPOS(7),
+ GADGET_ID_CHANGE_PAGE, GADGET_ID_CHANGE_PLAYER,
-1,
options_change_trigger_page,
&custom_element_change.trigger_page,
- NULL, "page:", NULL, "change page that causes change"
+ NULL, "Page:", NULL, "Select change page that causes change"
},
{
ED_SELECTBOX_ID_CHANGE_REPLACE_WHEN,
- ED_ELEMENT_SETTINGS_XPOS(2), ED_ELEMENT_SETTINGS_YPOS(10),
- GADGET_ID_CHANGE_REPLACE_WHEN, GADGET_ID_NONE,
+ ED_ELEMENT_SETTINGS_XPOS(2), ED_ELEMENT_SETTINGS_YPOS(10),
+ GADGET_ID_CHANGE_REPLACE_WHEN, GADGET_ID_NONE,
-1,
options_change_replace_when,
&custom_element_change.replace_when,
- NULL, "replace when", NULL, "which elements can be replaced"
+ NULL, "Replace when", NULL, "Select which elements can be replaced"
},
{
ED_SELECTBOX_ID_ACTION_TYPE,
- ED_ELEMENT_SETTINGS_XPOS(1), ED_ELEMENT_SETTINGS_YPOS(13),
- GADGET_ID_ACTION_TYPE, GADGET_ID_NONE,
+ ED_ELEMENT_SETTINGS_XPOS(1), ED_ELEMENT_SETTINGS_YPOS(13),
+ GADGET_ID_ACTION_TYPE, GADGET_ID_NONE,
15,
options_action_type,
&custom_element_change.action_type,
- NULL, NULL, NULL, "action on specified condition"
+ NULL, NULL, NULL, "Select action on specified condition"
},
{
ED_SELECTBOX_ID_ACTION_MODE,
- -1, ED_ELEMENT_SETTINGS_YPOS(13),
- GADGET_ID_ACTION_MODE, GADGET_ID_ACTION_TYPE,
+ -1, ED_ELEMENT_SETTINGS_YPOS(13),
+ GADGET_ID_ACTION_MODE, GADGET_ID_ACTION_TYPE,
-1,
options_action_mode_none,
&custom_element_change.action_mode,
- NULL, NULL, NULL, "action operator"
+ NULL, NULL, NULL, "Select action operator"
},
{
ED_SELECTBOX_ID_ACTION_ARG,
- -1, ED_ELEMENT_SETTINGS_YPOS(13),
- GADGET_ID_ACTION_ARG, GADGET_ID_ACTION_MODE,
+ -1, ED_ELEMENT_SETTINGS_YPOS(13),
+ GADGET_ID_ACTION_ARG, GADGET_ID_ACTION_MODE,
-1,
options_action_arg_none,
&custom_element_change.action_arg,
- NULL, NULL, NULL, "action parameter"
+ NULL, NULL, NULL, "Select action parameter"
},
{
ED_SELECTBOX_ID_SELECT_CHANGE_PAGE,
- ED_ELEMENT_SETTINGS_XPOS(1), ED_ELEMENT_SETTINGS_YPOS(14),
- GADGET_ID_SELECT_CHANGE_PAGE, GADGET_ID_NONE,
+ ED_ELEMENT_SETTINGS_XPOS(1), ED_ELEMENT_SETTINGS_YPOS(14),
+ GADGET_ID_SELECT_CHANGE_PAGE, GADGET_ID_NONE,
3,
options_change_page,
&custom_element.current_change_page,
- NULL, NULL, NULL, "element change page"
+ NULL, NULL, NULL, "Select element change page"
},
// ---------- element settings: configure (group elements) ------------------
{
ED_SELECTBOX_ID_GROUP_CHOICE_MODE,
- ED_ELEMENT_SETTINGS_XPOS(0), ED_ELEMENT_SETTINGS_YPOS(4),
- GADGET_ID_GROUP_CHOICE_MODE, GADGET_ID_NONE,
+ ED_ELEMENT_SETTINGS_XPOS(0), ED_ELEMENT_SETTINGS_YPOS(4),
+ GADGET_ID_GROUP_CHOICE_MODE, GADGET_ID_NONE,
-1,
options_group_choice_mode,
&group_element_info.choice_mode,
- NULL, "choice type:", NULL, "type of group element choice"
+ NULL, "Choice type:", NULL, "Select type of group element choice"
},
};
{
ED_TEXTBUTTON_ID_LEVELCONFIG_LEVEL,
- ED_LEVEL_TABS_XPOS(0), ED_LEVEL_TABS_YPOS(0),
- GADGET_ID_LEVELCONFIG_LEVEL, GADGET_ID_NONE,
- 8, "Level",
- NULL, NULL, NULL, "Configure level settings"
+ ED_LEVEL_TABS_XPOS(0), ED_LEVEL_TABS_YPOS(0),
+ GADGET_ID_LEVELCONFIG_LEVEL, GADGET_ID_NONE,
+ 8, "Level",
+ NULL, NULL, NULL, "Configure level settings"
},
{
ED_TEXTBUTTON_ID_LEVELCONFIG_LEVELSET,
- -1, -1,
- GADGET_ID_LEVELCONFIG_LEVELSET, GADGET_ID_LEVELCONFIG_LEVEL,
- 8, "Levelset",
- NULL, NULL, NULL, "Update this or create new level set"
+ -1, -1,
+ GADGET_ID_LEVELCONFIG_LEVELSET, GADGET_ID_LEVELCONFIG_LEVEL,
+ 8, "Levelset",
+ NULL, NULL, NULL, "Update this or create new level set"
},
{
ED_TEXTBUTTON_ID_LEVELCONFIG_EDITOR,
- -1, -1,
- GADGET_ID_LEVELCONFIG_EDITOR, GADGET_ID_LEVELCONFIG_LEVELSET,
- 8, "Editor",
- NULL, NULL, NULL, "Configure editor settings"
+ -1, -1,
+ GADGET_ID_LEVELCONFIG_EDITOR, GADGET_ID_LEVELCONFIG_LEVELSET,
+ 8, "Editor",
+ NULL, NULL, NULL, "Configure editor settings"
},
{
ED_TEXTBUTTON_ID_LEVELCONFIG_ENGINE,
- -1, -1,
- GADGET_ID_LEVELCONFIG_ENGINE, GADGET_ID_LEVELCONFIG_EDITOR,
- 8, "Engine",
- NULL, NULL, NULL, "Configure engine settings"
+ -1, -1,
+ GADGET_ID_LEVELCONFIG_ENGINE, GADGET_ID_LEVELCONFIG_EDITOR,
+ 8, "Engine",
+ NULL, NULL, NULL, "Configure game engine settings"
+ },
+
+ // ---------- engine settings (tabs) ----------------------------------------
+
+ {
+ ED_TEXTBUTTON_ID_ENGINECONFIG_CONFIG,
+ ED_ENGINE_TABS_XPOS(0), ED_ENGINE_TABS_YPOS(0),
+ GADGET_ID_ENGINECONFIG_CONFIG, GADGET_ID_NONE,
+ 8, "Config",
+ NULL, NULL, NULL, "Configure game engine settings"
+ },
+ {
+ ED_TEXTBUTTON_ID_ENGINECONFIG_COLORS,
+ -1, -1,
+ GADGET_ID_ENGINECONFIG_COLORS, GADGET_ID_ENGINECONFIG_CONFIG,
+ 8, "Colors",
+ NULL, NULL, NULL, "Configure level colors"
},
// ---------- element settings (tabs) ---------------------------------------
{
ED_TEXTBUTTON_ID_PROPERTIES_INFO,
- ED_ELEMENT_TABS_XPOS(0), ED_ELEMENT_TABS_YPOS(0),
- GADGET_ID_PROPERTIES_INFO, GADGET_ID_NONE,
- 8, "Info",
- NULL, NULL, NULL, "Show information about element"
+ ED_ELEMENT_TABS_XPOS(0), ED_ELEMENT_TABS_YPOS(0),
+ GADGET_ID_PROPERTIES_INFO, GADGET_ID_NONE,
+ 8, "Info",
+ NULL, NULL, NULL, "Show information about element"
},
{
ED_TEXTBUTTON_ID_PROPERTIES_CONFIG,
- -1, -1,
- GADGET_ID_PROPERTIES_CONFIG, GADGET_ID_PROPERTIES_INFO,
- 8, "Config",
- NULL, NULL, NULL, "Configure element properties"
+ -1, -1,
+ GADGET_ID_PROPERTIES_CONFIG, GADGET_ID_PROPERTIES_INFO,
+ 8, "Config",
+ NULL, NULL, NULL, "Configure element properties"
},
{
ED_TEXTBUTTON_ID_PROPERTIES_CONFIG_1,
- -1, -1,
- GADGET_ID_PROPERTIES_CONFIG_1, GADGET_ID_PROPERTIES_INFO,
- 8, "Config 1",
- NULL, NULL, NULL, "Configure element properties, part 1"
+ -1, -1,
+ GADGET_ID_PROPERTIES_CONFIG_1, GADGET_ID_PROPERTIES_INFO,
+ 8, "Config 1",
+ NULL, NULL, NULL, "Configure element properties, part 1"
},
{
ED_TEXTBUTTON_ID_PROPERTIES_CONFIG_2,
- -1, -1,
- GADGET_ID_PROPERTIES_CONFIG_2, GADGET_ID_PROPERTIES_CONFIG_1,
- 8, "Config 2",
- NULL, NULL, NULL, "Configure element properties, part 2"
+ -1, -1,
+ GADGET_ID_PROPERTIES_CONFIG_2, GADGET_ID_PROPERTIES_CONFIG_1,
+ 8, "Config 2",
+ NULL, NULL, NULL, "Configure element properties, part 2"
},
{
ED_TEXTBUTTON_ID_PROPERTIES_CHANGE,
- -1, -1,
- GADGET_ID_PROPERTIES_CHANGE, GADGET_ID_PROPERTIES_CONFIG_2,
- 8, "Change",
- NULL, NULL, NULL, "Configure custom element change pages"
+ -1, -1,
+ GADGET_ID_PROPERTIES_CHANGE, GADGET_ID_PROPERTIES_CONFIG_2,
+ 8, "Change",
+ NULL, NULL, NULL, "Configure custom element change pages"
},
// ---------- level and editor settings (buttons) ---------------------------
{
ED_TEXTBUTTON_ID_SAVE_LEVELSET,
- ED_LEVEL_SETTINGS_XPOS(0), ED_LEVEL_SETTINGS_YPOS(10),
- GADGET_ID_SAVE_LEVELSET, GADGET_ID_LEVELSET_SAVE_MODE,
- -1, "Save",
- NULL, NULL, NULL, "Update or create level set"
+ ED_LEVEL_SETTINGS_XPOS(0), ED_LEVEL_SETTINGS_YPOS(10),
+ GADGET_ID_SAVE_LEVELSET, GADGET_ID_LEVELSET_SAVE_MODE,
+ -1, "Save",
+ NULL, NULL, NULL, "Update or create level set"
},
{
ED_TEXTBUTTON_ID_SAVE_AS_TEMPLATE_2,
- ED_LEVEL_SETTINGS_XPOS(0), ED_LEVEL_SETTINGS_YPOS(6),
- GADGET_ID_SAVE_AS_TEMPLATE_2, GADGET_ID_NONE,
- -1, "Save",
- NULL, NULL, "this level as level template",
+ ED_LEVEL_SETTINGS_XPOS(0), ED_LEVEL_SETTINGS_YPOS(6),
+ GADGET_ID_SAVE_AS_TEMPLATE_2, GADGET_ID_NONE,
+ -1, "Save",
+ NULL, NULL, "this level as level template",
"Save current settings as new template"
},
{
ED_TEXTBUTTON_ID_SAVE_AS_TEMPLATE_1,
- -1, -1,
- GADGET_ID_SAVE_AS_TEMPLATE_1, GADGET_ID_CUSTOM_USE_TEMPLATE_1,
- -1, "Save",
- NULL, " ", "As Template",
+ -1, -1,
+ GADGET_ID_SAVE_AS_TEMPLATE_1, GADGET_ID_CUSTOM_USE_TEMPLATE_1,
+ -1, "Save",
+ NULL, " ", "As Template",
"Save current settings as new template"
},
{
ED_TEXTBUTTON_ID_ADD_CHANGE_PAGE,
- -1, -1,
- GADGET_ID_ADD_CHANGE_PAGE, GADGET_ID_PASTE_CHANGE_PAGE,
- -1, "New",
- NULL, NULL, NULL, "Add new change page"
+ -1, -1,
+ GADGET_ID_ADD_CHANGE_PAGE, GADGET_ID_PASTE_CHANGE_PAGE,
+ -1, "New",
+ NULL, NULL, NULL, "Add new change page"
},
{
ED_TEXTBUTTON_ID_DEL_CHANGE_PAGE,
- -1, -1,
- GADGET_ID_DEL_CHANGE_PAGE, GADGET_ID_ADD_CHANGE_PAGE,
- -1, "Delete",
- NULL, NULL, NULL, "Delete current change page"
+ -1, -1,
+ GADGET_ID_DEL_CHANGE_PAGE, GADGET_ID_ADD_CHANGE_PAGE,
+ -1, "Delete",
+ NULL, NULL, NULL, "Delete current change page"
+ },
+
+ // ---------- engine settings (buttons) -------------------------------------
+
+ {
+ ED_TEXTBUTTON_ID_BD_SET_RANDOM_COLORS,
+ ED_ENGINE_SETTINGS_XPOS(0), ED_ENGINE_SETTINGS_YPOS(8),
+ GADGET_ID_BD_SET_RANDOM_COLORS, GADGET_ID_NONE,
+ -1, "Set random colors",
+ NULL, NULL, NULL, "Create and set random level colors"
},
};
{
ED_GRAPHICBUTTON_ID_PREV_CHANGE_PAGE,
IMG_EDITOR_COUNTER_DOWN,
- ED_ELEMENT_SETTINGS_XPOS(0), ED_ELEMENT_SETTINGS_YPOS(14),
- GADGET_ID_PREV_CHANGE_PAGE, GADGET_ID_NONE,
- NULL, NULL, "select previous change page"
+ ED_ELEMENT_SETTINGS_XPOS(0), ED_ELEMENT_SETTINGS_YPOS(14),
+ GADGET_ID_PREV_CHANGE_PAGE, GADGET_ID_NONE,
+ NULL, NULL, "Select previous change page"
},
{
ED_GRAPHICBUTTON_ID_NEXT_CHANGE_PAGE,
IMG_EDITOR_COUNTER_UP,
- -1, ED_ELEMENT_SETTINGS_YPOS(14),
- GADGET_ID_NEXT_CHANGE_PAGE, GADGET_ID_SELECT_CHANGE_PAGE,
- NULL, "change page", "select next change page"
+ -1, ED_ELEMENT_SETTINGS_YPOS(14),
+ GADGET_ID_NEXT_CHANGE_PAGE, GADGET_ID_SELECT_CHANGE_PAGE,
+ NULL, "Change page", "Select next change page"
},
{
ED_GRAPHICBUTTON_ID_COPY_CHANGE_PAGE,
IMG_GFX_EDITOR_BUTTON_CP_COPY,
- -1, ED_ELEMENT_SETTINGS_YPOS(14),
- GADGET_ID_COPY_CHANGE_PAGE, GADGET_ID_NEXT_CHANGE_PAGE,
- " ", NULL, "copy settings from this change page"
+ -1, ED_ELEMENT_SETTINGS_YPOS(14),
+ GADGET_ID_COPY_CHANGE_PAGE, GADGET_ID_NEXT_CHANGE_PAGE,
+ " ", NULL, "Copy settings from this change page"
},
{
ED_GRAPHICBUTTON_ID_PASTE_CHANGE_PAGE,
IMG_GFX_EDITOR_BUTTON_CP_PASTE,
- -1, ED_ELEMENT_SETTINGS_YPOS(14),
- GADGET_ID_PASTE_CHANGE_PAGE, GADGET_ID_COPY_CHANGE_PAGE,
- NULL, NULL, "paste settings to this change page"
+ -1, ED_ELEMENT_SETTINGS_YPOS(14),
+ GADGET_ID_PASTE_CHANGE_PAGE, GADGET_ID_COPY_CHANGE_PAGE,
+ NULL, NULL, "Paste settings to this change page"
},
};
ED_SCROLLBUTTON_ID_AREA_UP,
IMG_EDITOR_PLAYFIELD_SCROLL_UP,
GADGET_ID_SCROLL_UP,
- "scroll level editing area up"
+ "Scroll level editing area up"
},
{
ED_SCROLLBUTTON_ID_AREA_DOWN,
IMG_EDITOR_PLAYFIELD_SCROLL_DOWN,
GADGET_ID_SCROLL_DOWN,
- "scroll level editing area down"
+ "Scroll level editing area down"
},
{
ED_SCROLLBUTTON_ID_AREA_LEFT,
IMG_EDITOR_PLAYFIELD_SCROLL_LEFT,
GADGET_ID_SCROLL_LEFT,
- "scroll level editing area left"
+ "Scroll level editing area left"
},
{
ED_SCROLLBUTTON_ID_AREA_RIGHT,
IMG_EDITOR_PLAYFIELD_SCROLL_RIGHT,
GADGET_ID_SCROLL_RIGHT,
- "scroll level editing area right"
+ "Scroll level editing area right"
},
{
ED_SCROLLBUTTON_ID_LIST_UP,
IMG_EDITOR_PALETTE_SCROLL_UP,
GADGET_ID_SCROLL_LIST_UP,
- "scroll element list up ('Page Up')"
+ "Scroll element list up ('Page Up')"
},
{
ED_SCROLLBUTTON_ID_LIST_DOWN,
IMG_EDITOR_PALETTE_SCROLL_DOWN,
GADGET_ID_SCROLL_LIST_DOWN,
- "scroll element list down ('Page Down')"
+ "Scroll element list down ('Page Down')"
},
};
IMG_EDITOR_PLAYFIELD_SCROLLBAR,
GD_TYPE_SCROLLBAR_HORIZONTAL,
GADGET_ID_SCROLL_HORIZONTAL,
- "scroll level editing area horizontally"
+ "Scroll level editing area horizontally"
},
{
ED_SCROLLBAR_ID_AREA_VERTICAL,
IMG_EDITOR_PLAYFIELD_SCROLLBAR,
GD_TYPE_SCROLLBAR_VERTICAL,
GADGET_ID_SCROLL_VERTICAL,
- "scroll level editing area vertically"
+ "Scroll level editing area vertically"
},
{
ED_SCROLLBAR_ID_LIST_VERTICAL,
IMG_EDITOR_PALETTE_SCROLLBAR,
GD_TYPE_SCROLLBAR_VERTICAL,
GADGET_ID_SCROLL_LIST_VERTICAL,
- "scroll element list vertically"
+ "Scroll element list vertically"
}
};
{
{
ED_RADIOBUTTON_ID_PERCENTAGE,
- -1, ED_LEVEL_SETTINGS_YPOS(0),
- GADGET_ID_RANDOM_PERCENTAGE, GADGET_ID_LEVEL_RANDOM_UP,
+ -1, ED_LEVEL_SETTINGS_YPOS(0),
+ GADGET_ID_RANDOM_PERCENTAGE, GADGET_ID_LEVEL_RANDOM_UP,
RADIO_NR_RANDOM_ELEMENTS,
- &random_placement_method, RANDOM_USE_PERCENTAGE,
- " ", "percentage", "use percentage for random elements"
+ &random_placement_method, RANDOM_USE_PERCENTAGE,
+ " ", "percentage", "Use percentage for random elements"
},
{
ED_RADIOBUTTON_ID_QUANTITY,
- -1, ED_LEVEL_SETTINGS_YPOS(0),
- GADGET_ID_RANDOM_QUANTITY, GADGET_ID_RANDOM_PERCENTAGE,
+ -1, ED_LEVEL_SETTINGS_YPOS(0),
+ GADGET_ID_RANDOM_QUANTITY, GADGET_ID_RANDOM_PERCENTAGE,
RADIO_NR_RANDOM_ELEMENTS,
- &random_placement_method, RANDOM_USE_QUANTITY,
- " ", "quantity", "use quantity for random elements"
+ &random_placement_method, RANDOM_USE_QUANTITY,
+ " ", "quantity", "Use quantity for random elements"
}
};
{
ED_CHECKBUTTON_ID_AUTO_COUNT_GEMS,
- ED_LEVEL_SETTINGS_XPOS(0), ED_LEVEL_SETTINGS_YPOS(6),
- GADGET_ID_AUTO_COUNT_GEMS, GADGET_ID_NONE,
+ ED_LEVEL_SETTINGS_XPOS(0), ED_LEVEL_SETTINGS_YPOS(6),
+ GADGET_ID_AUTO_COUNT_GEMS, GADGET_ID_NONE,
&level.auto_count_gems,
NULL, NULL,
- "automatically count gems needed", "set counter to number of gems"
+ "Automatically count gems needed", "Set counter to number of gems"
},
{
ED_CHECKBUTTON_ID_RATE_TIME_OVER_SCORE,
- ED_LEVEL_SETTINGS_XPOS(0), ED_LEVEL_SETTINGS_YPOS(11),
- GADGET_ID_RATE_TIME_OVER_SCORE, GADGET_ID_NONE,
+ ED_LEVEL_SETTINGS_XPOS(0), ED_LEVEL_SETTINGS_YPOS(11),
+ GADGET_ID_RATE_TIME_OVER_SCORE, GADGET_ID_NONE,
&level.rate_time_over_score,
NULL, NULL,
- "rate time/steps used over score", "sort high scores by playing time/steps"
+ "Rate time/steps used over score", "Sort high scores by playing time/steps"
},
{
ED_CHECKBUTTON_ID_USE_LEVELSET_ARTWORK,
- ED_LEVEL_SETTINGS_XPOS(0), ED_LEVEL_SETTINGS_YPOS(7),
- GADGET_ID_USE_LEVELSET_ARTWORK, GADGET_ID_NONE,
+ ED_LEVEL_SETTINGS_XPOS(0), ED_LEVEL_SETTINGS_YPOS(7),
+ GADGET_ID_USE_LEVELSET_ARTWORK, GADGET_ID_NONE,
&levelset_use_levelset_artwork,
NULL, NULL,
- "use current custom artwork", "use custom artwork of this level set"
+ "Use current custom artwork", "Use custom artwork of this level set"
},
{
ED_CHECKBUTTON_ID_COPY_LEVEL_TEMPLATE,
- ED_LEVEL_SETTINGS_XPOS(0), ED_LEVEL_SETTINGS_YPOS(8),
- GADGET_ID_COPY_LEVEL_TEMPLATE, GADGET_ID_NONE,
+ ED_LEVEL_SETTINGS_XPOS(0), ED_LEVEL_SETTINGS_YPOS(8),
+ GADGET_ID_COPY_LEVEL_TEMPLATE, GADGET_ID_NONE,
&levelset_copy_level_template,
NULL, NULL,
- "copy current level template", "copy level template of this level set"
+ "Copy current level template", "Copy level template of this level set"
},
{
ED_CHECKBUTTON_ID_RANDOM_RESTRICTED,
- ED_LEVEL_SETTINGS_XPOS(0), ED_LEVEL_SETTINGS_YPOS(1),
- GADGET_ID_RANDOM_RESTRICTED, GADGET_ID_NONE,
+ ED_LEVEL_SETTINGS_XPOS(0), ED_LEVEL_SETTINGS_YPOS(1),
+ GADGET_ID_RANDOM_RESTRICTED, GADGET_ID_NONE,
&random_placement_background_restricted,
NULL, NULL,
- "restrict random placement to:", "set random placement restriction"
+ "Restrict random placement to:", "Set random placement restriction"
},
{
ED_CHECKBUTTON_ID_CUSTOM_USE_TEMPLATE_3,
- ED_LEVEL_SETTINGS_XPOS(0), ED_LEVEL_SETTINGS_YPOS(4),
- GADGET_ID_CUSTOM_USE_TEMPLATE_3, GADGET_ID_NONE,
+ ED_LEVEL_SETTINGS_XPOS(0), ED_LEVEL_SETTINGS_YPOS(4),
+ GADGET_ID_CUSTOM_USE_TEMPLATE_3, GADGET_ID_NONE,
&setup.editor.use_template_for_new_levels,
"Template for new levels and CE/GE:", NULL,
- "use template for new levels", "use template for level properties"
+ "Use template for new levels", "Use template for level properties"
},
{
ED_CHECKBUTTON_ID_CUSTOM_USE_TEMPLATE_2,
- ED_LEVEL_SETTINGS_XPOS(0), ED_LEVEL_SETTINGS_YPOS(5),
- GADGET_ID_CUSTOM_USE_TEMPLATE_2, GADGET_ID_NONE,
+ ED_LEVEL_SETTINGS_XPOS(0), ED_LEVEL_SETTINGS_YPOS(5),
+ GADGET_ID_CUSTOM_USE_TEMPLATE_2, GADGET_ID_NONE,
&level.use_custom_template,
NULL, NULL,
- "use template for custom elements", "use template for custom properties"
+ "Use template for custom elements", "Use template for custom properties"
},
{
ED_CHECKBUTTON_ID_BD_INTERMISSION,
- ED_LEVEL_SETTINGS_XPOS(0), ED_LEVEL_SETTINGS_YPOS(0),
- GADGET_ID_BD_INTERMISSION, GADGET_ID_NONE,
+ ED_ENGINE_SETTINGS_XPOS(0), ED_ENGINE_SETTINGS_YPOS(0),
+ GADGET_ID_BD_INTERMISSION, GADGET_ID_NONE,
&level.bd_intermission,
"Boulder Dash game engine settings:", NULL,
- "intermission", "level is an intermission level"
+ "Intermission", "Level is an intermission level"
},
{
ED_CHECKBUTTON_ID_BD_PAL_TIMING,
- ED_LEVEL_SETTINGS_XPOS(0), ED_LEVEL_SETTINGS_YPOS(2),
- GADGET_ID_BD_PAL_TIMING, GADGET_ID_NONE,
+ ED_ENGINE_SETTINGS_XPOS(0), ED_ENGINE_SETTINGS_YPOS(2),
+ GADGET_ID_BD_PAL_TIMING, GADGET_ID_NONE,
&level.bd_pal_timing,
NULL, NULL,
- "PAL timing", "use slower timer (like PAL C64)"
+ "PAL timing", "Use slower timer (like PAL C64)"
},
{
ED_CHECKBUTTON_ID_BD_LINE_SHIFTING_BORDERS,
- ED_LEVEL_SETTINGS_XPOS(0), ED_LEVEL_SETTINGS_YPOS(6),
- GADGET_ID_BD_LINE_SHIFTING_BORDERS, GADGET_ID_NONE,
+ ED_ENGINE_SETTINGS_XPOS(0), ED_ENGINE_SETTINGS_YPOS(6),
+ GADGET_ID_BD_LINE_SHIFTING_BORDERS, GADGET_ID_NONE,
&level.bd_line_shifting_borders,
"Compatibility settings:", NULL,
- "line-shifting borders", "use line-shifting wrap-around"
+ "Line-shifting borders", "Use line-shifting wrap-around"
},
{
ED_CHECKBUTTON_ID_BD_SCAN_FIRST_AND_LAST_ROW,
- ED_LEVEL_SETTINGS_XPOS(0), ED_LEVEL_SETTINGS_YPOS(7),
- GADGET_ID_BD_SCAN_FIRST_AND_LAST_ROW, GADGET_ID_NONE,
+ ED_ENGINE_SETTINGS_XPOS(0), ED_ENGINE_SETTINGS_YPOS(7),
+ GADGET_ID_BD_SCAN_FIRST_AND_LAST_ROW, GADGET_ID_NONE,
&level.bd_scan_first_and_last_row,
NULL, NULL,
- "scan first and last row", "also process top/bottom border rows"
+ "Scan first and last row", "Also process top/bottom border rows"
},
{
ED_CHECKBUTTON_ID_BD_SHORT_EXPLOSIONS,
- ED_LEVEL_SETTINGS_XPOS(0), ED_LEVEL_SETTINGS_YPOS(8),
- GADGET_ID_BD_SHORT_EXPLOSIONS, GADGET_ID_NONE,
+ ED_ENGINE_SETTINGS_XPOS(0), ED_ENGINE_SETTINGS_YPOS(8),
+ GADGET_ID_BD_SHORT_EXPLOSIONS, GADGET_ID_NONE,
&level.bd_short_explosions,
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"
+ "Short explosions", "Use four game cycles for explosions"
},
// ---------- element settings: configure (various elements) ----------------
{
ED_CHECKBUTTON_ID_STICK_ELEMENT,
- ED_ELEMENT_SETTINGS_XPOS(0), ED_ELEMENT_SETTINGS_YPOS(0),
- GADGET_ID_STICK_ELEMENT, GADGET_ID_NONE,
+ ED_ELEMENT_SETTINGS_XPOS(0), ED_ELEMENT_SETTINGS_YPOS(0),
+ GADGET_ID_STICK_ELEMENT, GADGET_ID_NONE,
&stick_element_properties_window,
NULL, NULL,
- "stick this screen to edit content","stick this screen to edit content"
+ "Stick this screen to edit content", "Stick this screen to edit content"
},
{
ED_CHECKBUTTON_ID_EM_SLIPPERY_GEMS,
- ED_ELEMENT_SETTINGS_XPOS(0), ED_ELEMENT_SETTINGS_YPOS(1),
- GADGET_ID_EM_SLIPPERY_GEMS, GADGET_ID_NONE,
+ ED_ELEMENT_SETTINGS_XPOS(0), ED_ELEMENT_SETTINGS_YPOS(1),
+ GADGET_ID_EM_SLIPPERY_GEMS, GADGET_ID_NONE,
&level.em_slippery_gems,
NULL, NULL,
- "slip down from certain flat walls","use EM/DC style slipping behaviour"
+ "Slip down from certain flat walls", "Use EM/DC style slipping behaviour"
},
{
ED_CHECKBUTTON_ID_EM_EXPLODES_BY_FIRE,
- ED_ELEMENT_SETTINGS_XPOS(0), ED_ELEMENT_SETTINGS_YPOS(1),
- GADGET_ID_EM_EXPLODES_BY_FIRE, GADGET_ID_NONE,
+ ED_ELEMENT_SETTINGS_XPOS(0), ED_ELEMENT_SETTINGS_YPOS(1),
+ GADGET_ID_EM_EXPLODES_BY_FIRE, GADGET_ID_NONE,
&level.em_explodes_by_fire,
NULL, NULL,
- "explodes with chain reaction", "use R'n'D style explosion behaviour"
+ "Explodes with chain reaction", "Use R'n'D style explosion behaviour"
},
{
ED_CHECKBUTTON_ID_USE_SPRING_BUG,
- ED_ELEMENT_SETTINGS_XPOS(0), ED_ELEMENT_SETTINGS_YPOS(2),
- GADGET_ID_USE_SPRING_BUG, GADGET_ID_NONE,
+ ED_ELEMENT_SETTINGS_XPOS(0), ED_ELEMENT_SETTINGS_YPOS(2),
+ GADGET_ID_USE_SPRING_BUG, GADGET_ID_NONE,
&level.use_spring_bug,
NULL, NULL,
- "use spring pushing bug", "use odd spring pushing behaviour"
+ "Use spring pushing bug", "Use odd spring pushing behaviour"
},
{
ED_CHECKBUTTON_ID_USE_TIME_ORB_BUG,
- ED_ELEMENT_SETTINGS_XPOS(0), ED_ELEMENT_SETTINGS_YPOS(1),
- GADGET_ID_USE_TIME_ORB_BUG, GADGET_ID_NONE,
+ ED_ELEMENT_SETTINGS_XPOS(0), ED_ELEMENT_SETTINGS_YPOS(1),
+ GADGET_ID_USE_TIME_ORB_BUG, GADGET_ID_NONE,
&level.use_time_orb_bug,
NULL, NULL,
- "use time orb bug", "use odd time orb behaviour"
+ "Use time orb bug", "Use odd time orb behaviour"
},
{
ED_CHECKBUTTON_ID_USE_LIFE_BUGS,
- ED_ELEMENT_SETTINGS_XPOS(0), ED_ELEMENT_SETTINGS_YPOS(5),
- GADGET_ID_USE_LIFE_BUGS, GADGET_ID_NONE,
+ ED_ELEMENT_SETTINGS_XPOS(0), ED_ELEMENT_SETTINGS_YPOS(5),
+ GADGET_ID_USE_LIFE_BUGS, GADGET_ID_NONE,
&level.use_life_bugs,
NULL, NULL,
- "use buggy element behaviour", "use odd (historic) element behaviour"
+ "Use buggy element behaviour", "Use odd (historic) element behaviour"
},
{
ED_CHECKBUTTON_ID_RANDOM_BALL_CONTENT,
- ED_ELEMENT_SETTINGS_XPOS(0), ED_ELEMENT_SETTINGS_YPOS(2),
- GADGET_ID_RANDOM_BALL_CONTENT, GADGET_ID_NONE,
+ ED_ELEMENT_SETTINGS_XPOS(0), ED_ELEMENT_SETTINGS_YPOS(2),
+ GADGET_ID_RANDOM_BALL_CONTENT, GADGET_ID_NONE,
&level.ball_random,
NULL, NULL,
- "create single random element", "only create one element from content"
+ "Create single random element", "Only create one element from content"
},
{
ED_CHECKBUTTON_ID_INITIAL_BALL_ACTIVE,
- ED_ELEMENT_SETTINGS_XPOS(0), ED_ELEMENT_SETTINGS_YPOS(1),
- GADGET_ID_INITIAL_BALL_ACTIVE, GADGET_ID_NONE,
+ ED_ELEMENT_SETTINGS_XPOS(0), ED_ELEMENT_SETTINGS_YPOS(1),
+ GADGET_ID_INITIAL_BALL_ACTIVE, GADGET_ID_NONE,
&level.ball_active_initial,
NULL, NULL,
- "magic ball initially activated", "activate magic ball after level start"
+ "Magic ball initially activated", "Activate magic ball after level start"
},
{
ED_CHECKBUTTON_ID_GROW_INTO_DIGGABLE,
- ED_ELEMENT_SETTINGS_XPOS(0), ED_ELEMENT_SETTINGS_YPOS(0),
- GADGET_ID_GROW_INTO_DIGGABLE, GADGET_ID_NONE,
+ ED_ELEMENT_SETTINGS_XPOS(0), ED_ELEMENT_SETTINGS_YPOS(0),
+ GADGET_ID_GROW_INTO_DIGGABLE, GADGET_ID_NONE,
&level.grow_into_diggable,
NULL, NULL,
- "can grow into anything diggable", "grow into more than just sand"
+ "Can grow into anything diggable", "Grow into more than just sand"
},
{
ED_CHECKBUTTON_ID_SB_FIELDS_NEEDED,
- ED_ELEMENT_SETTINGS_XPOS(0), ED_ELEMENT_SETTINGS_YPOS(0),
- GADGET_ID_SB_FIELDS_NEEDED, GADGET_ID_NONE,
+ ED_ELEMENT_SETTINGS_XPOS(0), ED_ELEMENT_SETTINGS_YPOS(0),
+ GADGET_ID_SB_FIELDS_NEEDED, GADGET_ID_NONE,
&level.sb_fields_needed,
NULL, NULL,
- "all fields need to be filled", "require all SB fields to be solved"
+ "All fields need to be filled", "Require all SB fields to be solved"
},
{
ED_CHECKBUTTON_ID_SB_OBJECTS_NEEDED,
- ED_ELEMENT_SETTINGS_XPOS(0), ED_ELEMENT_SETTINGS_YPOS(0),
- GADGET_ID_SB_OBJECTS_NEEDED, GADGET_ID_NONE,
+ ED_ELEMENT_SETTINGS_XPOS(0), ED_ELEMENT_SETTINGS_YPOS(0),
+ GADGET_ID_SB_OBJECTS_NEEDED, GADGET_ID_NONE,
&level.sb_objects_needed,
NULL, NULL,
- "all objects need to be placed", "require all SB objects to be solved"
+ "All objects need to be placed", "Require all SB objects to be solved"
},
{
ED_CHECKBUTTON_ID_AUTO_EXIT_SOKOBAN,
- ED_ELEMENT_SETTINGS_XPOS(0), ED_ELEMENT_SETTINGS_YPOS(1),
- GADGET_ID_AUTO_EXIT_SOKOBAN, GADGET_ID_NONE,
+ ED_ELEMENT_SETTINGS_XPOS(0), ED_ELEMENT_SETTINGS_YPOS(1),
+ GADGET_ID_AUTO_EXIT_SOKOBAN, GADGET_ID_NONE,
&level.auto_exit_sokoban,
NULL, NULL,
- "exit level if all tasks solved", "automatically finish Sokoban levels"
+ "Exit level if all tasks solved", "Automatically finish Sokoban levels"
},
{
ED_CHECKBUTTON_ID_SOLVED_BY_ONE_PLAYER,
- ED_ELEMENT_SETTINGS_XPOS(0), ED_ELEMENT_SETTINGS_YPOS(14),
- GADGET_ID_SOLVED_BY_ONE_PLAYER, GADGET_ID_NONE,
+ ED_ELEMENT_SETTINGS_XPOS(0), ED_ELEMENT_SETTINGS_YPOS(14),
+ GADGET_ID_SOLVED_BY_ONE_PLAYER, GADGET_ID_NONE,
&level.solved_by_one_player,
NULL, NULL,
- "only one player must enter exit", "level solved by first player in exit"
+ "Only one player must enter exit", "Level solved by first player in exit"
},
{
ED_CHECKBUTTON_ID_FINISH_DIG_COLLECT,
- ED_ELEMENT_SETTINGS_XPOS(0), ED_ELEMENT_SETTINGS_YPOS(3),
- GADGET_ID_FINISH_DIG_COLLECT, GADGET_ID_NONE,
+ ED_ELEMENT_SETTINGS_XPOS(0), ED_ELEMENT_SETTINGS_YPOS(3),
+ GADGET_ID_FINISH_DIG_COLLECT, GADGET_ID_NONE,
&level.finish_dig_collect,
NULL, NULL,
- "CE action on finished dig/collect", "only finished dig/collect triggers CE"
+ "CE action on finished dig/collect", "Only finished dig/collect triggers CE"
},
{
ED_CHECKBUTTON_ID_KEEP_WALKABLE_CE,
- ED_ELEMENT_SETTINGS_XPOS(0), ED_ELEMENT_SETTINGS_YPOS(4),
- GADGET_ID_KEEP_WALKABLE_CE, GADGET_ID_NONE,
+ ED_ELEMENT_SETTINGS_XPOS(0), ED_ELEMENT_SETTINGS_YPOS(4),
+ GADGET_ID_KEEP_WALKABLE_CE, GADGET_ID_NONE,
&level.keep_walkable_ce,
NULL, NULL,
- "keep walkable CE changed to player", "keep CE changing to player if walkable"
+ "Keep walkable CE changed to player", "Keep CE changing to player if walkable"
},
{
ED_CHECKBUTTON_ID_CONTINUOUS_SNAPPING,
- ED_ELEMENT_SETTINGS_XPOS(0), ED_ELEMENT_SETTINGS_YPOS(9),
- GADGET_ID_CONTINUOUS_SNAPPING, GADGET_ID_NONE,
+ ED_ELEMENT_SETTINGS_XPOS(0), ED_ELEMENT_SETTINGS_YPOS(9),
+ GADGET_ID_CONTINUOUS_SNAPPING, GADGET_ID_NONE,
&level.continuous_snapping,
NULL, NULL,
- "continuous snapping", "use snapping without releasing key"
+ "Continuous snapping", "Use snapping without releasing key"
},
{
ED_CHECKBUTTON_ID_BLOCK_SNAP_FIELD,
- ED_ELEMENT_SETTINGS_XPOS(0), ED_ELEMENT_SETTINGS_YPOS(8),
- GADGET_ID_BLOCK_SNAP_FIELD, GADGET_ID_NONE,
+ ED_ELEMENT_SETTINGS_XPOS(0), ED_ELEMENT_SETTINGS_YPOS(8),
+ GADGET_ID_BLOCK_SNAP_FIELD, GADGET_ID_NONE,
&level.block_snap_field,
NULL, NULL,
- "block snapped field when snapping", "use snapping delay to show animation"
+ "Block snapped field when snapping", "Use snapping delay to show animation"
},
{
ED_CHECKBUTTON_ID_BLOCK_LAST_FIELD,
- ED_ELEMENT_SETTINGS_XPOS(0), ED_ELEMENT_SETTINGS_YPOS(2),
- GADGET_ID_BLOCK_LAST_FIELD, GADGET_ID_NONE,
+ ED_ELEMENT_SETTINGS_XPOS(0), ED_ELEMENT_SETTINGS_YPOS(2),
+ GADGET_ID_BLOCK_LAST_FIELD, GADGET_ID_NONE,
&level.block_last_field,
NULL, NULL,
- "block last field when moving", "player blocks last field when moving"
+ "Block last field when moving", "Player blocks last field when moving"
},
{
ED_CHECKBUTTON_ID_SP_BLOCK_LAST_FIELD,
- ED_ELEMENT_SETTINGS_XPOS(0), ED_ELEMENT_SETTINGS_YPOS(2),
- GADGET_ID_SP_BLOCK_LAST_FIELD, GADGET_ID_NONE,
+ ED_ELEMENT_SETTINGS_XPOS(0), ED_ELEMENT_SETTINGS_YPOS(2),
+ GADGET_ID_SP_BLOCK_LAST_FIELD, GADGET_ID_NONE,
&level.sp_block_last_field,
NULL, NULL,
- "block last field when moving", "player blocks last field when moving"
+ "Block last field when moving", "Player blocks last field when moving"
},
{
ED_CHECKBUTTON_ID_INSTANT_RELOCATION,
- ED_ELEMENT_SETTINGS_XPOS(0), ED_ELEMENT_SETTINGS_YPOS(3),
- GADGET_ID_INSTANT_RELOCATION, GADGET_ID_NONE,
+ ED_ELEMENT_SETTINGS_XPOS(0), ED_ELEMENT_SETTINGS_YPOS(3),
+ GADGET_ID_INSTANT_RELOCATION, GADGET_ID_NONE,
&level.instant_relocation,
NULL, NULL,
- "no scrolling when relocating", "player gets relocated without delay"
+ "No scrolling when relocating", "Player gets relocated without delay"
},
{
ED_CHECKBUTTON_ID_SHIFTED_RELOCATION,
- ED_ELEMENT_SETTINGS_XPOS(0), ED_ELEMENT_SETTINGS_YPOS(4),
- GADGET_ID_SHIFTED_RELOCATION, GADGET_ID_NONE,
+ ED_ELEMENT_SETTINGS_XPOS(0), ED_ELEMENT_SETTINGS_YPOS(4),
+ GADGET_ID_SHIFTED_RELOCATION, GADGET_ID_NONE,
&level.shifted_relocation,
NULL, NULL,
- "no centering when relocating", "level not centered after relocation"
+ "No centering when relocating", "Level not centered after relocation"
},
{
ED_CHECKBUTTON_ID_LAZY_RELOCATION,
- ED_ELEMENT_SETTINGS_XPOS(0), ED_ELEMENT_SETTINGS_YPOS(5),
- GADGET_ID_LAZY_RELOCATION, GADGET_ID_NONE,
+ ED_ELEMENT_SETTINGS_XPOS(0), ED_ELEMENT_SETTINGS_YPOS(5),
+ GADGET_ID_LAZY_RELOCATION, GADGET_ID_NONE,
&level.lazy_relocation,
NULL, NULL,
- "only redraw off-screen relocation","no redraw if relocation target visible"
+ "Only redraw off-screen relocation", "No redraw if relocation target visible"
},
{
ED_CHECKBUTTON_ID_USE_START_ELEMENT,
- ED_ELEMENT_SETTINGS_XPOS(0), ED_ELEMENT_SETTINGS_YPOS(10),
- GADGET_ID_USE_START_ELEMENT, GADGET_ID_NONE,
+ ED_ELEMENT_SETTINGS_XPOS(0), ED_ELEMENT_SETTINGS_YPOS(10),
+ GADGET_ID_USE_START_ELEMENT, GADGET_ID_NONE,
&level.use_start_element[0],
NULL, NULL,
- "use level start element:", "start level at this element's position"
+ "Use level start element:", "Start level at this element's position"
},
{
ED_CHECKBUTTON_ID_USE_ARTWORK_ELEMENT,
- ED_ELEMENT_SETTINGS_XPOS(0), ED_ELEMENT_SETTINGS_YPOS(11),
- GADGET_ID_USE_ARTWORK_ELEMENT, GADGET_ID_NONE,
+ ED_ELEMENT_SETTINGS_XPOS(0), ED_ELEMENT_SETTINGS_YPOS(11),
+ GADGET_ID_USE_ARTWORK_ELEMENT, GADGET_ID_NONE,
&level.use_artwork_element[0],
NULL, NULL,
- "use artwork from element:", "use player artwork from other element"
+ "Use artwork from element:", "Use player artwork from other element"
},
{
ED_CHECKBUTTON_ID_USE_EXPLOSION_ELEMENT,
- ED_ELEMENT_SETTINGS_XPOS(0), ED_ELEMENT_SETTINGS_YPOS(12),
- GADGET_ID_USE_EXPLOSION_ELEMENT, GADGET_ID_NONE,
+ ED_ELEMENT_SETTINGS_XPOS(0), ED_ELEMENT_SETTINGS_YPOS(12),
+ GADGET_ID_USE_EXPLOSION_ELEMENT, GADGET_ID_NONE,
&level.use_explosion_element[0],
NULL, NULL,
- "use explosion from element:", "use explosion properties from element"
+ "Use explosion from element:", "Use explosion properties from element"
},
{
ED_CHECKBUTTON_ID_INITIAL_GRAVITY,
- ED_ELEMENT_SETTINGS_XPOS(0), ED_ELEMENT_SETTINGS_YPOS(13),
- GADGET_ID_INITIAL_GRAVITY, GADGET_ID_NONE,
+ ED_ELEMENT_SETTINGS_XPOS(0), ED_ELEMENT_SETTINGS_YPOS(13),
+ GADGET_ID_INITIAL_GRAVITY, GADGET_ID_NONE,
&level.initial_player_gravity[0],
NULL, NULL,
- "use initial gravity", "set initial player gravity"
+ "Use initial gravity", "Set initial player gravity"
},
{
ED_CHECKBUTTON_ID_USE_INITIAL_INVENTORY,
- ED_ELEMENT_SETTINGS_XPOS(0), ED_ELEMENT_SETTINGS_YPOS(1),
- GADGET_ID_USE_INITIAL_INVENTORY, GADGET_ID_NONE,
+ ED_ELEMENT_SETTINGS_XPOS(0), ED_ELEMENT_SETTINGS_YPOS(1),
+ GADGET_ID_USE_INITIAL_INVENTORY, GADGET_ID_NONE,
&level.use_initial_inventory[0],
NULL, NULL,
- "use initial inventory:", "use collected elements on level start"
+ "Use initial inventory:", "Use collected elements on level start"
},
{
ED_CHECKBUTTON_ID_CAN_PASS_TO_WALKABLE,
- ED_ELEMENT_SETTINGS_XPOS(0), ED_ELEMENT_SETTINGS_YPOS(6),
- GADGET_ID_CAN_PASS_TO_WALKABLE, GADGET_ID_NONE,
+ ED_ELEMENT_SETTINGS_XPOS(0), ED_ELEMENT_SETTINGS_YPOS(6),
+ GADGET_ID_CAN_PASS_TO_WALKABLE, GADGET_ID_NONE,
&level.can_pass_to_walkable,
NULL, NULL,
- "can pass to walkable element", "player can pass to empty or walkable"
+ "Can pass to walkable element", "Player can pass to empty or walkable"
},
{
ED_CHECKBUTTON_ID_CAN_FALL_INTO_ACID,
- ED_ELEMENT_SETTINGS_XPOS(0), ED_ELEMENT_SETTINGS_YPOS(1),
- GADGET_ID_CAN_FALL_INTO_ACID, GADGET_ID_NONE,
+ ED_ELEMENT_SETTINGS_XPOS(0), ED_ELEMENT_SETTINGS_YPOS(1),
+ GADGET_ID_CAN_FALL_INTO_ACID, GADGET_ID_NONE,
&custom_element_properties[EP_CAN_MOVE_INTO_ACID],
NULL, NULL,
- "can fall into acid (with gravity)","player can fall into acid pool"
+ "Can fall into acid (with gravity)", "Player can fall into acid pool"
},
{
ED_CHECKBUTTON_ID_CAN_MOVE_INTO_ACID,
- ED_ELEMENT_SETTINGS_XPOS(0), ED_ELEMENT_SETTINGS_YPOS(0),
- GADGET_ID_CAN_MOVE_INTO_ACID, GADGET_ID_NONE,
+ ED_ELEMENT_SETTINGS_XPOS(0), ED_ELEMENT_SETTINGS_YPOS(0),
+ GADGET_ID_CAN_MOVE_INTO_ACID, GADGET_ID_NONE,
&custom_element_properties[EP_CAN_MOVE_INTO_ACID],
NULL, NULL,
- "can move into acid", "element can move into acid pool"
+ "Can move into acid", "Element can move into acid pool"
},
{
ED_CHECKBUTTON_ID_DONT_COLLIDE_WITH,
- ED_ELEMENT_SETTINGS_XPOS(0), ED_ELEMENT_SETTINGS_YPOS(1),
- GADGET_ID_DONT_COLLIDE_WITH, GADGET_ID_NONE,
+ ED_ELEMENT_SETTINGS_XPOS(0), ED_ELEMENT_SETTINGS_YPOS(1),
+ GADGET_ID_DONT_COLLIDE_WITH, GADGET_ID_NONE,
&custom_element_properties[EP_DONT_COLLIDE_WITH],
NULL, NULL,
- "deadly when colliding with", "element is deadly when hitting player"
+ "Deadly when colliding with", "Element is deadly when hitting player"
},
{
ED_CHECKBUTTON_ID_BD_DIAGONAL_MOVEMENTS,
- ED_ELEMENT_SETTINGS_XPOS(0), ED_ELEMENT_SETTINGS_YPOS(0),
- GADGET_ID_BD_DIAGONAL_MOVEMENTS, GADGET_ID_NONE,
+ ED_ELEMENT_SETTINGS_XPOS(0), ED_ELEMENT_SETTINGS_YPOS(0),
+ GADGET_ID_BD_DIAGONAL_MOVEMENTS, GADGET_ID_NONE,
&level.bd_diagonal_movements,
NULL, NULL,
- "can move diagonally", "player can move diagonally"
+ "Can move diagonally", "Player can move diagonally"
},
{
ED_CHECKBUTTON_ID_BD_TOPMOST_PLAYER_ACTIVE,
- ED_ELEMENT_SETTINGS_XPOS(0), ED_ELEMENT_SETTINGS_YPOS(1),
- GADGET_ID_BD_TOPMOST_PLAYER_ACTIVE, GADGET_ID_NONE,
+ ED_ELEMENT_SETTINGS_XPOS(0), ED_ELEMENT_SETTINGS_YPOS(1),
+ GADGET_ID_BD_TOPMOST_PLAYER_ACTIVE, GADGET_ID_NONE,
&level.bd_topmost_player_active,
NULL, NULL,
- "topmost player is active", "use first player found on playfield"
+ "Topmost player is active", "Use first player found on playfield"
},
{
ED_CHECKBUTTON_ID_BD_PUSH_MEGA_ROCK_WITH_SWEET,
- ED_ELEMENT_SETTINGS_XPOS(0), ED_ELEMENT_SETTINGS_YPOS(4),
- GADGET_ID_BD_PUSH_MEGA_ROCK_WITH_SWEET, GADGET_ID_NONE,
+ ED_ELEMENT_SETTINGS_XPOS(0), ED_ELEMENT_SETTINGS_YPOS(4),
+ GADGET_ID_BD_PUSH_MEGA_ROCK_WITH_SWEET, GADGET_ID_NONE,
&level.bd_push_mega_rock_with_sweet,
NULL, NULL,
- "mega rocks pushable with sweet", "push mega rocks after eating sweet"
+ "Mega rocks pushable with sweet", "Push mega rocks after eating sweet"
+ },
+ {
+ ED_CHECKBUTTON_ID_BD_MAGIC_WALL_ZERO_INFINITE,
+ ED_ELEMENT_SETTINGS_XPOS(0), ED_ELEMENT_SETTINGS_YPOS(2),
+ GADGET_ID_BD_MAGIC_WALL_ZERO_INFINITE, GADGET_ID_NONE,
+ &level.bd_magic_wall_zero_infinite,
+ NULL, NULL,
+ "Run forever if duration is zero", "Run infinitely if timer is zero"
+ },
+ {
+ ED_CHECKBUTTON_ID_BD_MAGIC_WALL_WAIT_HATCHING,
+ ED_ELEMENT_SETTINGS_XPOS(0), ED_ELEMENT_SETTINGS_YPOS(3),
+ GADGET_ID_BD_MAGIC_WALL_WAIT_HATCHING, GADGET_ID_NONE,
+ &level.bd_magic_wall_wait_hatching,
+ NULL, NULL,
+ "Wait for player's birth", "Timer start waits for player's birth"
+ },
+ {
+ ED_CHECKBUTTON_ID_BD_MAGIC_WALL_STOPS_AMOEBA,
+ ED_ELEMENT_SETTINGS_XPOS(0), ED_ELEMENT_SETTINGS_YPOS(4),
+ GADGET_ID_BD_MAGIC_WALL_STOPS_AMOEBA, GADGET_ID_NONE,
+ &level.bd_magic_wall_stops_amoeba,
+ NULL, NULL,
+ "Stop amoeba and turn to diamonds", "Activation changes amoeba to diamonds"
+ },
+ {
+ ED_CHECKBUTTON_ID_BD_MAGIC_WALL_BREAK_SCAN,
+ ED_ELEMENT_SETTINGS_XPOS(0), ED_ELEMENT_SETTINGS_YPOS(5),
+ GADGET_ID_BD_MAGIC_WALL_BREAK_SCAN, GADGET_ID_NONE,
+ &level.bd_magic_wall_break_scan,
+ NULL, NULL,
+ "Emulate amoeba bug in BD1", "Use buggy BD1 behavior"
+ },
+ {
+ ED_CHECKBUTTON_ID_BD_AMOEBA_WAIT_FOR_HATCHING,
+ ED_ELEMENT_SETTINGS_XPOS(0), ED_ELEMENT_SETTINGS_YPOS(1),
+ GADGET_ID_BD_AMOEBA_WAIT_FOR_HATCHING, GADGET_ID_NONE,
+ &level.bd_amoeba_wait_for_hatching,
+ NULL, NULL,
+ "Wait for player's birth", "Timer start waits for player's birth"
+ },
+ {
+ ED_CHECKBUTTON_ID_BD_AMOEBA_START_IMMEDIATELY,
+ ED_ELEMENT_SETTINGS_XPOS(0), ED_ELEMENT_SETTINGS_YPOS(2),
+ GADGET_ID_BD_AMOEBA_START_IMMEDIATELY, GADGET_ID_NONE,
+ &level.bd_amoeba_start_immediately,
+ NULL, NULL,
+ "Start growing immediately", "Start slow growth time immediately"
+ },
+ {
+ ED_CHECKBUTTON_ID_BD_AMOEBA_2_EXPLODE_BY_AMOEBA,
+ ED_ELEMENT_SETTINGS_XPOS(0), ED_ELEMENT_SETTINGS_YPOS(9),
+ GADGET_ID_BD_AMOEBA_2_EXPLODE_BY_AMOEBA, GADGET_ID_NONE,
+ &level.bd_amoeba_2_explode_by_amoeba,
+ 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(1),
+ 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_BD_CHANGE_EXPANDING_WALL,
+ ED_ELEMENT_SETTINGS_XPOS(0), ED_ELEMENT_SETTINGS_YPOS(0),
+ GADGET_ID_BD_CHANGE_EXPANDING_WALL, GADGET_ID_NONE,
+ &level.bd_change_expanding_wall,
+ NULL, NULL,
+ "Change direction", "Switch horizontal/vertical direction"
+ },
+ {
+ ED_CHECKBUTTON_ID_BD_REPLICATORS_ACTIVE,
+ ED_ELEMENT_SETTINGS_XPOS(0), ED_ELEMENT_SETTINGS_YPOS(0),
+ GADGET_ID_BD_REPLICATORS_ACTIVE, GADGET_ID_NONE,
+ &level.bd_replicators_active,
+ NULL, NULL,
+ "Active at start", "Replicators start in active state"
+ },
+ {
+ ED_CHECKBUTTON_ID_BD_CONVEYOR_BELTS_ACTIVE,
+ ED_ELEMENT_SETTINGS_XPOS(0), ED_ELEMENT_SETTINGS_YPOS(0),
+ GADGET_ID_BD_CONVEYOR_BELTS_ACTIVE, GADGET_ID_NONE,
+ &level.bd_conveyor_belts_active,
+ NULL, NULL,
+ "Active at start", "Conveyor belts start in active state"
+ },
+ {
+ ED_CHECKBUTTON_ID_BD_CONVEYOR_BELTS_CHANGED,
+ ED_ELEMENT_SETTINGS_XPOS(0), ED_ELEMENT_SETTINGS_YPOS(1),
+ GADGET_ID_BD_CONVEYOR_BELTS_CHANGED, GADGET_ID_NONE,
+ &level.bd_conveyor_belts_changed,
+ NULL, NULL,
+ "Change direction", "Switch conveyor belt direction"
+ },
+ {
+ ED_CHECKBUTTON_ID_BD_WATER_CANNOT_FLOW_DOWN,
+ ED_ELEMENT_SETTINGS_XPOS(0), ED_ELEMENT_SETTINGS_YPOS(0),
+ GADGET_ID_BD_WATER_CANNOT_FLOW_DOWN, GADGET_ID_NONE,
+ &level.bd_water_cannot_flow_down,
+ NULL, NULL,
+ "Does not flow downwards", "Water can only flow up, left and right"
+ },
+ {
+ ED_CHECKBUTTON_ID_BD_HAMMER_WALLS_REAPPEAR,
+ ED_ELEMENT_SETTINGS_XPOS(0), ED_ELEMENT_SETTINGS_YPOS(1),
+ GADGET_ID_BD_HAMMER_WALLS_REAPPEAR, GADGET_ID_NONE,
+ &level.bd_hammer_walls_reappear,
+ NULL, NULL,
+ "Hammered walls reappear", "Hammered walls reappear after delay"
+ },
+ {
+ ED_CHECKBUTTON_ID_BD_INFINITE_ROCKETS,
+ ED_ELEMENT_SETTINGS_XPOS(0), ED_ELEMENT_SETTINGS_YPOS(0),
+ GADGET_ID_BD_INFINITE_ROCKETS, GADGET_ID_NONE,
+ &level.bd_infinite_rockets,
+ NULL, NULL,
+ "Infinite rockets", "Rocket launcher has infinite rockets"
+ },
+ {
+ ED_CHECKBUTTON_ID_BD_CREATURES_START_BACKWARDS,
+ ED_ELEMENT_SETTINGS_XPOS(0), ED_ELEMENT_SETTINGS_YPOS(0),
+ GADGET_ID_BD_CREATURES_START_BACKWARDS, GADGET_ID_NONE,
+ &level.bd_creatures_start_backwards,
+ NULL, NULL,
+ "Creatures start moving backwards", "Creatures start in opposite direction"
+ },
+ {
+ ED_CHECKBUTTON_ID_BD_CREATURES_TURN_ON_HATCHING,
+ ED_ELEMENT_SETTINGS_XPOS(0), ED_ELEMENT_SETTINGS_YPOS(2),
+ GADGET_ID_BD_CREATURES_TURN_ON_HATCHING, GADGET_ID_NONE,
+ &level.bd_creatures_turn_on_hatching,
+ NULL, NULL,
+ "Creatures auto 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),
- GADGET_ID_ENVELOPE_AUTOWRAP, GADGET_ID_NONE,
+ ED_ELEMENT_SETTINGS_XPOS(0), ED_ELEMENT_SETTINGS_YPOS(1),
+ GADGET_ID_ENVELOPE_AUTOWRAP, GADGET_ID_NONE,
&level.envelope[0].autowrap,
NULL, NULL,
- "auto-wrap", "automatically wrap envelope text"
+ "Auto-wrap", "Automatically wrap envelope text"
},
{
ED_CHECKBUTTON_ID_ENVELOPE_CENTERED,
- -1, ED_ELEMENT_SETTINGS_YPOS(1),
- GADGET_ID_ENVELOPE_CENTERED, GADGET_ID_ENVELOPE_AUTOWRAP,
+ -1, ED_ELEMENT_SETTINGS_YPOS(1),
+ GADGET_ID_ENVELOPE_CENTERED, GADGET_ID_ENVELOPE_AUTOWRAP,
&level.envelope[0].centered,
NULL, " ",
- "centered", "automatically center envelope text"
+ "Centered", "Automatically center envelope text"
},
{
ED_CHECKBUTTON_ID_MM_LASER_RED,
- ED_ELEMENT_SETTINGS_XPOS(0), ED_ELEMENT_SETTINGS_YPOS(1),
- GADGET_ID_MM_LASER_RED, GADGET_ID_NONE,
+ ED_ELEMENT_SETTINGS_XPOS(0), ED_ELEMENT_SETTINGS_YPOS(1),
+ GADGET_ID_MM_LASER_RED, GADGET_ID_NONE,
&level.mm_laser_red,
- "choose color components for laser:", NULL,
- "red", "use red color components in laser"
+ "Choose color components for laser:", NULL,
+ "Red", "Use red color components in laser"
},
{
ED_CHECKBUTTON_ID_MM_LASER_GREEN,
- ED_ELEMENT_SETTINGS_XPOS(0), ED_ELEMENT_SETTINGS_YPOS(2),
- GADGET_ID_MM_LASER_GREEN, GADGET_ID_NONE,
+ ED_ELEMENT_SETTINGS_XPOS(0), ED_ELEMENT_SETTINGS_YPOS(2),
+ GADGET_ID_MM_LASER_GREEN, GADGET_ID_NONE,
&level.mm_laser_green,
NULL, NULL,
- "green", "use green color components in laser"
+ "Green", "Use green color components in laser"
},
{
ED_CHECKBUTTON_ID_MM_LASER_BLUE,
- ED_ELEMENT_SETTINGS_XPOS(0), ED_ELEMENT_SETTINGS_YPOS(3),
- GADGET_ID_MM_LASER_BLUE, GADGET_ID_NONE,
+ ED_ELEMENT_SETTINGS_XPOS(0), ED_ELEMENT_SETTINGS_YPOS(3),
+ GADGET_ID_MM_LASER_BLUE, GADGET_ID_NONE,
&level.mm_laser_blue,
NULL, NULL,
- "blue", "use blue color components in laser"
+ "Blue", "Use blue color components in laser"
},
{
ED_CHECKBUTTON_ID_DF_LASER_RED,
- ED_ELEMENT_SETTINGS_XPOS(0), ED_ELEMENT_SETTINGS_YPOS(1),
- GADGET_ID_DF_LASER_RED, GADGET_ID_NONE,
+ ED_ELEMENT_SETTINGS_XPOS(0), ED_ELEMENT_SETTINGS_YPOS(1),
+ GADGET_ID_DF_LASER_RED, GADGET_ID_NONE,
&level.df_laser_red,
- "choose color components for laser:", NULL,
- "red", "use red color components in laser"
+ "Choose color components for laser:", NULL,
+ "Red", "Use red color components in laser"
},
{
ED_CHECKBUTTON_ID_DF_LASER_GREEN,
- ED_ELEMENT_SETTINGS_XPOS(0), ED_ELEMENT_SETTINGS_YPOS(2),
- GADGET_ID_DF_LASER_GREEN, GADGET_ID_NONE,
+ ED_ELEMENT_SETTINGS_XPOS(0), ED_ELEMENT_SETTINGS_YPOS(2),
+ GADGET_ID_DF_LASER_GREEN, GADGET_ID_NONE,
&level.df_laser_green,
NULL, NULL,
- "green", "use green color components in laser"
+ "Green", "Use green color components in laser"
},
{
ED_CHECKBUTTON_ID_DF_LASER_BLUE,
- ED_ELEMENT_SETTINGS_XPOS(0), ED_ELEMENT_SETTINGS_YPOS(3),
- GADGET_ID_DF_LASER_BLUE, GADGET_ID_NONE,
+ ED_ELEMENT_SETTINGS_XPOS(0), ED_ELEMENT_SETTINGS_YPOS(3),
+ GADGET_ID_DF_LASER_BLUE, GADGET_ID_NONE,
&level.df_laser_blue,
NULL, NULL,
- "blue", "use blue color components in laser"
+ "Blue", "Use blue color components in laser"
},
{
ED_CHECKBUTTON_ID_ROTATE_MM_BALL_CONTENT,
- ED_ELEMENT_SETTINGS_XPOS(0), ED_ELEMENT_SETTINGS_YPOS(5),
- GADGET_ID_ROTATE_MM_BALL_CONTENT, GADGET_ID_NONE,
+ ED_ELEMENT_SETTINGS_XPOS(0), ED_ELEMENT_SETTINGS_YPOS(5),
+ GADGET_ID_ROTATE_MM_BALL_CONTENT, GADGET_ID_NONE,
&level.rotate_mm_ball_content,
NULL, NULL,
- "randomly rotate created content", "randomly rotate newly created content"
+ "Randomly rotate created content", "Randomly rotate newly created content"
},
{
ED_CHECKBUTTON_ID_EXPLODE_MM_BALL,
- ED_ELEMENT_SETTINGS_XPOS(0), ED_ELEMENT_SETTINGS_YPOS(6),
- GADGET_ID_EXPLODE_MM_BALL, GADGET_ID_NONE,
+ ED_ELEMENT_SETTINGS_XPOS(0), ED_ELEMENT_SETTINGS_YPOS(6),
+ GADGET_ID_EXPLODE_MM_BALL, GADGET_ID_NONE,
&level.explode_mm_ball,
NULL, NULL,
- "explode ball instead of melting", "use explosion to release ball content"
+ "Explode ball instead of melting", "Use explosion to release ball content"
},
// ---------- element settings: configure 1 (custom elements) ---------------
{
ED_CHECKBUTTON_ID_CUSTOM_USE_GRAPHIC,
- ED_ELEMENT_SETTINGS_XPOS(0), ED_ELEMENT_SETTINGS_YPOS(1),
- GADGET_ID_CUSTOM_USE_GRAPHIC, GADGET_ID_NONE,
+ ED_ELEMENT_SETTINGS_XPOS(0), ED_ELEMENT_SETTINGS_YPOS(1),
+ GADGET_ID_CUSTOM_USE_GRAPHIC, GADGET_ID_NONE,
&custom_element.use_gfx_element,
NULL, NULL,
- "use graphic of element:", "use existing element graphic"
+ "Use graphic of element:", "Use existing element graphic"
},
{
ED_CHECKBUTTON_ID_CUSTOM_USE_TEMPLATE_1,
- ED_ELEMENT_SETTINGS_XPOS(0), ED_ELEMENT_SETTINGS_YPOS(14),
- GADGET_ID_CUSTOM_USE_TEMPLATE_1, GADGET_ID_NONE,
+ ED_ELEMENT_SETTINGS_XPOS(0), ED_ELEMENT_SETTINGS_YPOS(14),
+ GADGET_ID_CUSTOM_USE_TEMPLATE_1, GADGET_ID_NONE,
&level.use_custom_template,
NULL, NULL,
- "use template", "use template for custom properties"
+ "Use template", "Use template for custom properties"
},
{
ED_CHECKBUTTON_ID_CUSTOM_ACCESSIBLE,
- ED_ELEMENT_SETTINGS_XPOS(0), ED_ELEMENT_SETTINGS_YPOS(2),
- GADGET_ID_CUSTOM_ACCESSIBLE, GADGET_ID_NONE,
+ ED_ELEMENT_SETTINGS_XPOS(0), ED_ELEMENT_SETTINGS_YPOS(2),
+ GADGET_ID_CUSTOM_ACCESSIBLE, GADGET_ID_NONE,
&custom_element_properties[EP_ACCESSIBLE],
NULL, NULL,
- NULL, "player can walk to or pass this field"
+ NULL, "Player can walk to or pass this field"
},
{
ED_CHECKBUTTON_ID_CUSTOM_GRAV_REACHABLE,
- ED_ELEMENT_SETTINGS_XPOS(0), ED_ELEMENT_SETTINGS_YPOS(9),
- GADGET_ID_CUSTOM_GRAV_REACHABLE, GADGET_ID_NONE,
+ ED_ELEMENT_SETTINGS_XPOS(0), ED_ELEMENT_SETTINGS_YPOS(9),
+ GADGET_ID_CUSTOM_GRAV_REACHABLE, GADGET_ID_NONE,
&custom_element_properties[EP_GRAVITY_REACHABLE],
NULL, NULL,
- "reachable despite gravity", "player can walk/dig despite gravity"
+ "Reachable despite gravity", "Player can walk/dig despite gravity"
},
{
ED_CHECKBUTTON_ID_CUSTOM_USE_LAST_VALUE,
- ED_ELEMENT_SETTINGS_XPOS(0), ED_ELEMENT_SETTINGS_YPOS(11),
- GADGET_ID_CUSTOM_USE_LAST_VALUE, GADGET_ID_NONE,
+ ED_ELEMENT_SETTINGS_XPOS(0), ED_ELEMENT_SETTINGS_YPOS(11),
+ GADGET_ID_CUSTOM_USE_LAST_VALUE, GADGET_ID_NONE,
&custom_element.use_last_ce_value,
NULL, NULL,
- "use last CE value after change", "use last CE value after change"
+ "Use last CE value after change", "Use last CE value after change"
},
{
ED_CHECKBUTTON_ID_CUSTOM_WALK_TO_OBJECT,
- ED_ELEMENT_SETTINGS_XPOS(0), ED_ELEMENT_SETTINGS_YPOS(4),
- GADGET_ID_CUSTOM_WALK_TO_OBJECT, GADGET_ID_NONE,
+ ED_ELEMENT_SETTINGS_XPOS(0), ED_ELEMENT_SETTINGS_YPOS(4),
+ GADGET_ID_CUSTOM_WALK_TO_OBJECT, GADGET_ID_NONE,
&custom_element_properties[EP_WALK_TO_OBJECT],
NULL, NULL,
- NULL, "player can dig/collect/push element"
+ NULL, "Player can dig/collect/push element"
},
{
ED_CHECKBUTTON_ID_CUSTOM_INDESTRUCTIBLE,
- ED_ELEMENT_SETTINGS_XPOS(0), ED_ELEMENT_SETTINGS_YPOS(8),
- GADGET_ID_CUSTOM_INDESTRUCTIBLE, GADGET_ID_NONE,
+ ED_ELEMENT_SETTINGS_XPOS(0), ED_ELEMENT_SETTINGS_YPOS(8),
+ GADGET_ID_CUSTOM_INDESTRUCTIBLE, GADGET_ID_NONE,
&custom_element_properties[EP_INDESTRUCTIBLE],
NULL, NULL,
- "indestructible", "element is indestructible"
+ "Indestructible", "Element is indestructible"
},
// ---------- element settings: configure 2 (custom elements) ---------------
{
ED_CHECKBUTTON_ID_CUSTOM_CAN_MOVE,
- ED_ELEMENT_SETTINGS_XPOS(0), ED_ELEMENT_SETTINGS_YPOS(1),
- GADGET_ID_CUSTOM_CAN_MOVE, GADGET_ID_NONE,
+ ED_ELEMENT_SETTINGS_XPOS(0), ED_ELEMENT_SETTINGS_YPOS(1),
+ GADGET_ID_CUSTOM_CAN_MOVE, GADGET_ID_NONE,
&custom_element_properties[EP_CAN_MOVE],
NULL, NULL,
- NULL, "element can move with some pattern"
+ NULL, "Element can move with some pattern"
},
{
ED_CHECKBUTTON_ID_CUSTOM_CAN_FALL,
- ED_ELEMENT_SETTINGS_XPOS(0), ED_ELEMENT_SETTINGS_YPOS(8),
- GADGET_ID_CUSTOM_CAN_FALL, GADGET_ID_NONE,
+ ED_ELEMENT_SETTINGS_XPOS(0), ED_ELEMENT_SETTINGS_YPOS(8),
+ GADGET_ID_CUSTOM_CAN_FALL, GADGET_ID_NONE,
&custom_element_properties[EP_CAN_FALL],
NULL, NULL,
- "can fall", "element can fall down"
+ "Can fall", "Element can fall down"
},
{
ED_CHECKBUTTON_ID_CUSTOM_CAN_SMASH,
- -1, ED_ELEMENT_SETTINGS_YPOS(8),
- GADGET_ID_CUSTOM_CAN_SMASH, GADGET_ID_CUSTOM_CAN_FALL,
+ -1, ED_ELEMENT_SETTINGS_YPOS(8),
+ GADGET_ID_CUSTOM_CAN_SMASH, GADGET_ID_CUSTOM_CAN_FALL,
&custom_element_properties[EP_CAN_SMASH],
NULL, " ",
- NULL, "element can smash other elements"
+ NULL, "Element can smash other elements"
},
{
ED_CHECKBUTTON_ID_CUSTOM_SLIPPERY,
- ED_ELEMENT_SETTINGS_XPOS(0), ED_ELEMENT_SETTINGS_YPOS(9),
- GADGET_ID_CUSTOM_SLIPPERY, GADGET_ID_NONE,
+ ED_ELEMENT_SETTINGS_XPOS(0), ED_ELEMENT_SETTINGS_YPOS(9),
+ GADGET_ID_CUSTOM_SLIPPERY, GADGET_ID_NONE,
&custom_element_properties[EP_SLIPPERY],
NULL, NULL,
- NULL, "other elements can fall down from it"
+ NULL, "Other elements can fall down from it"
},
{
ED_CHECKBUTTON_ID_CUSTOM_DEADLY,
- ED_ELEMENT_SETTINGS_XPOS(0), ED_ELEMENT_SETTINGS_YPOS(10),
- GADGET_ID_CUSTOM_DEADLY, GADGET_ID_NONE,
+ ED_ELEMENT_SETTINGS_XPOS(0), ED_ELEMENT_SETTINGS_YPOS(10),
+ GADGET_ID_CUSTOM_DEADLY, GADGET_ID_NONE,
&custom_element_properties[EP_DEADLY],
NULL, NULL,
- NULL, "element can kill the player"
+ NULL, "Element can kill the player"
},
{
ED_CHECKBUTTON_ID_CUSTOM_CAN_EXPLODE,
- ED_ELEMENT_SETTINGS_XPOS(0), ED_ELEMENT_SETTINGS_YPOS(11),
- GADGET_ID_CUSTOM_CAN_EXPLODE, GADGET_ID_NONE,
+ ED_ELEMENT_SETTINGS_XPOS(0), ED_ELEMENT_SETTINGS_YPOS(11),
+ GADGET_ID_CUSTOM_CAN_EXPLODE, GADGET_ID_NONE,
&custom_element_properties[EP_CAN_EXPLODE],
NULL, NULL,
- NULL, "element can explode"
+ NULL, "Element can explode"
},
{
ED_CHECKBUTTON_ID_CUSTOM_EXPLODE_FIRE,
- ED_ELEMENT_SETTINGS_XPOS(1), ED_ELEMENT_SETTINGS_YPOS(12),
- GADGET_ID_CUSTOM_EXPLODE_FIRE, GADGET_ID_NONE,
+ ED_ELEMENT_SETTINGS_XPOS(1), ED_ELEMENT_SETTINGS_YPOS(12),
+ GADGET_ID_CUSTOM_EXPLODE_FIRE, GADGET_ID_NONE,
&custom_element_properties[EP_EXPLODES_BY_FIRE],
NULL, NULL,
- "by fire", "element can explode by fire/explosion"
+ "By fire", "Element can explode by fire/explosion"
},
{
ED_CHECKBUTTON_ID_CUSTOM_EXPLODE_SMASH,
- -1, ED_ELEMENT_SETTINGS_YPOS(12),
- GADGET_ID_CUSTOM_EXPLODE_SMASH, GADGET_ID_CUSTOM_EXPLODE_FIRE,
+ -1, ED_ELEMENT_SETTINGS_YPOS(12),
+ GADGET_ID_CUSTOM_EXPLODE_SMASH, GADGET_ID_CUSTOM_EXPLODE_FIRE,
&custom_element_properties[EP_EXPLODES_SMASHED],
NULL, " ",
- "smashed", "element can explode when smashed"
+ "Smashed", "Element can explode when smashed"
},
{
ED_CHECKBUTTON_ID_CUSTOM_EXPLODE_IMPACT,
- -1, ED_ELEMENT_SETTINGS_YPOS(12),
- GADGET_ID_CUSTOM_EXPLODE_IMPACT, GADGET_ID_CUSTOM_EXPLODE_SMASH,
+ -1, ED_ELEMENT_SETTINGS_YPOS(12),
+ GADGET_ID_CUSTOM_EXPLODE_IMPACT, GADGET_ID_CUSTOM_EXPLODE_SMASH,
&custom_element_properties[EP_EXPLODES_IMPACT],
NULL, " ",
- "impact", "element can explode on impact"
+ "Impact", "Element can explode on impact"
},
// ---------- element settings: advanced (custom elements) ------------------
{
ED_CHECKBUTTON_ID_CUSTOM_CAN_CHANGE,
- ED_ELEMENT_SETTINGS_XPOS(0), ED_ELEMENT_SETTINGS_YPOS(1),
- GADGET_ID_CUSTOM_CAN_CHANGE, 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, NULL,
- "element changes to:", "change element on specified condition"
+ "Element changes to:", "Change element on specified condition"
},
{
ED_CHECKBUTTON_ID_CHANGE_DELAY,
- ED_ELEMENT_SETTINGS_XPOS(1), ED_ELEMENT_SETTINGS_YPOS(2),
- GADGET_ID_CHANGE_DELAY, GADGET_ID_NONE,
+ ED_ELEMENT_SETTINGS_XPOS(1), ED_ELEMENT_SETTINGS_YPOS(2),
+ GADGET_ID_CHANGE_DELAY, GADGET_ID_NONE,
&custom_element_change_events[CE_DELAY],
NULL, NULL,
- NULL, "element changes after delay"
+ NULL, "Element changes after delay"
},
{
ED_CHECKBUTTON_ID_CHANGE_BY_DIRECT_ACT,
- ED_ELEMENT_SETTINGS_XPOS(1), ED_ELEMENT_SETTINGS_YPOS(4),
- GADGET_ID_CHANGE_BY_DIRECT_ACT, GADGET_ID_NONE,
+ ED_ELEMENT_SETTINGS_XPOS(1), ED_ELEMENT_SETTINGS_YPOS(4),
+ GADGET_ID_CHANGE_BY_DIRECT_ACT, GADGET_ID_NONE,
&custom_element_change_events[CE_BY_DIRECT_ACTION],
NULL, NULL,
- NULL, "element changes by direct action"
+ NULL, "Element changes by direct action"
},
{
ED_CHECKBUTTON_ID_CHANGE_BY_OTHER_ACT,
- ED_ELEMENT_SETTINGS_XPOS(1), ED_ELEMENT_SETTINGS_YPOS(5),
- GADGET_ID_CHANGE_BY_OTHER_ACT, GADGET_ID_NONE,
+ ED_ELEMENT_SETTINGS_XPOS(1), ED_ELEMENT_SETTINGS_YPOS(5),
+ GADGET_ID_CHANGE_BY_OTHER_ACT, GADGET_ID_NONE,
&custom_element_change_events[CE_BY_OTHER_ACTION],
NULL, NULL,
- NULL, "element changes by other element"
+ NULL, "Element changes by other element"
},
{
ED_CHECKBUTTON_ID_CHANGE_USE_EXPLOSION,
- ED_ELEMENT_SETTINGS_XPOS(1), ED_ELEMENT_SETTINGS_YPOS(8),
- GADGET_ID_CHANGE_USE_EXPLOSION, GADGET_ID_NONE,
+ ED_ELEMENT_SETTINGS_XPOS(1), ED_ELEMENT_SETTINGS_YPOS(8),
+ GADGET_ID_CHANGE_USE_EXPLOSION, GADGET_ID_NONE,
&custom_element_change.explode,
NULL, NULL,
- "explode instead of change", "element explodes instead of change"
+ "Explode instead of change", "Element explodes instead of change"
},
{
ED_CHECKBUTTON_ID_CHANGE_USE_CONTENT,
- ED_ELEMENT_SETTINGS_XPOS(1), ED_ELEMENT_SETTINGS_YPOS(9),
- GADGET_ID_CHANGE_USE_CONTENT, GADGET_ID_NONE,
+ ED_ELEMENT_SETTINGS_XPOS(1), ED_ELEMENT_SETTINGS_YPOS(9),
+ GADGET_ID_CHANGE_USE_CONTENT, GADGET_ID_NONE,
&custom_element_change.use_target_content,
NULL, NULL,
- "use extended change target:", "element changes to more elements"
+ "Use extended change target:", "Element changes to more elements"
},
{
ED_CHECKBUTTON_ID_CHANGE_ONLY_COMPLETE,
- ED_ELEMENT_SETTINGS_XPOS(2), ED_ELEMENT_SETTINGS_YPOS(11),
- GADGET_ID_CHANGE_ONLY_COMPLETE, GADGET_ID_NONE,
+ ED_ELEMENT_SETTINGS_XPOS(2), ED_ELEMENT_SETTINGS_YPOS(11),
+ GADGET_ID_CHANGE_ONLY_COMPLETE, GADGET_ID_NONE,
&custom_element_change.only_if_complete,
NULL, NULL,
- "replace all or nothing", "only replace when all can be changed"
+ "Replace all or nothing", "Only replace when all can be changed"
},
{
ED_CHECKBUTTON_ID_CHANGE_USE_RANDOM,
- ED_ELEMENT_SETTINGS_XPOS(2), ED_ELEMENT_SETTINGS_YPOS(12),
- GADGET_ID_CHANGE_USE_RANDOM, GADGET_ID_NONE,
+ ED_ELEMENT_SETTINGS_XPOS(2), ED_ELEMENT_SETTINGS_YPOS(12),
+ GADGET_ID_CHANGE_USE_RANDOM, GADGET_ID_NONE,
&custom_element_change.use_random_replace,
NULL, NULL,
- NULL, "use percentage for random replace"
+ NULL, "Use percentage for random replace"
},
{
ED_CHECKBUTTON_ID_CHANGE_HAS_ACTION,
- ED_ELEMENT_SETTINGS_XPOS(0), ED_ELEMENT_SETTINGS_YPOS(13),
- GADGET_ID_CHANGE_HAS_ACTION, GADGET_ID_NONE,
+ ED_ELEMENT_SETTINGS_XPOS(0), ED_ELEMENT_SETTINGS_YPOS(13),
+ GADGET_ID_CHANGE_HAS_ACTION, GADGET_ID_NONE,
&custom_element_change.has_action,
NULL, NULL,
- NULL, "execute action on specified condition"
+ NULL, "Execute action on specified condition"
},
};
{
ED_DRAWING_ID_DRAWING_LEVEL,
- 0, 0,
- 0, 0,
- GADGET_ID_DRAWING_LEVEL, GADGET_ID_NONE,
+ 0, 0,
+ 0, 0,
+ GADGET_ID_DRAWING_LEVEL, GADGET_ID_NONE,
NULL,
-1, -1, // these values are not constant, but can change at runtime
- NULL, NULL, NULL, NULL, NULL
+ NULL, NULL, NULL, NULL, NULL
},
// ---------- yam yam content -----------------------------------------------
{
ED_DRAWING_ID_YAMYAM_CONTENT_0,
- ED_AREA_YAMYAM_CONTENT_XPOS, ED_AREA_YAMYAM_CONTENT_YPOS,
- ED_AREA_YAMYAM_CONTENT_XOFF(0), ED_AREA_YAMYAM_CONTENT_YOFF(0),
- GADGET_ID_YAMYAM_CONTENT_0, GADGET_ID_NONE,
- &level.yamyam_content[0].e[0][0], 3, 3,
- NULL, NULL, NULL, "1", NULL
+ ED_AREA_YAMYAM_CONTENT_XPOS, ED_AREA_YAMYAM_CONTENT_YPOS,
+ ED_AREA_YAMYAM_CONTENT_XOFF(0), ED_AREA_YAMYAM_CONTENT_YOFF(0),
+ GADGET_ID_YAMYAM_CONTENT_0, GADGET_ID_NONE,
+ &level.yamyam_content[0].e[0][0], 3, 3,
+ NULL, NULL, NULL, "1", NULL
},
{
ED_DRAWING_ID_YAMYAM_CONTENT_1,
- ED_AREA_YAMYAM_CONTENT_XPOS, ED_AREA_YAMYAM_CONTENT_YPOS,
- ED_AREA_YAMYAM_CONTENT_XOFF(1), ED_AREA_YAMYAM_CONTENT_YOFF(1),
- GADGET_ID_YAMYAM_CONTENT_1, GADGET_ID_NONE,
- &level.yamyam_content[1].e[0][0], 3, 3,
- NULL, NULL, NULL, "2", NULL
+ ED_AREA_YAMYAM_CONTENT_XPOS, ED_AREA_YAMYAM_CONTENT_YPOS,
+ ED_AREA_YAMYAM_CONTENT_XOFF(1), ED_AREA_YAMYAM_CONTENT_YOFF(1),
+ GADGET_ID_YAMYAM_CONTENT_1, GADGET_ID_NONE,
+ &level.yamyam_content[1].e[0][0], 3, 3,
+ NULL, NULL, NULL, "2", NULL
},
{
ED_DRAWING_ID_YAMYAM_CONTENT_2,
- ED_AREA_YAMYAM_CONTENT_XPOS, ED_AREA_YAMYAM_CONTENT_YPOS,
- ED_AREA_YAMYAM_CONTENT_XOFF(2), ED_AREA_YAMYAM_CONTENT_YOFF(2),
- GADGET_ID_YAMYAM_CONTENT_2, GADGET_ID_NONE,
- &level.yamyam_content[2].e[0][0], 3, 3,
- NULL, NULL, NULL, "3", NULL
+ ED_AREA_YAMYAM_CONTENT_XPOS, ED_AREA_YAMYAM_CONTENT_YPOS,
+ ED_AREA_YAMYAM_CONTENT_XOFF(2), ED_AREA_YAMYAM_CONTENT_YOFF(2),
+ GADGET_ID_YAMYAM_CONTENT_2, GADGET_ID_NONE,
+ &level.yamyam_content[2].e[0][0], 3, 3,
+ NULL, NULL, NULL, "3", NULL
},
{
ED_DRAWING_ID_YAMYAM_CONTENT_3,
- ED_AREA_YAMYAM_CONTENT_XPOS, ED_AREA_YAMYAM_CONTENT_YPOS,
- ED_AREA_YAMYAM_CONTENT_XOFF(3), ED_AREA_YAMYAM_CONTENT_YOFF(3),
- GADGET_ID_YAMYAM_CONTENT_3, GADGET_ID_NONE,
- &level.yamyam_content[3].e[0][0], 3, 3,
- NULL, NULL, NULL, "4", NULL
+ ED_AREA_YAMYAM_CONTENT_XPOS, ED_AREA_YAMYAM_CONTENT_YPOS,
+ ED_AREA_YAMYAM_CONTENT_XOFF(3), ED_AREA_YAMYAM_CONTENT_YOFF(3),
+ GADGET_ID_YAMYAM_CONTENT_3, GADGET_ID_NONE,
+ &level.yamyam_content[3].e[0][0], 3, 3,
+ NULL, NULL, NULL, "4", NULL
},
{
ED_DRAWING_ID_YAMYAM_CONTENT_4,
- ED_AREA_YAMYAM_CONTENT_XPOS, ED_AREA_YAMYAM_CONTENT_YPOS,
- ED_AREA_YAMYAM_CONTENT_XOFF(4), ED_AREA_YAMYAM_CONTENT_YOFF(4),
- GADGET_ID_YAMYAM_CONTENT_4, GADGET_ID_NONE,
- &level.yamyam_content[4].e[0][0], 3, 3,
- NULL, NULL, NULL, "5", NULL
+ ED_AREA_YAMYAM_CONTENT_XPOS, ED_AREA_YAMYAM_CONTENT_YPOS,
+ ED_AREA_YAMYAM_CONTENT_XOFF(4), ED_AREA_YAMYAM_CONTENT_YOFF(4),
+ GADGET_ID_YAMYAM_CONTENT_4, GADGET_ID_NONE,
+ &level.yamyam_content[4].e[0][0], 3, 3,
+ NULL, NULL, NULL, "5", NULL
},
{
ED_DRAWING_ID_YAMYAM_CONTENT_5,
- ED_AREA_YAMYAM_CONTENT_XPOS, ED_AREA_YAMYAM_CONTENT_YPOS,
- ED_AREA_YAMYAM_CONTENT_XOFF(5), ED_AREA_YAMYAM_CONTENT_YOFF(5),
- GADGET_ID_YAMYAM_CONTENT_5, GADGET_ID_NONE,
- &level.yamyam_content[5].e[0][0], 3, 3,
- NULL, NULL, NULL, "6", NULL
+ ED_AREA_YAMYAM_CONTENT_XPOS, ED_AREA_YAMYAM_CONTENT_YPOS,
+ ED_AREA_YAMYAM_CONTENT_XOFF(5), ED_AREA_YAMYAM_CONTENT_YOFF(5),
+ GADGET_ID_YAMYAM_CONTENT_5, GADGET_ID_NONE,
+ &level.yamyam_content[5].e[0][0], 3, 3,
+ NULL, NULL, NULL, "6", NULL
},
{
ED_DRAWING_ID_YAMYAM_CONTENT_6,
- ED_AREA_YAMYAM_CONTENT_XPOS, ED_AREA_YAMYAM_CONTENT_YPOS,
- ED_AREA_YAMYAM_CONTENT_XOFF(6), ED_AREA_YAMYAM_CONTENT_YOFF(6),
- GADGET_ID_YAMYAM_CONTENT_6, GADGET_ID_NONE,
- &level.yamyam_content[6].e[0][0], 3, 3,
- NULL, NULL, NULL, "7", NULL
+ ED_AREA_YAMYAM_CONTENT_XPOS, ED_AREA_YAMYAM_CONTENT_YPOS,
+ ED_AREA_YAMYAM_CONTENT_XOFF(6), ED_AREA_YAMYAM_CONTENT_YOFF(6),
+ GADGET_ID_YAMYAM_CONTENT_6, GADGET_ID_NONE,
+ &level.yamyam_content[6].e[0][0], 3, 3,
+ NULL, NULL, NULL, "7", NULL
},
{
ED_DRAWING_ID_YAMYAM_CONTENT_7,
- ED_AREA_YAMYAM_CONTENT_XPOS, ED_AREA_YAMYAM_CONTENT_YPOS,
- ED_AREA_YAMYAM_CONTENT_XOFF(7), ED_AREA_YAMYAM_CONTENT_YOFF(7),
- GADGET_ID_YAMYAM_CONTENT_7, GADGET_ID_NONE,
- &level.yamyam_content[7].e[0][0], 3, 3,
- NULL, NULL, NULL, "8", NULL
+ ED_AREA_YAMYAM_CONTENT_XPOS, ED_AREA_YAMYAM_CONTENT_YPOS,
+ ED_AREA_YAMYAM_CONTENT_XOFF(7), ED_AREA_YAMYAM_CONTENT_YOFF(7),
+ GADGET_ID_YAMYAM_CONTENT_7, GADGET_ID_NONE,
+ &level.yamyam_content[7].e[0][0], 3, 3,
+ NULL, NULL, NULL, "8", NULL
},
// ---------- magic ball content --------------------------------------------
{
ED_DRAWING_ID_MAGIC_BALL_CONTENT_0,
- ED_AREA_MAGIC_BALL_CONTENT_XPOS, ED_AREA_MAGIC_BALL_CONTENT_YPOS,
- ED_AREA_MAGIC_BALL_CONTENT_XOFF(0), ED_AREA_MAGIC_BALL_CONTENT_YOFF(0),
- GADGET_ID_MAGIC_BALL_CONTENT_0, GADGET_ID_NONE,
- &level.ball_content[0].e[0][0], 3, 3,
- NULL, NULL, NULL, "1", NULL
+ ED_AREA_MAGIC_BALL_CONTENT_XPOS, ED_AREA_MAGIC_BALL_CONTENT_YPOS,
+ ED_AREA_MAGIC_BALL_CONTENT_XOFF(0), ED_AREA_MAGIC_BALL_CONTENT_YOFF(0),
+ GADGET_ID_MAGIC_BALL_CONTENT_0, GADGET_ID_NONE,
+ &level.ball_content[0].e[0][0], 3, 3,
+ NULL, NULL, NULL, "1", NULL
},
{
ED_DRAWING_ID_MAGIC_BALL_CONTENT_1,
- ED_AREA_MAGIC_BALL_CONTENT_XPOS, ED_AREA_MAGIC_BALL_CONTENT_YPOS,
- ED_AREA_MAGIC_BALL_CONTENT_XOFF(1), ED_AREA_MAGIC_BALL_CONTENT_YOFF(1),
- GADGET_ID_MAGIC_BALL_CONTENT_1, GADGET_ID_NONE,
- &level.ball_content[1].e[0][0], 3, 3,
- NULL, NULL, NULL, "2", NULL
+ ED_AREA_MAGIC_BALL_CONTENT_XPOS, ED_AREA_MAGIC_BALL_CONTENT_YPOS,
+ ED_AREA_MAGIC_BALL_CONTENT_XOFF(1), ED_AREA_MAGIC_BALL_CONTENT_YOFF(1),
+ GADGET_ID_MAGIC_BALL_CONTENT_1, GADGET_ID_NONE,
+ &level.ball_content[1].e[0][0], 3, 3,
+ NULL, NULL, NULL, "2", NULL
},
{
ED_DRAWING_ID_MAGIC_BALL_CONTENT_2,
- ED_AREA_MAGIC_BALL_CONTENT_XPOS, ED_AREA_MAGIC_BALL_CONTENT_YPOS,
- ED_AREA_MAGIC_BALL_CONTENT_XOFF(2), ED_AREA_MAGIC_BALL_CONTENT_YOFF(2),
- GADGET_ID_MAGIC_BALL_CONTENT_2, GADGET_ID_NONE,
- &level.ball_content[2].e[0][0], 3, 3,
- NULL, NULL, NULL, "3", NULL
+ ED_AREA_MAGIC_BALL_CONTENT_XPOS, ED_AREA_MAGIC_BALL_CONTENT_YPOS,
+ ED_AREA_MAGIC_BALL_CONTENT_XOFF(2), ED_AREA_MAGIC_BALL_CONTENT_YOFF(2),
+ GADGET_ID_MAGIC_BALL_CONTENT_2, GADGET_ID_NONE,
+ &level.ball_content[2].e[0][0], 3, 3,
+ NULL, NULL, NULL, "3", NULL
},
{
ED_DRAWING_ID_MAGIC_BALL_CONTENT_3,
- ED_AREA_MAGIC_BALL_CONTENT_XPOS, ED_AREA_MAGIC_BALL_CONTENT_YPOS,
- ED_AREA_MAGIC_BALL_CONTENT_XOFF(3), ED_AREA_MAGIC_BALL_CONTENT_YOFF(3),
- GADGET_ID_MAGIC_BALL_CONTENT_3, GADGET_ID_NONE,
- &level.ball_content[3].e[0][0], 3, 3,
- NULL, NULL, NULL, "4", NULL
+ ED_AREA_MAGIC_BALL_CONTENT_XPOS, ED_AREA_MAGIC_BALL_CONTENT_YPOS,
+ ED_AREA_MAGIC_BALL_CONTENT_XOFF(3), ED_AREA_MAGIC_BALL_CONTENT_YOFF(3),
+ GADGET_ID_MAGIC_BALL_CONTENT_3, GADGET_ID_NONE,
+ &level.ball_content[3].e[0][0], 3, 3,
+ NULL, NULL, NULL, "4", NULL
},
{
ED_DRAWING_ID_MAGIC_BALL_CONTENT_4,
- ED_AREA_MAGIC_BALL_CONTENT_XPOS, ED_AREA_MAGIC_BALL_CONTENT_YPOS,
- ED_AREA_MAGIC_BALL_CONTENT_XOFF(4), ED_AREA_MAGIC_BALL_CONTENT_YOFF(4),
- GADGET_ID_MAGIC_BALL_CONTENT_4, GADGET_ID_NONE,
- &level.ball_content[4].e[0][0], 3, 3,
- NULL, NULL, NULL, "5", NULL
+ ED_AREA_MAGIC_BALL_CONTENT_XPOS, ED_AREA_MAGIC_BALL_CONTENT_YPOS,
+ ED_AREA_MAGIC_BALL_CONTENT_XOFF(4), ED_AREA_MAGIC_BALL_CONTENT_YOFF(4),
+ GADGET_ID_MAGIC_BALL_CONTENT_4, GADGET_ID_NONE,
+ &level.ball_content[4].e[0][0], 3, 3,
+ NULL, NULL, NULL, "5", NULL
},
{
ED_DRAWING_ID_MAGIC_BALL_CONTENT_5,
- ED_AREA_MAGIC_BALL_CONTENT_XPOS, ED_AREA_MAGIC_BALL_CONTENT_YPOS,
- ED_AREA_MAGIC_BALL_CONTENT_XOFF(5), ED_AREA_MAGIC_BALL_CONTENT_YOFF(5),
- GADGET_ID_MAGIC_BALL_CONTENT_5, GADGET_ID_NONE,
- &level.ball_content[5].e[0][0], 3, 3,
- NULL, NULL, NULL, "6", NULL
+ ED_AREA_MAGIC_BALL_CONTENT_XPOS, ED_AREA_MAGIC_BALL_CONTENT_YPOS,
+ ED_AREA_MAGIC_BALL_CONTENT_XOFF(5), ED_AREA_MAGIC_BALL_CONTENT_YOFF(5),
+ GADGET_ID_MAGIC_BALL_CONTENT_5, GADGET_ID_NONE,
+ &level.ball_content[5].e[0][0], 3, 3,
+ NULL, NULL, NULL, "6", NULL
},
{
ED_DRAWING_ID_MAGIC_BALL_CONTENT_6,
- ED_AREA_MAGIC_BALL_CONTENT_XPOS, ED_AREA_MAGIC_BALL_CONTENT_YPOS,
- ED_AREA_MAGIC_BALL_CONTENT_XOFF(6), ED_AREA_MAGIC_BALL_CONTENT_YOFF(6),
- GADGET_ID_MAGIC_BALL_CONTENT_6, GADGET_ID_NONE,
- &level.ball_content[6].e[0][0], 3, 3,
- NULL, NULL, NULL, "7", NULL
+ ED_AREA_MAGIC_BALL_CONTENT_XPOS, ED_AREA_MAGIC_BALL_CONTENT_YPOS,
+ ED_AREA_MAGIC_BALL_CONTENT_XOFF(6), ED_AREA_MAGIC_BALL_CONTENT_YOFF(6),
+ GADGET_ID_MAGIC_BALL_CONTENT_6, GADGET_ID_NONE,
+ &level.ball_content[6].e[0][0], 3, 3,
+ NULL, NULL, NULL, "7", NULL
},
{
ED_DRAWING_ID_MAGIC_BALL_CONTENT_7,
- ED_AREA_MAGIC_BALL_CONTENT_XPOS, ED_AREA_MAGIC_BALL_CONTENT_YPOS,
- ED_AREA_MAGIC_BALL_CONTENT_XOFF(7), ED_AREA_MAGIC_BALL_CONTENT_YOFF(7),
- GADGET_ID_MAGIC_BALL_CONTENT_7, GADGET_ID_NONE,
- &level.ball_content[7].e[0][0], 3, 3,
- NULL, NULL, NULL, "8", NULL
+ ED_AREA_MAGIC_BALL_CONTENT_XPOS, ED_AREA_MAGIC_BALL_CONTENT_YPOS,
+ ED_AREA_MAGIC_BALL_CONTENT_XOFF(7), ED_AREA_MAGIC_BALL_CONTENT_YOFF(7),
+ GADGET_ID_MAGIC_BALL_CONTENT_7, GADGET_ID_NONE,
+ &level.ball_content[7].e[0][0], 3, 3,
+ NULL, NULL, NULL, "8", NULL
},
// ---------- android content -----------------------------------------------
{
ED_DRAWING_ID_ANDROID_CONTENT,
- ED_AREA_1X1_SETTINGS_XPOS(0), ED_AREA_1X1_SETTINGS_YPOS(6),
- ED_AREA_1X1_SETTINGS_XOFF, ED_AREA_1X1_SETTINGS_YOFF,
- GADGET_ID_ANDROID_CONTENT, GADGET_ID_NONE,
- &level.android_clone_element[0], MAX_ANDROID_ELEMENTS, 1,
- NULL, NULL, "elements:", NULL, "elements android can clone"
+ ED_AREA_1X1_SETTINGS_XPOS(0), ED_AREA_1X1_SETTINGS_YPOS(6),
+ ED_AREA_1X1_SETTINGS_XOFF, ED_AREA_1X1_SETTINGS_YOFF,
+ GADGET_ID_ANDROID_CONTENT, GADGET_ID_NONE,
+ &level.android_clone_element[0], MAX_ANDROID_ELEMENTS, 1,
+ NULL, NULL, "Elements:", NULL, "Elements android can clone"
},
// ---------- amoeba content ------------------------------------------------
{
ED_DRAWING_ID_AMOEBA_CONTENT,
- ED_AREA_1X1_SETTINGS_XPOS(0), ED_AREA_1X1_SETTINGS_YPOS(3),
- ED_AREA_1X1_SETTINGS_XOFF, ED_AREA_1X1_SETTINGS_YOFF,
- GADGET_ID_AMOEBA_CONTENT, GADGET_ID_NONE,
- &level.amoeba_content, 1, 1,
- "content:", NULL, NULL, NULL, "amoeba content"
+ ED_AREA_1X1_SETTINGS_XPOS(0), ED_AREA_1X1_SETTINGS_YPOS(3),
+ ED_AREA_1X1_SETTINGS_XOFF, ED_AREA_1X1_SETTINGS_YOFF,
+ GADGET_ID_AMOEBA_CONTENT, GADGET_ID_NONE,
+ &level.amoeba_content, 1, 1,
+ "Content:", NULL, NULL, NULL, "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 magic wall elements ----------------------------------------
+
+ {
+ ED_DRAWING_ID_BD_MAGIC_WALL_DIAMOND_TO,
+ ED_AREA_1X1_SETTINGS_XPOS(0), ED_AREA_1X1_SETTINGS_YPOS(6),
+ ED_AREA_1X1_SETTINGS_XOFF, ED_AREA_1X1_SETTINGS_YOFF,
+ GADGET_ID_BD_MAGIC_WALL_DIAMOND_TO, GADGET_ID_NONE,
+ &level.bd_magic_wall_diamond_to, 1, 1,
+ "Changes diamonds to:", NULL, NULL, NULL, "Element to turn diamonds to"
+ },
+ {
+ ED_DRAWING_ID_BD_MAGIC_WALL_ROCK_TO,
+ ED_AREA_1X1_SETTINGS_XPOS(0), ED_AREA_1X1_SETTINGS_YPOS(7),
+ ED_AREA_1X1_SETTINGS_XOFF, ED_AREA_1X1_SETTINGS_YOFF,
+ GADGET_ID_BD_MAGIC_WALL_ROCK_TO, GADGET_ID_NONE,
+ &level.bd_magic_wall_rock_to, 1, 1,
+ "Changes rocks to:", NULL, NULL, NULL, "Element to turn rocks to"
+ },
+ {
+ ED_DRAWING_ID_BD_MAGIC_WALL_MEGA_ROCK_TO,
+ ED_AREA_1X1_SETTINGS_XPOS(0), ED_AREA_1X1_SETTINGS_YPOS(8),
+ ED_AREA_1X1_SETTINGS_XOFF, ED_AREA_1X1_SETTINGS_YOFF,
+ GADGET_ID_BD_MAGIC_WALL_MEGA_ROCK_TO, GADGET_ID_NONE,
+ &level.bd_magic_wall_mega_rock_to, 1, 1,
+ "Changes mega rocks to:", NULL, NULL, NULL, "Element to turn mega rocks to"
+ },
+ {
+ ED_DRAWING_ID_BD_MAGIC_WALL_NUT_TO,
+ ED_AREA_1X1_SETTINGS_XPOS(0), ED_AREA_1X1_SETTINGS_YPOS(9),
+ ED_AREA_1X1_SETTINGS_XOFF, ED_AREA_1X1_SETTINGS_YOFF,
+ GADGET_ID_BD_MAGIC_WALL_NUT_TO, GADGET_ID_NONE,
+ &level.bd_magic_wall_nut_to, 1, 1,
+ "Changes nuts to:", NULL, NULL, NULL, "Element to turn nuts to"
+ },
+ {
+ ED_DRAWING_ID_BD_MAGIC_WALL_NITRO_PACK_TO,
+ ED_AREA_1X1_SETTINGS_XPOS(0), ED_AREA_1X1_SETTINGS_YPOS(10),
+ ED_AREA_1X1_SETTINGS_XOFF, ED_AREA_1X1_SETTINGS_YOFF,
+ GADGET_ID_BD_MAGIC_WALL_NITRO_PACK_TO, GADGET_ID_NONE,
+ &level.bd_magic_wall_nitro_pack_to, 1, 1,
+ "Changes nitro packs to:", NULL, NULL, NULL, "Element to turn nitro packs to"
+ },
+ {
+ ED_DRAWING_ID_BD_MAGIC_WALL_FLYING_DIAMOND_TO,
+ ED_AREA_1X1_SETTINGS_XPOS(0), ED_AREA_1X1_SETTINGS_YPOS(11),
+ ED_AREA_1X1_SETTINGS_XOFF, ED_AREA_1X1_SETTINGS_YOFF,
+ GADGET_ID_BD_MAGIC_WALL_FLYING_DIAMOND_TO, GADGET_ID_NONE,
+ &level.bd_magic_wall_flying_diamond_to, 1, 1,
+ "Changes flying diamonds to:", NULL, NULL, NULL, "Element to turn flying diamonds to"
+ },
+ {
+ ED_DRAWING_ID_BD_MAGIC_WALL_FLYING_ROCK_TO,
+ ED_AREA_1X1_SETTINGS_XPOS(0), ED_AREA_1X1_SETTINGS_YPOS(12),
+ ED_AREA_1X1_SETTINGS_XOFF, ED_AREA_1X1_SETTINGS_YOFF,
+ GADGET_ID_BD_MAGIC_WALL_FLYING_ROCK_TO, GADGET_ID_NONE,
+ &level.bd_magic_wall_flying_rock_to, 1, 1,
+ "Changes flying rocks to:", NULL, NULL, NULL, "Element to turn flying rocks to"
+ },
+
+ // ---------- BD amoeba content ---------------------------------------------
+
+ {
+ ED_DRAWING_ID_BD_AMOEBA_CONTENT_TOO_BIG,
+ ED_AREA_1X1_SETTINGS_XPOS(0), ED_AREA_1X1_SETTINGS_YPOS(7),
+ ED_AREA_1X1_SETTINGS_XOFF, ED_AREA_1X1_SETTINGS_YOFF,
+ GADGET_ID_BD_AMOEBA_CONTENT_TOO_BIG, GADGET_ID_NONE,
+ &level.bd_amoeba_content_too_big, 1, 1,
+ "If too big, changes to:", NULL, NULL, NULL, "BD amoeba content if too big"
+ },
+ {
+ ED_DRAWING_ID_BD_AMOEBA_CONTENT_ENCLOSED,
+ ED_AREA_1X1_SETTINGS_XPOS(0), ED_AREA_1X1_SETTINGS_YPOS(8),
+ ED_AREA_1X1_SETTINGS_XOFF, ED_AREA_1X1_SETTINGS_YOFF,
+ GADGET_ID_BD_AMOEBA_CONTENT_ENCLOSED, GADGET_ID_NONE,
+ &level.bd_amoeba_content_enclosed, 1, 1,
+ "If enclosed, changes to:", NULL, NULL, NULL, "BD amoeba content if enclosed"
+ },
+
+ // ---------- BD amoeba 2 content -------------------------------------------
+
+ {
+ ED_DRAWING_ID_BD_AMOEBA_2_CONTENT_TOO_BIG,
+ ED_AREA_1X1_SETTINGS_XPOS(0), ED_AREA_1X1_SETTINGS_YPOS(7),
+ ED_AREA_1X1_SETTINGS_XOFF, ED_AREA_1X1_SETTINGS_YOFF,
+ GADGET_ID_BD_AMOEBA_2_CONTENT_TOO_BIG, GADGET_ID_NONE,
+ &level.bd_amoeba_2_content_too_big, 1, 1,
+ "If too big, changes to:", NULL, NULL, NULL, "BD amoeba 2 content if too big"
+ },
+ {
+ ED_DRAWING_ID_BD_AMOEBA_2_CONTENT_ENCLOSED,
+ ED_AREA_1X1_SETTINGS_XPOS(0), ED_AREA_1X1_SETTINGS_YPOS(8),
+ ED_AREA_1X1_SETTINGS_XOFF, ED_AREA_1X1_SETTINGS_YOFF,
+ GADGET_ID_BD_AMOEBA_2_CONTENT_ENCLOSED, GADGET_ID_NONE,
+ &level.bd_amoeba_2_content_enclosed, 1, 1,
+ "If enclosed, changes to:", NULL, NULL, NULL, "BD amoeba 2 content if enclosed"
+ },
+ {
+ ED_DRAWING_ID_BD_AMOEBA_2_CONTENT_EXPLODING,
+ ED_AREA_1X1_SETTINGS_XPOS(0), ED_AREA_1X1_SETTINGS_YPOS(10),
+ ED_AREA_1X1_SETTINGS_XOFF, ED_AREA_1X1_SETTINGS_YOFF,
+ GADGET_ID_BD_AMOEBA_2_CONTENT_EXPLODING, GADGET_ID_NONE,
+ &level.bd_amoeba_2_content_exploding, 1, 1,
+ "If exploding, changes to:", NULL, NULL, NULL, "BD amoeba 2 content if exploding"
+ },
+ {
+ ED_DRAWING_ID_BD_AMOEBA_2_CONTENT_LOOKS_LIKE,
+ ED_AREA_1X1_SETTINGS_XPOS(0), ED_AREA_1X1_SETTINGS_YPOS(11),
+ ED_AREA_1X1_SETTINGS_XOFF, ED_AREA_1X1_SETTINGS_YOFF,
+ GADGET_ID_BD_AMOEBA_2_CONTENT_LOOKS_LIKE, GADGET_ID_NONE,
+ &level.bd_amoeba_2_content_looks_like, 1, 1,
+ "Use graphic of element:", NULL, NULL, NULL, "BD amoeba 2 looks like this element"
+ },
+ {
+ ED_DRAWING_ID_BD_SLIME_EATS_ELEMENT_1,
+ 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_SLIME_EATS_ELEMENT_1, GADGET_ID_NONE,
+ &level.bd_slime_eats_element_1, 1, 1,
+ "Can eat:", NULL, NULL, NULL, "Element that can be eaten"
+ },
+ {
+ ED_DRAWING_ID_BD_SLIME_CONVERTS_TO_ELEMENT_1,
+ 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_SLIME_CONVERTS_TO_ELEMENT_1, GADGET_ID_BD_SLIME_EATS_ELEMENT_1,
+ &level.bd_slime_converts_to_element_1, 1, 1,
+ " and convert to:", NULL, NULL, NULL, "Eaten element is converted to"
+ },
+ {
+ ED_DRAWING_ID_BD_SLIME_EATS_ELEMENT_2,
+ ED_AREA_1X1_SETTINGS_XPOS(0), ED_AREA_1X1_SETTINGS_YPOS(6),
+ ED_AREA_1X1_SETTINGS_XOFF, ED_AREA_1X1_SETTINGS_YOFF,
+ GADGET_ID_BD_SLIME_EATS_ELEMENT_2, GADGET_ID_NONE,
+ &level.bd_slime_eats_element_2, 1, 1,
+ "Can eat:", NULL, NULL, NULL, "Element that can be eaten"
+ },
+ {
+ ED_DRAWING_ID_BD_SLIME_CONVERTS_TO_ELEMENT_2,
+ ED_AREA_1X1_SETTINGS_XPOS(0), ED_AREA_1X1_SETTINGS_YPOS(6),
+ ED_AREA_1X1_SETTINGS_XOFF, ED_AREA_1X1_SETTINGS_YOFF,
+ GADGET_ID_BD_SLIME_CONVERTS_TO_ELEMENT_2, GADGET_ID_BD_SLIME_EATS_ELEMENT_2,
+ &level.bd_slime_converts_to_element_2, 1, 1,
+ " and convert to:", NULL, NULL, NULL, "Eaten element is converted to"
+ },
+ {
+ ED_DRAWING_ID_BD_SLIME_EATS_ELEMENT_3,
+ ED_AREA_1X1_SETTINGS_XPOS(0), ED_AREA_1X1_SETTINGS_YPOS(7),
+ ED_AREA_1X1_SETTINGS_XOFF, ED_AREA_1X1_SETTINGS_YOFF,
+ GADGET_ID_BD_SLIME_EATS_ELEMENT_3, GADGET_ID_NONE,
+ &level.bd_slime_eats_element_3, 1, 1,
+ "Can eat:", NULL, NULL, NULL, "Element that can be eaten"
+ },
+ {
+ ED_DRAWING_ID_BD_SLIME_CONVERTS_TO_ELEMENT_3,
+ ED_AREA_1X1_SETTINGS_XPOS(0), ED_AREA_1X1_SETTINGS_YPOS(7),
+ ED_AREA_1X1_SETTINGS_XOFF, ED_AREA_1X1_SETTINGS_YOFF,
+ GADGET_ID_BD_SLIME_CONVERTS_TO_ELEMENT_3, GADGET_ID_BD_SLIME_EATS_ELEMENT_3,
+ &level.bd_slime_converts_to_element_3, 1, 1,
+ " and convert to:", NULL, NULL, NULL, "Eaten element is converted to"
+ },
+ {
+ ED_DRAWING_ID_BD_ACID_EATS_ELEMENT,
+ ED_AREA_1X1_SETTINGS_XPOS(0), ED_AREA_1X1_SETTINGS_YPOS(1),
+ ED_AREA_1X1_SETTINGS_XOFF, ED_AREA_1X1_SETTINGS_YOFF,
+ GADGET_ID_BD_ACID_EATS_ELEMENT, GADGET_ID_NONE,
+ &level.bd_acid_eats_element, 1, 1,
+ "Can eat:", NULL, NULL, NULL, "Eats this element when spreading"
+ },
+ {
+ ED_DRAWING_ID_BD_ACID_TURNS_TO_ELEMENT,
+ ED_AREA_1X1_SETTINGS_XPOS(0), ED_AREA_1X1_SETTINGS_YPOS(3),
+ ED_AREA_1X1_SETTINGS_XOFF, ED_AREA_1X1_SETTINGS_YOFF,
+ GADGET_ID_BD_ACID_TURNS_TO_ELEMENT, GADGET_ID_NONE,
+ &level.bd_acid_turns_to_element, 1, 1,
+ "Can leave behind:", NULL, NULL, NULL, "Turns to this element after spreading"
+ },
+ {
+ ED_DRAWING_ID_BD_BITER_EATS_ELEMENT,
+ ED_AREA_1X1_SETTINGS_XPOS(0), ED_AREA_1X1_SETTINGS_YPOS(2),
+ ED_AREA_1X1_SETTINGS_XOFF, ED_AREA_1X1_SETTINGS_YOFF,
+ GADGET_ID_BD_BITER_EATS_ELEMENT, GADGET_ID_NONE,
+ &level.bd_biter_eats_element, 1, 1,
+ "Can eat:", NULL, NULL, NULL, "Eats this element when moving"
+ },
+ {
+ ED_DRAWING_ID_BD_BLADDER_CONVERTS_BY_ELEMENT,
+ ED_AREA_1X1_SETTINGS_XPOS(0), ED_AREA_1X1_SETTINGS_YPOS(1),
+ ED_AREA_1X1_SETTINGS_XOFF, ED_AREA_1X1_SETTINGS_YOFF,
+ GADGET_ID_BD_BLADDER_CONVERTS_BY_ELEMENT, GADGET_ID_NONE,
+ &level.bd_bladder_converts_by_element, 1, 1,
+ "Turns to clock by touching:", NULL, NULL, NULL, "Turns to clock by touching element"
+ },
+ {
+ ED_DRAWING_ID_BD_NUT_CONTENT,
+ ED_AREA_1X1_SETTINGS_XPOS(0), ED_AREA_1X1_SETTINGS_YPOS(1),
+ ED_AREA_1X1_SETTINGS_XOFF, ED_AREA_1X1_SETTINGS_YOFF,
+ GADGET_ID_BD_NUT_CONTENT, GADGET_ID_NONE,
+ &level.bd_nut_content, 1, 1,
+ "When breaking, changes to:", NULL, NULL, NULL, "Element created when breaking nut"
+ },
+ {
+ ED_DRAWING_ID_BD_EXPANDING_WALL_LOOKS_LIKE,
+ ED_AREA_1X1_SETTINGS_XPOS(0), ED_AREA_1X1_SETTINGS_YPOS(1),
+ ED_AREA_1X1_SETTINGS_XOFF, ED_AREA_1X1_SETTINGS_YOFF,
+ GADGET_ID_BD_EXPANDING_WALL_LOOKS_LIKE, GADGET_ID_NONE,
+ &level.bd_expanding_wall_looks_like, 1, 1,
+ "Use graphic of element:", NULL, NULL, NULL, "Expanding wall looks like this element"
+ },
+ {
+ ED_DRAWING_ID_BD_SAND_LOOKS_LIKE,
+ ED_AREA_1X1_SETTINGS_XPOS(0), ED_AREA_1X1_SETTINGS_YPOS(0),
+ ED_AREA_1X1_SETTINGS_XOFF, ED_AREA_1X1_SETTINGS_YOFF,
+ GADGET_ID_BD_SAND_LOOKS_LIKE, GADGET_ID_NONE,
+ &level.bd_sand_looks_like, 1, 1,
+ "Use graphic of element:", NULL, NULL, NULL, "Sand looks like this element"
+ },
+ {
+ ED_DRAWING_ID_BD_ROCK_TURNS_TO_ON_FALLING,
+ ED_AREA_1X1_SETTINGS_XPOS(0), ED_AREA_1X1_SETTINGS_YPOS(2),
+ ED_AREA_1X1_SETTINGS_XOFF, ED_AREA_1X1_SETTINGS_YOFF,
+ GADGET_ID_BD_ROCK_TURNS_TO_ON_FALLING, GADGET_ID_NONE,
+ &level.bd_rock_turns_to_on_falling, 1, 1,
+ "Turns to when falling:", NULL, NULL, NULL, "Changes to this when falling starts"
+ },
+ {
+ ED_DRAWING_ID_BD_ROCK_TURNS_TO_ON_IMPACT,
+ ED_AREA_1X1_SETTINGS_XPOS(0), ED_AREA_1X1_SETTINGS_YPOS(3),
+ ED_AREA_1X1_SETTINGS_XOFF, ED_AREA_1X1_SETTINGS_YOFF,
+ GADGET_ID_BD_ROCK_TURNS_TO_ON_IMPACT, GADGET_ID_NONE,
+ &level.bd_rock_turns_to_on_impact, 1, 1,
+ "Turns to on impact:", NULL, NULL, NULL, "Changes to this when falling stops"
+ },
+ {
+ ED_DRAWING_ID_BD_DIAMOND_TURNS_TO_ON_FALLING,
+ ED_AREA_1X1_SETTINGS_XPOS(0), ED_AREA_1X1_SETTINGS_YPOS(2),
+ ED_AREA_1X1_SETTINGS_XOFF, ED_AREA_1X1_SETTINGS_YOFF,
+ GADGET_ID_BD_DIAMOND_TURNS_TO_ON_FALLING, GADGET_ID_NONE,
+ &level.bd_diamond_turns_to_on_falling, 1, 1,
+ "Turns to when falling:", NULL, NULL, NULL, "Changes to this when falling starts"
+ },
+ {
+ ED_DRAWING_ID_BD_DIAMOND_TURNS_TO_ON_IMPACT,
+ ED_AREA_1X1_SETTINGS_XPOS(0), ED_AREA_1X1_SETTINGS_YPOS(3),
+ ED_AREA_1X1_SETTINGS_XOFF, ED_AREA_1X1_SETTINGS_YOFF,
+ GADGET_ID_BD_DIAMOND_TURNS_TO_ON_IMPACT, GADGET_ID_NONE,
+ &level.bd_diamond_turns_to_on_impact, 1, 1,
+ "Turns to on impact:", NULL, NULL, NULL, "Changes to this when falling stops"
+ },
+ {
+ ED_DRAWING_ID_BD_FIREFLY_EXPLODES_TO,
+ ED_AREA_1X1_SETTINGS_XPOS(0), ED_AREA_1X1_SETTINGS_YPOS(0),
+ ED_AREA_1X1_SETTINGS_XOFF, ED_AREA_1X1_SETTINGS_YOFF,
+ GADGET_ID_BD_FIREFLY_EXPLODES_TO, GADGET_ID_NONE,
+ &level.bd_firefly_explodes_to, 1, 1,
+ "Explodes to:", NULL, NULL, NULL, "Changes to this when exploding"
+ },
+ {
+ ED_DRAWING_ID_BD_FIREFLY_2_EXPLODES_TO,
+ ED_AREA_1X1_SETTINGS_XPOS(0), ED_AREA_1X1_SETTINGS_YPOS(0),
+ ED_AREA_1X1_SETTINGS_XOFF, ED_AREA_1X1_SETTINGS_YOFF,
+ GADGET_ID_BD_FIREFLY_2_EXPLODES_TO, GADGET_ID_NONE,
+ &level.bd_firefly_2_explodes_to, 1, 1,
+ "Explodes to:", NULL, NULL, NULL, "Changes to this when exploding"
+ },
+ {
+ ED_DRAWING_ID_BD_BUTTERFLY_EXPLODES_TO,
+ ED_AREA_1X1_SETTINGS_XPOS(0), ED_AREA_1X1_SETTINGS_YPOS(0),
+ ED_AREA_1X1_SETTINGS_XOFF, ED_AREA_1X1_SETTINGS_YOFF,
+ GADGET_ID_BD_BUTTERFLY_EXPLODES_TO, GADGET_ID_NONE,
+ &level.bd_butterfly_explodes_to, 1, 1,
+ "Explodes to:", NULL, NULL, NULL, "Changes to this when exploding"
+ },
+ {
+ ED_DRAWING_ID_BD_BUTTERFLY_2_EXPLODES_TO,
+ ED_AREA_1X1_SETTINGS_XPOS(0), ED_AREA_1X1_SETTINGS_YPOS(0),
+ ED_AREA_1X1_SETTINGS_XOFF, ED_AREA_1X1_SETTINGS_YOFF,
+ GADGET_ID_BD_BUTTERFLY_2_EXPLODES_TO, GADGET_ID_NONE,
+ &level.bd_butterfly_2_explodes_to, 1, 1,
+ "Explodes to:", NULL, NULL, NULL, "Changes to this when exploding"
+ },
+ {
+ ED_DRAWING_ID_BD_STONEFLY_EXPLODES_TO,
+ ED_AREA_1X1_SETTINGS_XPOS(0), ED_AREA_1X1_SETTINGS_YPOS(0),
+ ED_AREA_1X1_SETTINGS_XOFF, ED_AREA_1X1_SETTINGS_YOFF,
+ GADGET_ID_BD_STONEFLY_EXPLODES_TO, GADGET_ID_NONE,
+ &level.bd_stonefly_explodes_to, 1, 1,
+ "Explodes to:", NULL, NULL, NULL, "Changes to this when exploding"
+ },
+ {
+ ED_DRAWING_ID_BD_DRAGONFLY_EXPLODES_TO,
+ ED_AREA_1X1_SETTINGS_XPOS(0), ED_AREA_1X1_SETTINGS_YPOS(0),
+ ED_AREA_1X1_SETTINGS_XOFF, ED_AREA_1X1_SETTINGS_YOFF,
+ GADGET_ID_BD_DRAGONFLY_EXPLODES_TO, GADGET_ID_NONE,
+ &level.bd_dragonfly_explodes_to, 1, 1,
+ "Explodes to:", NULL, NULL, NULL, "Changes to this when exploding"
+ },
+ {
+ ED_DRAWING_ID_BD_DIAMOND_BIRTH_TURNS_TO,
+ ED_AREA_1X1_SETTINGS_XPOS(0), ED_AREA_1X1_SETTINGS_YPOS(1),
+ ED_AREA_1X1_SETTINGS_XOFF, ED_AREA_1X1_SETTINGS_YOFF,
+ GADGET_ID_BD_DIAMOND_BIRTH_TURNS_TO, GADGET_ID_NONE,
+ &level.bd_diamond_birth_turns_to, 1, 1,
+ "Explosion ends in:", NULL, NULL, NULL, "Changes to this after explosion"
+ },
+ {
+ ED_DRAWING_ID_BD_BOMB_EXPLOSION_TURNS_TO,
+ ED_AREA_1X1_SETTINGS_XPOS(0), ED_AREA_1X1_SETTINGS_YPOS(0),
+ ED_AREA_1X1_SETTINGS_XOFF, ED_AREA_1X1_SETTINGS_YOFF,
+ GADGET_ID_BD_BOMB_EXPLOSION_TURNS_TO, GADGET_ID_NONE,
+ &level.bd_bomb_explosion_turns_to, 1, 1,
+ "Explosion ends in:", NULL, NULL, NULL, "Changes to this after explosion"
+ },
+ {
+ ED_DRAWING_ID_BD_NITRO_EXPLOSION_TURNS_TO,
+ ED_AREA_1X1_SETTINGS_XPOS(0), ED_AREA_1X1_SETTINGS_YPOS(0),
+ ED_AREA_1X1_SETTINGS_XOFF, ED_AREA_1X1_SETTINGS_YOFF,
+ GADGET_ID_BD_NITRO_EXPLOSION_TURNS_TO, GADGET_ID_NONE,
+ &level.bd_nitro_explosion_turns_to, 1, 1,
+ "Explosion ends in:", NULL, NULL, NULL, "Changes to this after explosion"
+ },
+ {
+ ED_DRAWING_ID_BD_EXPLOSION_TURNS_TO,
+ ED_AREA_1X1_SETTINGS_XPOS(0), ED_AREA_1X1_SETTINGS_YPOS(1),
+ ED_AREA_1X1_SETTINGS_XOFF, ED_AREA_1X1_SETTINGS_YOFF,
+ GADGET_ID_BD_EXPLOSION_TURNS_TO, GADGET_ID_NONE,
+ &level.bd_explosion_turns_to, 1, 1,
+ "Explosion ends in:", NULL, NULL, NULL, "Changes to this after explosion"
},
// ---------- level start element -------------------------------------------
{
ED_DRAWING_ID_START_ELEMENT,
- -1, ED_AREA_1X1_SETTINGS_YPOS(10),
- 0, ED_AREA_1X1_SETTINGS_YOFF,
- GADGET_ID_START_ELEMENT, GADGET_ID_USE_START_ELEMENT,
- &level.start_element[0], 1, 1,
- NULL, NULL, NULL, NULL, "level start element"
+ -1, ED_AREA_1X1_SETTINGS_YPOS(10),
+ 0, ED_AREA_1X1_SETTINGS_YOFF,
+ GADGET_ID_START_ELEMENT, GADGET_ID_USE_START_ELEMENT,
+ &level.start_element[0], 1, 1,
+ NULL, NULL, NULL, NULL, "Level start element"
},
// ---------- player artwork element ----------------------------------------
{
ED_DRAWING_ID_ARTWORK_ELEMENT,
- -1, ED_AREA_1X1_SETTINGS_YPOS(11),
- 0, ED_AREA_1X1_SETTINGS_YOFF,
- GADGET_ID_ARTWORK_ELEMENT, GADGET_ID_USE_ARTWORK_ELEMENT,
- &level.artwork_element[0], 1, 1,
- NULL, NULL, NULL, NULL, "element for player artwork"
+ -1, ED_AREA_1X1_SETTINGS_YPOS(11),
+ 0, ED_AREA_1X1_SETTINGS_YOFF,
+ GADGET_ID_ARTWORK_ELEMENT, GADGET_ID_USE_ARTWORK_ELEMENT,
+ &level.artwork_element[0], 1, 1,
+ NULL, NULL, NULL, NULL, "Element for player artwork"
},
// ---------- player explosion element --------------------------------------
{
ED_DRAWING_ID_EXPLOSION_ELEMENT,
- -1, ED_AREA_1X1_SETTINGS_YPOS(12),
- 0, ED_AREA_1X1_SETTINGS_YOFF,
- GADGET_ID_EXPLOSION_ELEMENT, GADGET_ID_USE_EXPLOSION_ELEMENT,
- &level.explosion_element[0], 1, 1,
- NULL, NULL, NULL, NULL, "element for player explosion"
+ -1, ED_AREA_1X1_SETTINGS_YPOS(12),
+ 0, ED_AREA_1X1_SETTINGS_YOFF,
+ GADGET_ID_EXPLOSION_ELEMENT, GADGET_ID_USE_EXPLOSION_ELEMENT,
+ &level.explosion_element[0], 1, 1,
+ NULL, NULL, NULL, NULL, "Element for player explosion"
},
// ---------- player initial inventory --------------------------------------
{
ED_DRAWING_ID_INVENTORY_CONTENT,
- -1, ED_AREA_1X1_SETTINGS_YPOS(1),
- 0, ED_AREA_1X1_SETTINGS_YOFF,
- GADGET_ID_INVENTORY_CONTENT, GADGET_ID_USE_INITIAL_INVENTORY,
- &level.initial_inventory_content[0][0], MAX_INITIAL_INVENTORY_SIZE, 1,
- NULL, NULL, NULL, NULL, "content for initial inventory"
+ -1, ED_AREA_1X1_SETTINGS_YPOS(1),
+ 0, ED_AREA_1X1_SETTINGS_YOFF,
+ GADGET_ID_INVENTORY_CONTENT, GADGET_ID_USE_INITIAL_INVENTORY,
+ &level.initial_inventory_content[0][0], MAX_INITIAL_INVENTORY_SIZE, 1,
+ NULL, NULL, NULL, NULL, "Content for initial inventory"
},
// ---------- gray ball content -----------------------------------------
{
ED_DRAWING_ID_MM_BALL_CONTENT,
- ED_AREA_1X1_SETTINGS_XPOS(0), ED_AREA_1X1_SETTINGS_YPOS(2),
- ED_AREA_1X1_SETTINGS_XOFF, ED_AREA_1X1_SETTINGS_YOFF,
- GADGET_ID_MM_BALL_CONTENT, GADGET_ID_NONE,
- &level.mm_ball_content[0], MAX_MM_BALL_CONTENTS, 1,
- "content:", NULL, NULL, NULL, "content for gray ball"
+ ED_AREA_1X1_SETTINGS_XPOS(0), ED_AREA_1X1_SETTINGS_YPOS(2),
+ ED_AREA_1X1_SETTINGS_XOFF, ED_AREA_1X1_SETTINGS_YOFF,
+ GADGET_ID_MM_BALL_CONTENT, GADGET_ID_NONE,
+ &level.mm_ball_content[0], MAX_MM_BALL_CONTENTS, 1,
+ "Content:", NULL, NULL, NULL, "Content for gray ball"
},
// ---------- element settings: configure 1 (custom elements) ---------------
{
ED_DRAWING_ID_CUSTOM_GRAPHIC,
- -1, ED_AREA_1X1_SETTINGS_YPOS(1),
- 0, ED_AREA_1X1_SETTINGS_YOFF,
- GADGET_ID_CUSTOM_GRAPHIC, GADGET_ID_CUSTOM_USE_GRAPHIC,
- &custom_element.gfx_element_initial, 1, 1,
- NULL, NULL, NULL, NULL, "custom graphic element"
+ -1, ED_AREA_1X1_SETTINGS_YPOS(1),
+ 0, ED_AREA_1X1_SETTINGS_YOFF,
+ GADGET_ID_CUSTOM_GRAPHIC, GADGET_ID_CUSTOM_USE_GRAPHIC,
+ &custom_element.gfx_element_initial, 1, 1,
+ NULL, NULL, NULL, NULL, "Custom graphic element"
},
// ---------- element settings: configure 2 (custom elements) ---------------
{
ED_DRAWING_ID_CUSTOM_CONTENT,
- -1, ED_AREA_3X3_SETTINGS_YPOS(11),
- 0, ED_AREA_3X3_SETTINGS_YOFF,
- GADGET_ID_CUSTOM_CONTENT, GADGET_ID_NONE, // align three rows
- &custom_element.content.e[0][0], 3, 3,
- "content:", NULL, NULL, NULL, NULL
+ -1, ED_AREA_3X3_SETTINGS_YPOS(11),
+ 0, ED_AREA_3X3_SETTINGS_YOFF,
+ GADGET_ID_CUSTOM_CONTENT, GADGET_ID_NONE, // align three rows
+ &custom_element.content.e[0][0], 3, 3,
+ "Content:", NULL, NULL, NULL, NULL
},
// ---------- custom enter and leave element (when moving) ------------------
{
ED_DRAWING_ID_CUSTOM_MOVE_ENTER,
- ED_AREA_1X1_SETTINGS_XPOS(1), ED_AREA_1X1_SETTINGS_YPOS(3),
- ED_AREA_1X1_SETTINGS_XOFF, ED_AREA_1X1_SETTINGS_YOFF,
- GADGET_ID_CUSTOM_MOVE_ENTER, GADGET_ID_NONE,
- &custom_element.move_enter_element, 1, 1,
- "can dig:", " ", NULL, NULL, "element that can be digged/collected"
+ ED_AREA_1X1_SETTINGS_XPOS(1), ED_AREA_1X1_SETTINGS_YPOS(3),
+ ED_AREA_1X1_SETTINGS_XOFF, ED_AREA_1X1_SETTINGS_YOFF,
+ GADGET_ID_CUSTOM_MOVE_ENTER, GADGET_ID_NONE,
+ &custom_element.move_enter_element, 1, 1,
+ "Can dig:", " ", NULL, NULL, "Element that can be digged/collected"
},
{
ED_DRAWING_ID_CUSTOM_MOVE_LEAVE,
- -1, ED_AREA_1X1_SETTINGS_YPOS(3),
- 0, ED_AREA_1X1_SETTINGS_YOFF,
- GADGET_ID_CUSTOM_MOVE_LEAVE, GADGET_ID_CUSTOM_MOVE_LEAVE_TYPE,
- &custom_element.move_leave_element, 1, 1,
- NULL, NULL, NULL, NULL, "element that will be left behind"
+ -1, ED_AREA_1X1_SETTINGS_YPOS(3),
+ 0, ED_AREA_1X1_SETTINGS_YOFF,
+ GADGET_ID_CUSTOM_MOVE_LEAVE, GADGET_ID_CUSTOM_MOVE_LEAVE_TYPE,
+ &custom_element.move_leave_element, 1, 1,
+ NULL, NULL, NULL, NULL, "Element that will be left behind"
},
// ---------- element settings: advanced (custom elements) ------------------
{
ED_DRAWING_ID_CUSTOM_CHANGE_TARGET,
- -1, ED_AREA_1X1_SETTINGS_YPOS(1),
- 0, ED_AREA_1X1_SETTINGS_YOFF,
- GADGET_ID_CUSTOM_CHANGE_TARGET, GADGET_ID_CUSTOM_CAN_CHANGE,
- &custom_element_change.target_element, 1, 1,
- NULL, "after/when:", NULL, NULL, "new target element after change"
+ -1, ED_AREA_1X1_SETTINGS_YPOS(1),
+ 0, ED_AREA_1X1_SETTINGS_YOFF,
+ GADGET_ID_CUSTOM_CHANGE_TARGET, GADGET_ID_CUSTOM_CAN_CHANGE,
+ &custom_element_change.target_element, 1, 1,
+ NULL, "after/when:", NULL, NULL, "New target element after change"
},
// ---------- custom change content (extended change target) ----------------
{
ED_DRAWING_ID_CUSTOM_CHANGE_CONTENT,
- -1, ED_AREA_3X3_SETTINGS_YPOS(9),
- 0, ED_AREA_3X3_SETTINGS_YOFF,
- GADGET_ID_CUSTOM_CHANGE_CONTENT, GADGET_ID_NONE, // align three rows
+ -1, ED_AREA_3X3_SETTINGS_YPOS(9),
+ 0, ED_AREA_3X3_SETTINGS_YOFF,
+ GADGET_ID_CUSTOM_CHANGE_CONTENT, GADGET_ID_NONE, // align three rows
&custom_element_change.target_content.e[0][0], 3, 3,
- NULL, NULL, NULL, NULL, "new extended elements after change"
+ NULL, NULL, NULL, NULL, "New extended elements after change"
},
// ---------- custom change trigger (element causing change) ----------------
{
ED_DRAWING_ID_CUSTOM_CHANGE_TRIGGER,
- -1, ED_AREA_1X1_SETTINGS_YPOS(5),
- 0, ED_AREA_1X1_SETTINGS_YOFF,
- GADGET_ID_CUSTOM_CHANGE_TRIGGER, GADGET_ID_CHANGE_OTHER_ACTION,
+ -1, ED_AREA_1X1_SETTINGS_YPOS(5),
+ 0, ED_AREA_1X1_SETTINGS_YOFF,
+ GADGET_ID_CUSTOM_CHANGE_TRIGGER, GADGET_ID_CHANGE_OTHER_ACTION,
&custom_element_change.initial_trigger_element, 1, 1,
- NULL, NULL, NULL, NULL, "other element triggering change"
+ NULL, NULL, NULL, NULL, "Other element triggering change"
},
// ---------- custom change action (element used for action) ----------------
{
ED_DRAWING_ID_CUSTOM_CHANGE_ACTION,
- -1, ED_AREA_1X1_SETTINGS_YPOS(13),
- 0, ED_AREA_1X1_SETTINGS_YOFF,
- GADGET_ID_CUSTOM_CHANGE_ACTION, GADGET_ID_ACTION_ARG,
- &custom_element_change.action_element, 1, 1,
- NULL, NULL, NULL, NULL, "element used as action parameter"
+ -1, ED_AREA_1X1_SETTINGS_YPOS(13),
+ 0, ED_AREA_1X1_SETTINGS_YOFF,
+ GADGET_ID_CUSTOM_CHANGE_ACTION, GADGET_ID_ACTION_ARG,
+ &custom_element_change.action_element, 1, 1,
+ NULL, NULL, NULL, NULL, "Element used as action parameter"
},
// ---------- group element content -----------------------------------------
{
ED_DRAWING_ID_GROUP_CONTENT,
- ED_AREA_1X1_SETTINGS_XPOS(0), ED_AREA_1X1_SETTINGS_YPOS(2),
- ED_AREA_1X1_SETTINGS_XOFF, ED_AREA_1X1_SETTINGS_YOFF,
- GADGET_ID_GROUP_CONTENT, GADGET_ID_NONE,
- &group_element_info.element[0], MAX_ELEMENTS_IN_GROUP, 1,
- "content:", NULL, NULL, NULL, NULL
+ ED_AREA_1X1_SETTINGS_XPOS(0), ED_AREA_1X1_SETTINGS_YPOS(2),
+ ED_AREA_1X1_SETTINGS_XOFF, ED_AREA_1X1_SETTINGS_YOFF,
+ GADGET_ID_GROUP_CONTENT, GADGET_ID_NONE,
+ &group_element_info.element[0], MAX_ELEMENTS_IN_GROUP, 1,
+ "Content:", NULL, NULL, NULL, NULL
},
// ---------- random background (for random painting) -----------------------
{
ED_DRAWING_ID_RANDOM_BACKGROUND,
- -1, ED_AREA_1X1_LSETTINGS_YPOS(1),
- 0, ED_AREA_1X1_LSETTINGS_YOFF,
- GADGET_ID_RANDOM_BACKGROUND, GADGET_ID_RANDOM_RESTRICTED,
- &random_placement_background_element, 1, 1,
- NULL, NULL, NULL, NULL, "random placement background"
+ -1, ED_AREA_1X1_LSETTINGS_YPOS(1),
+ 0, ED_AREA_1X1_LSETTINGS_YOFF,
+ GADGET_ID_RANDOM_BACKGROUND, GADGET_ID_RANDOM_RESTRICTED,
+ &random_placement_background_element, 1, 1,
+ NULL, NULL, NULL, NULL, "Random placement background"
},
};
static int getTabulatorBarWidth(void);
static int getTabulatorBarHeight(void);
static Pixel getTabulatorBarColor(void);
+static void getEditorGraphicAndFrame(int, int *, int *, boolean);
static int numHiresTiles(int);
static int num_editor_gadgets = 0; // dynamically determined
static int edit_mode;
static int edit_mode_levelconfig;
+static int edit_mode_engineconfig;
static int edit_mode_properties;
static int element_shift = 0;
EL_BD_ROCK,
EL_BD_DIAMOND,
+ EL_BD_INBOX,
EL_BD_STEELWALL,
EL_BD_WALL,
- EL_EMPTY,
EL_BD_MAGIC_WALL,
EL_BD_AMOEBA,
EL_BD_BUTTERFLY_RIGHT,
EL_BD_FIREFLY_RIGHT,
- EL_BD_INBOX,
+ EL_BD_SAND_2,
EL_BD_BUTTERFLY_DOWN,
EL_BD_FIREFLY_DOWN,
EL_BD_EXIT_OPEN,
EL_BD_AMOEBA_2,
EL_BD_BUTTERFLY_2_UP,
EL_BD_FIREFLY_2_UP,
- EL_EMPTY,
+ EL_BD_SLIME,
EL_BD_BUTTERFLY_2_LEFT,
EL_BD_FIREFLY_2_LEFT,
EL_BD_BUTTERFLY_2_RIGHT,
EL_BD_FIREFLY_2_RIGHT,
- EL_EMPTY,
+ EL_BD_BOMB,
EL_BD_BUTTERFLY_2_DOWN,
EL_BD_FIREFLY_2_DOWN,
- EL_EMPTY,
+ EL_BD_FLYING_DIAMOND,
- EL_EMPTY,
+ EL_BD_NITRO_PACK,
EL_BD_DRAGONFLY_UP,
EL_BD_STONEFLY_UP,
- EL_EMPTY,
+ EL_BD_DIAMOND_GLUED,
EL_BD_DRAGONFLY_LEFT,
EL_BD_STONEFLY_LEFT,
EL_BD_DRAGONFLY_RIGHT,
EL_BD_STONEFLY_RIGHT,
- EL_EMPTY,
+ EL_BD_NUT,
EL_BD_DRAGONFLY_DOWN,
EL_BD_STONEFLY_DOWN,
EL_EMPTY,
- EL_EMPTY,
+ EL_BD_BITER_SWITCH_1,
EL_BD_BITER_UP,
EL_BD_COW_UP,
EL_EMPTY,
EL_BD_BITER_RIGHT,
EL_BD_COW_RIGHT,
- EL_EMPTY,
+ EL_BD_VOODOO_DOLL,
EL_BD_BITER_DOWN,
EL_BD_COW_DOWN,
- EL_EMPTY,
+ EL_BD_GHOST,
- EL_EMPTY,
- EL_BD_SAND,
+ EL_BD_SAND_GLUED,
EL_BD_SAND_BALL,
EL_BD_SAND_LOOSE,
+ EL_BD_WALL_NON_SLOPED,
EL_BD_SAND_SLOPED_UP_LEFT,
EL_BD_SAND_SLOPED_UP_RIGHT,
EL_BD_WALL_SLOPED_DOWN_LEFT,
EL_BD_WALL_SLOPED_DOWN_RIGHT,
- EL_BD_FLYING_DIAMOND,
EL_BD_FLYING_ROCK,
+ EL_BD_ROCK_GLUED,
EL_BD_STEELWALL_SLOPED_UP_LEFT,
EL_BD_STEELWALL_SLOPED_UP_RIGHT,
- EL_BD_NUT,
- EL_BD_MEGA_ROCK,
+ EL_BD_WAITING_ROCK,
+ EL_BD_CHASING_ROCK,
EL_BD_STEELWALL_SLOPED_DOWN_LEFT,
EL_BD_STEELWALL_SLOPED_DOWN_RIGHT,
- EL_BD_SAND_2,
- EL_BD_WALL_NON_SLOPED,
- EL_BD_WALL,
- EL_BD_MAGIC_WALL,
-
- EL_BD_EXIT_CLOSED,
- EL_BD_EXIT_OPEN,
+ EL_BD_MEGA_ROCK,
+ EL_BD_SWEET,
EL_BD_INVISIBLE_EXIT_CLOSED,
EL_BD_INVISIBLE_EXIT_OPEN,
- EL_BD_STEELWALL,
EL_BD_STEELWALL_EXPLODABLE,
EL_BD_STEELWALL_DIGGABLE,
EL_BD_WALL_DIGGABLE,
+ EL_BD_FALLING_WALL,
EL_BD_EXPANDABLE_WALL_HORIZONTAL,
EL_BD_EXPANDABLE_WALL_VERTICAL,
EL_BD_EXPANDABLE_WALL_ANY,
- EL_BD_CREATURE_SWITCH,
+ EL_BD_EXPANDABLE_WALL_SWITCH,
EL_BD_EXPANDABLE_STEELWALL_HORIZONTAL,
EL_BD_EXPANDABLE_STEELWALL_VERTICAL,
EL_BD_EXPANDABLE_STEELWALL_ANY,
- EL_BD_EXPANDABLE_WALL_SWITCH_HORIZONTAL,
+ EL_BD_CREATURE_SWITCH,
- EL_BD_BITER_SWITCH_1,
+ EL_BD_BLADDER,
+ EL_BD_BLADDER_SPENDER,
+ EL_BD_REPLICATOR,
EL_BD_REPLICATOR_SWITCH,
+
+ EL_BD_CONVEYOR_LEFT,
+ EL_BD_CONVEYOR_RIGHT,
EL_BD_CONVEYOR_SWITCH,
- EL_BD_CONVEYOR_DIR_SWITCH_RIGHT,
+ EL_BD_CONVEYOR_DIR_SWITCH,
- EL_BD_ACID,
- EL_BD_FALLING_WALL,
- EL_BD_BOX,
+ EL_BD_CLOCK,
EL_BD_TIME_PENALTY,
-
EL_BD_GRAVESTONE,
- EL_BD_ROCK_GLUED,
- EL_BD_DIAMOND_GLUED,
- EL_BD_DIAMOND_KEY,
+ EL_BD_SKELETON,
- EL_BD_TRAPPED_DIAMOND,
- EL_BD_CLOCK,
- EL_BD_SAND_GLUED,
EL_BD_WATER,
+ EL_BD_ACID,
+ EL_BD_LAVA,
+ EL_BD_BOX,
+
+ EL_BD_GATE_1,
+ EL_BD_GATE_2,
+ EL_BD_GATE_3,
+ EL_BD_TRAPPED_DIAMOND,
EL_BD_KEY_1,
EL_BD_KEY_2,
EL_BD_KEY_3,
- EL_EMPTY,
+ EL_BD_DIAMOND_KEY,
EL_BD_WALL_KEY_1,
EL_BD_WALL_KEY_2,
EL_BD_WALL_KEY_3,
EL_BD_WALL_DIAMOND,
- EL_BD_GATE_1,
- EL_BD_GATE_2,
- EL_BD_GATE_3,
EL_BD_POT,
-
EL_BD_GRAVITY_SWITCH,
EL_BD_PNEUMATIC_HAMMER,
EL_BD_TELEPORTER,
- EL_BD_SKELETON,
-
- EL_BD_AMOEBA,
- EL_BD_AMOEBA_2,
- EL_BD_REPLICATOR,
- EL_BD_BLADDER_SPENDER,
-
- EL_BD_CONVEYOR_LEFT,
- EL_BD_CONVEYOR_RIGHT,
- EL_BD_BOMB,
- EL_BD_NITRO_PACK,
-
- EL_BD_LAVA,
- EL_BD_SWEET,
- EL_BD_VOODOO_DOLL,
- EL_BD_SLIME,
-
- EL_BD_BLADDER,
- EL_BD_WAITING_ROCK,
- EL_BD_CHASING_ROCK,
- EL_BD_GHOST,
EL_BD_PLAYER,
EL_BD_PLAYER_WITH_BOMB,
+ EL_BD_PLAYER_WITH_ROCKET_LAUNCHER,
+ EL_BD_ROCKET_LAUNCHER,
+
EL_BD_PLAYER_GLUED,
EL_BD_PLAYER_STIRRING,
+ EL_EMPTY,
+ EL_EMPTY,
};
static int *editor_hl_boulderdash_native_ptr = editor_hl_boulderdash_native;
static int *editor_el_boulderdash_native_ptr = editor_el_boulderdash_native;
static int num_editor_hl_boulderdash_native = ARRAY_SIZE(editor_hl_boulderdash_native);
static int num_editor_el_boulderdash_native = ARRAY_SIZE(editor_el_boulderdash_native);
+static int editor_hl_boulderdash_effects[] =
+{
+ EL_INTERNAL_CASCADE_BD_EFFECTS_ACTIVE,
+ EL_CHAR('B'),
+ EL_CHAR('D'),
+ EL_CHAR('E'),
+};
+
+static int editor_el_boulderdash_effects[] =
+{
+ EL_BD_DIAMOND_FALLING,
+ EL_BD_ROCK_FALLING,
+ EL_BD_MEGA_ROCK_FALLING,
+ EL_BD_FLYING_DIAMOND_FLYING,
+
+ EL_BD_FALLING_WALL_FALLING,
+ EL_BD_NITRO_PACK_FALLING,
+ EL_BD_NUT_FALLING,
+ EL_BD_FLYING_ROCK_FLYING,
+
+ EL_BD_PLAYER_GROWING_1,
+ EL_BD_PLAYER_GROWING_2,
+ EL_BD_PLAYER_GROWING_3,
+ EL_BD_PLAYER,
+
+ EL_BD_PLAYER_WITH_BOMB,
+ EL_BD_PLAYER_STIRRING,
+ EL_BD_EXIT_OPEN,
+ EL_BD_INVISIBLE_EXIT_OPEN,
+
+ EL_BD_BLADDER_1,
+ EL_BD_BLADDER_2,
+ EL_BD_BLADDER_3,
+ EL_BD_BLADDER_4,
+
+ EL_BD_BLADDER_5,
+ EL_BD_BLADDER_6,
+ EL_BD_BLADDER_7,
+ EL_BD_BLADDER_8,
+
+ EL_BD_SAND_2,
+ EL_BD_COW_ENCLOSED_1,
+ EL_BD_COW_ENCLOSED_2,
+ EL_BD_COW_ENCLOSED_3,
+
+ EL_BD_COW_ENCLOSED_4,
+ EL_BD_COW_ENCLOSED_5,
+ EL_BD_COW_ENCLOSED_6,
+ EL_BD_COW_ENCLOSED_7,
+
+ EL_BD_WATER_1,
+ EL_BD_WATER_2,
+ EL_BD_WATER_3,
+ EL_BD_WATER_4,
+
+ EL_BD_WATER_5,
+ EL_BD_WATER_6,
+ EL_BD_WATER_7,
+ EL_BD_WATER_8,
+
+ EL_BD_WATER_9,
+ EL_BD_WATER_10,
+ EL_BD_WATER_11,
+ EL_BD_WATER_12,
+
+ EL_BD_WATER_13,
+ EL_BD_WATER_14,
+ EL_BD_WATER_15,
+ EL_BD_WATER_16,
+
+ EL_BD_BOMB_TICKING_1,
+ EL_BD_BOMB_TICKING_2,
+ EL_BD_BOMB_TICKING_3,
+ EL_BD_BOMB_TICKING_4,
+
+ EL_BD_BOMB_TICKING_5,
+ EL_BD_BOMB_TICKING_6,
+ EL_BD_BOMB_TICKING_7,
+ EL_EMPTY,
+
+ EL_BD_BOMB_EXPLODING_1,
+ EL_BD_BOMB_EXPLODING_2,
+ EL_BD_BOMB_EXPLODING_3,
+ EL_BD_BOMB_EXPLODING_4,
+
+ EL_BD_NUT_BREAKING_1,
+ EL_BD_NUT_BREAKING_2,
+ EL_BD_NUT_BREAKING_3,
+ EL_BD_NUT_BREAKING_4,
+
+ EL_BD_EXPLODING_1,
+ EL_BD_EXPLODING_2,
+ EL_BD_EXPLODING_3,
+ EL_BD_EXPLODING_4,
+
+ EL_BD_EXPLODING_5,
+ EL_BD_TIME_PENALTY,
+ EL_BD_DIAMOND_GROWING_1,
+ EL_BD_DIAMOND_GROWING_2,
+
+ EL_BD_DIAMOND_GROWING_3,
+ EL_BD_DIAMOND_GROWING_4,
+ EL_BD_DIAMOND_GROWING_5,
+ EL_BD_NITRO_PACK_EXPLODING,
+
+ EL_BD_NITRO_PACK_EXPLODING_1,
+ EL_BD_NITRO_PACK_EXPLODING_2,
+ EL_BD_NITRO_PACK_EXPLODING_3,
+ EL_BD_NITRO_PACK_EXPLODING_4,
+
+ EL_BD_ROCK_GROWING_1,
+ EL_BD_ROCK_GROWING_2,
+ EL_BD_ROCK_GROWING_3,
+ EL_BD_ROCK_GROWING_4,
+
+ EL_BD_STEELWALL_GROWING_1,
+ EL_BD_STEELWALL_GROWING_2,
+ EL_BD_STEELWALL_GROWING_3,
+ EL_BD_STEELWALL_GROWING_4,
+
+ EL_BD_CLOCK_GROWING_1,
+ EL_BD_CLOCK_GROWING_2,
+ EL_BD_CLOCK_GROWING_3,
+ EL_BD_CLOCK_GROWING_4,
+
+ EL_BD_GHOST_EXPLODING_1,
+ EL_BD_GHOST_EXPLODING_2,
+ EL_BD_GHOST_EXPLODING_3,
+ EL_BD_GHOST_EXPLODING_4,
+};
+static int *editor_hl_boulderdash_effects_ptr = editor_hl_boulderdash_effects;
+static int *editor_el_boulderdash_effects_ptr = editor_el_boulderdash_effects;
+static int num_editor_hl_boulderdash_effects = ARRAY_SIZE(editor_hl_boulderdash_effects);
+static int num_editor_el_boulderdash_effects = ARRAY_SIZE(editor_el_boulderdash_effects);
+
static int editor_hl_emerald_mine[] =
{
EL_INTERNAL_CASCADE_EM_ACTIVE,
static boolean setup_editor_el_players = TRUE;
static boolean setup_editor_el_boulderdash = TRUE;
static boolean setup_editor_el_boulderdash_native = TRUE;
+static boolean setup_editor_el_boulderdash_effects = TRUE;
static boolean setup_editor_el_emerald_mine = TRUE;
static boolean setup_editor_el_emerald_mine_club = TRUE;
static boolean setup_editor_el_more = TRUE;
&editor_hl_boulderdash_native_ptr, &num_editor_hl_boulderdash_native,
&editor_el_boulderdash_native_ptr, &num_editor_el_boulderdash_native
},
+ {
+ &setup_editor_el_boulderdash_effects,
+ &setup.editor_cascade.el_bd_effects,
+ &editor_hl_boulderdash_effects_ptr, &num_editor_hl_boulderdash_effects,
+ &editor_el_boulderdash_effects_ptr, &num_editor_el_boulderdash_effects
+ },
{
&setup_editor_el_emerald_mine,
&setup.editor_cascade.el_em,
if (text == NULL)
return 0;
- return (getTextWidth(text, FONT_TEXT_1) + ED_DRAWINGAREA_TEXT_DISTANCE);
+ return (getTextWidth(text, FONT_TEXT_1) + ED_DRAWINGAREA_BORDER_SIZE);
}
static int getRightGadgetBorder(struct GadgetInfo *gi, char *text)
setup_editor_el_players = TRUE;
setup_editor_el_boulderdash = TRUE;
setup_editor_el_boulderdash_native = TRUE;
+ setup_editor_el_boulderdash_effects = TRUE;
setup_editor_el_emerald_mine = TRUE;
setup_editor_el_emerald_mine_club = TRUE;
setup_editor_el_more = TRUE;
setup_editor_el_players = FALSE;
setup_editor_el_boulderdash = FALSE;
setup_editor_el_boulderdash_native = FALSE;
+ setup_editor_el_boulderdash_effects = FALSE;
setup_editor_el_emerald_mine = FALSE;
setup_editor_el_emerald_mine_club = FALSE;
setup_editor_el_more = FALSE;
if (level.game_engine_type == GAME_ENGINE_TYPE_RND)
{
setup_editor_el_boulderdash_native = FALSE;
+ setup_editor_el_boulderdash_effects = FALSE;
setup_editor_el_mirror_magic = FALSE;
setup_editor_el_deflektor = FALSE;
}
{
setup_editor_el_boulderdash = FALSE;
setup_editor_el_boulderdash_native = FALSE;
+ setup_editor_el_boulderdash_effects = FALSE;
setup_editor_el_more = FALSE;
setup_editor_el_sokoban = FALSE;
setup_editor_el_supaplex = FALSE;
setup_editor_el_players = FALSE;
setup_editor_el_boulderdash = FALSE;
setup_editor_el_boulderdash_native = FALSE;
+ setup_editor_el_boulderdash_effects = FALSE;
setup_editor_el_emerald_mine = FALSE;
setup_editor_el_emerald_mine_club = FALSE;
setup_editor_el_more = FALSE;
setup_editor_el_players = FALSE;
setup_editor_el_boulderdash = FALSE;
setup_editor_el_boulderdash_native = FALSE;
+ setup_editor_el_boulderdash_effects = FALSE;
setup_editor_el_emerald_mine = FALSE;
setup_editor_el_emerald_mine_club = FALSE;
setup_editor_el_more = FALSE;
int tilesize = ED_DRAWINGAREA_TILE_SIZE;
for (x = 0; x < area_xsize; x++)
+ {
for (y = 0; y < area_ysize; y++)
+ {
+ int element = value[x * area_ysize + y];
+ int graphic;
+ int frame;
+
+ getEditorGraphicAndFrame(element, &graphic, &frame, TRUE);
+
DrawSizedGraphicExt(drawto,
gi->x + x * tilesize,
gi->y + y * tilesize,
- el2edimg(value[x * area_ysize + y]), 0, tilesize);
+ graphic, frame, tilesize);
+ }
+ }
}
static void ScrollEditorLevel(int from_x, int from_y, int scroll)
DrawEditorElementOrWall(x, y, from_x, from_y);
}
- redraw_mask |= REDRAW_FIELD;
- BackToFront();
+ redraw_mask |= REDRAW_FIELD;
+ BackToFront();
+}
+
+static void getEditorGraphicAndFrame(int element, int *graphic, int *frame, boolean use_editor_gfx)
+{
+ if (use_editor_gfx)
+ {
+ *graphic = el2edimg(element);
+ *frame = 0;
+ }
+ else
+ {
+ *graphic = el2img(element);
+ *frame = (ANIM_MODE(*graphic) == ANIM_CE_VALUE ?
+ custom_element.ce_value_fixed_initial :
+ ANIM_MODE(*graphic) == ANIM_CE_SCORE ?
+ custom_element.collect_score_initial : FrameCounter);
+ }
+
+ if (*graphic == IMG_UNKNOWN)
+ {
+ // no graphic defined -- if BD style, try to get runtime ("effect") element graphics
+ // (normal BD style elements have graphics, but runtime ("effects") elements do not)
+ int element_bd = map_element_RND_to_BD_cave(element);
+
+ if (element_bd != O_UNKNOWN)
+ {
+ struct GraphicInfo_BD *g_bd = &graphic_info_bd_object[element_bd][0];
+
+ *graphic = g_bd->graphic;
+ *frame = g_bd->frame;
+ }
+ }
}
static void getEditorGraphicSource(int element, int tile_size, Bitmap **bitmap,
int *x, int *y)
{
- getSizedGraphicSource(el2edimg(element), 0, tile_size, bitmap, x, y);
+ int graphic;
+ int frame;
+
+ getEditorGraphicAndFrame(element, &graphic, &frame, TRUE);
+
+ getSizedGraphicSource(graphic, frame, tile_size, bitmap, x, y);
}
static void CreateControlButtons(void)
gd_y2 = gd->src_y + gd->pressed_yoffset;
sprintf(infotext, "%s counter value by 1, 5 or 10",
- (j == 0 ? "decrease" : "increase"));
+ (j == 0 ? "Decrease" : "Increase"));
gi = CreateGadget(GDI_CUSTOM_ID, id,
GDI_CUSTOM_TYPE_ID, type_id,
gi = CreateGadget(GDI_CUSTOM_ID, id,
GDI_CUSTOM_TYPE_ID, type_id,
GDI_IMAGE_ID, graphic,
- GDI_INFO_TEXT, "enter counter value",
+ GDI_INFO_TEXT, "Enter counter value",
GDI_X, x,
GDI_Y, y,
GDI_TYPE, GD_TYPE_TEXT_INPUT_NUMERIC,
y = ED_SETTINGS_Y(textinput_info[i].y);
}
- sprintf(infotext, "Enter %s", textinput_info[i].infotext);
+ // determine horizontal offset for leading text
+ if (textinput_info[i].text_left != NULL)
+ x += getTextWidthForGadget(textinput_info[i].text_left);
+
+ sprintf(infotext, "%s", textinput_info[i].infotext);
infotext[max_infotext_len] = '\0';
gi = CreateGadget(GDI_CUSTOM_ID, id,
static void CreateSelectboxGadgets(void)
{
int max_infotext_len = getMaxInfoTextLength();
+
int i, j;
for (i = 0; i < ED_NUM_SELECTBOX; i++)
if (selectbox_info[i].text_left != NULL)
x += getTextWidthForGadget(selectbox_info[i].text_left);
- sprintf(infotext, "Select %s", selectbox_info[i].infotext);
+ sprintf(infotext, "%s", selectbox_info[i].infotext);
infotext[max_infotext_len] = '\0';
gi = CreateGadget(GDI_CUSTOM_ID, id,
int type_id = textbutton_info[i].gadget_type_id;
int is_tab_button =
((id >= GADGET_ID_LEVELCONFIG_LEVEL && id <= GADGET_ID_LEVELCONFIG_ENGINE) ||
+ (id >= GADGET_ID_ENGINECONFIG_CONFIG && id <= GADGET_ID_ENGINECONFIG_COLORS) ||
(id >= GADGET_ID_PROPERTIES_INFO && id <= GADGET_ID_PROPERTIES_CHANGE));
int graphic =
(is_tab_button ? IMG_EDITOR_TABBUTTON : IMG_EDITOR_TEXTBUTTON);
ModifyEditorCounterValue(id, *counterbutton_info[id].value);
// set position for counter gadgets with dynamically determined position
- ModifyGadget(gi_down, GDI_Y, SY + ED_SETTINGS_Y(counterbutton_info[id].y), GDI_END);
- ModifyGadget(gi_text, GDI_Y, SY + ED_SETTINGS_Y(counterbutton_info[id].y), GDI_END);
- ModifyGadget(gi_up, GDI_Y, SY + ED_SETTINGS_Y(counterbutton_info[id].y), GDI_END);
+ if (id != ED_COUNTER_ID_SELECT_LEVEL)
+ {
+ ModifyGadget(gi_down, GDI_Y, SY + ED_SETTINGS_Y(counterbutton_info[id].y), GDI_END);
+ ModifyGadget(gi_text, GDI_Y, SY + ED_SETTINGS_Y(counterbutton_info[id].y), GDI_END);
+ ModifyGadget(gi_up, GDI_Y, SY + ED_SETTINGS_Y(counterbutton_info[id].y), GDI_END);
+ }
// vertical position might have changed after setting position above
y = gi_up->y + yoffset;
int area_ysize = gi->drawing.area_ysize;
int xoffset_left = getTextWidthForDrawingArea(drawingarea_info[id].text_left);
int xoffset_below = getTextWidth(drawingarea_info[id].text_below, font_nr);
- int x_left = gi->x - xoffset_left;
+ int x_left = gi->x - xoffset_left - ED_DRAWINGAREA_BORDER_SIZE;
int x_right = gi->x + gi->width + ED_DRAWINGAREA_TEXT_DISTANCE;
int x_above = gi->x - ED_DRAWINGAREA_BORDER_SIZE;
int x_below = gi->x + (gi->width - xoffset_below) / 2;
int font_nr = FONT_TEXT_1;
int font_height = getFontHeight(font_nr);
struct GadgetInfo *gi = level_editor_gadget[textinput_info[id].gadget_id];
+ int xoffset_left = getTextWidthForGadget(textinput_info[id].text_left);
+ int xoffset_right = ED_GADGET_TEXT_DISTANCE;
int yoffset_above = font_height + ED_GADGET_LINE_DISTANCE;
- int x_above = ED_SETTINGS_X(textinput_info[id].x);
- int y_above = ED_SETTINGS_Y(textinput_info[id].y) - yoffset_above;
+ int yoffset = (gi->height - font_height) / 2;
+ int x_left = gi->x - xoffset_left;
+ int x_right = gi->x + gi->width + xoffset_right;
+ int y_above = gi->y - yoffset_above;
+ int y = gi->y + yoffset;
if (textinput_info[id].text_above)
- DrawTextS(x_above, y_above, font_nr, textinput_info[id].text_above);
+ DrawText(x_left, y_above, textinput_info[id].text_above, font_nr);
+
+ if (textinput_info[id].text_left)
+ DrawText(x_left, y, textinput_info[id].text_left, font_nr);
+
+ if (textinput_info[id].text_right)
+ DrawText(x_right, y, textinput_info[id].text_right, font_nr);
ModifyGadget(gi, GDI_TEXT_VALUE, textinput_info[id].value, GDI_END);
int x_left = gi->x - xoffset_left;
int x_right = gi->x + gi->width + xoffset_right;
int y_above = gi->y - yoffset_above;
- int x = gi->x;
int y = gi->y + yoffset;
if (selectbox_info[id].text_above)
- DrawText(x, y_above, selectbox_info[id].text_above, font_nr);
+ DrawText(x_left, y_above, selectbox_info[id].text_above, font_nr);
if (selectbox_info[id].text_left)
DrawText(x_left, y, selectbox_info[id].text_left, font_nr);
if (level.game_engine_type == game_engine_type_last)
return;
- if (level.game_engine_type == GAME_ENGINE_TYPE_BD)
- {
- new_element1 = EL_BD_WALL;
- new_element2 = EL_EMPTY;
- new_element3 = EL_BD_SAND;
- }
- else if (level.game_engine_type == GAME_ENGINE_TYPE_SP)
- {
- new_element1 = EL_SP_CHIP_SINGLE;
- new_element2 = EL_EMPTY;
- new_element3 = EL_SP_BASE;
- }
- else if (level.game_engine_type == GAME_ENGINE_TYPE_MM)
- {
- new_element1 = EL_MM_MIRROR_START;
- new_element2 = EL_EMPTY;
- new_element3 = EL_MM_WOODEN_WALL;
- }
- else
- {
- new_element1 = EL_WALL;
- new_element2 = EL_EMPTY;
- new_element3 = EL_SAND;
- }
+ // select drawing elements according to game engine type
+ new_element1 = getDrawingElement(EL_WALL);
+ new_element2 = getDrawingElement(EL_EMPTY);
+ new_element3 = getDrawingElement(EL_SAND);
game_engine_type_last = level.game_engine_type;
}
{
edit_mode = ED_MODE_DRAWING;
edit_mode_levelconfig = ED_MODE_LEVELCONFIG_LEVEL;
+ edit_mode_engineconfig = ED_MODE_ENGINECONFIG_CONFIG;
edit_mode_properties = ED_MODE_PROPERTIES_INFO;
ResetUndoBuffer();
return GetPixel(gd->bitmap, gd_x, gd_y);
}
+static void DrawEngineConfigTabulatorGadgets(void)
+{
+ struct GadgetInfo *gd_gi1 = level_editor_gadget[GADGET_ID_ENGINECONFIG_CONFIG];
+ Pixel tab_color = getTabulatorBarColor();
+ int id_first = ED_TEXTBUTTON_ID_ENGINECONFIG_CONFIG;
+ int id_last = ED_TEXTBUTTON_ID_ENGINECONFIG_COLORS;
+ int i;
+
+ for (i = id_first; i <= id_last; i++)
+ {
+ int gadget_id = textbutton_info[i].gadget_id;
+ struct GadgetInfo *gi = level_editor_gadget[gadget_id];
+ boolean active = (i != edit_mode_engineconfig);
+
+ // draw background line below tabulator button
+ ClearRectangleOnBackground(drawto, gi->x, gi->y + gi->height, gi->width, 1);
+
+ // draw solid line below inactive tabulator buttons
+ if (!active && tab_color != BLACK_PIXEL) // black => transparent
+ FillRectangle(drawto, gi->x, gi->y + gi->height, gi->width,
+ ED_GADGET_TINY_DISTANCE, tab_color);
+
+ ModifyGadget(gi, GDI_ACTIVE, active, GDI_END);
+ MapTextbuttonGadget(i);
+ }
+
+ // draw little border line below tabulator buttons
+ if (tab_color != BLACK_PIXEL) // black => transparent
+ FillRectangle(drawto, gd_gi1->x, gd_gi1->y + gd_gi1->height +
+ ED_GADGET_TINY_DISTANCE,
+ getTabulatorBarWidth(), getTabulatorBarHeight(), tab_color);
+}
+
static void DrawLevelConfigTabulatorGadgets(void)
{
struct GadgetInfo *gd_gi1 = level_editor_gadget[GADGET_ID_LEVELCONFIG_LEVEL];
FillRectangle(drawto, gd_gi1->x, gd_gi1->y + gd_gi1->height +
ED_GADGET_TINY_DISTANCE,
getTabulatorBarWidth(), getTabulatorBarHeight(), tab_color);
+
+ // draw second row of engine related tabulators when using native BD engine
+ if (edit_mode_levelconfig == ED_MODE_LEVELCONFIG_ENGINE)
+ DrawEngineConfigTabulatorGadgets();
}
static void DrawPropertiesTabulatorGadgets(void)
MapTextbuttonGadget(ED_TEXTBUTTON_ID_SAVE_AS_TEMPLATE_2);
}
-static void DrawLevelConfigEngine(void)
+static void DrawEngineConfigConfig(void)
{
int i;
MapSelectboxGadget(i);
}
+static int GetCommonColorType_BD(void)
+{
+ int bd_color_type = *bd_color[0] >> 24;
+ int i;
+
+ // check if all colors have the same color type
+ for (i = 1; i < MAX_BD_COLORS; i++)
+ if ((*bd_color[i] >> 24) != bd_color_type)
+ return GD_COLOR_TYPE_RGB;
+
+ return bd_color_type;
+}
+
+void SetDefaultLevelColorType_BD(void)
+{
+ bd_color_type_default = GetCommonColorType_BD();
+
+ level.bd_color_type = bd_color_type_default;
+}
+
+void SetDefaultLevelColors_BD(void)
+{
+ int i;
+
+ for (i = 0; i < MAX_BD_COLORS; i++)
+ bd_color_default[i] = *bd_color[i];
+}
+
+void SetRandomLevelColors_BD(int bd_color_type)
+{
+ struct LevelInfo_BD *level_bd = level.native_bd_level;
+ GdCave *cave = level_bd->cave;
+
+ // create random cave colors
+ gd_cave_set_random_colors(cave, bd_color_type);
+
+ // copy colors to level editor
+ level.bd_color_b = cave->colorb;
+ level.bd_color_0 = cave->color0;
+ level.bd_color_1 = cave->color1;
+ level.bd_color_2 = cave->color2;
+ level.bd_color_3 = cave->color3;
+ level.bd_color_4 = cave->color4;
+ level.bd_color_5 = cave->color5;
+}
+
+static void DrawColorBox_BD(int nr)
+{
+ int id = ED_SELECTBOX_ID_COLORS_FIRST + nr;
+ struct GadgetInfo *gi = level_editor_gadget[selectbox_info[id].gadget_id];
+ int graphic = IMG_EDITOR_CHECKBOX;
+ struct GraphicInfo *gd = &graphic_info[graphic];
+ int offset = ED_GADGET_TEXT_DISTANCE;
+ int x1 = gi->x - offset - gd->width;
+ int y1 = gi->y;
+ int x2 = x1 + offset;
+ int y2 = y1 + offset;
+ int xsize1 = gd->width;
+ int ysize1 = gd->height;
+ int xsize2 = xsize1 - 2 * offset;
+ int ysize2 = ysize1 - 2 * offset;
+ int bd_color_x = *bd_color[nr];
+ int r = gd_color_get_r(bd_color_x);
+ int g = gd_color_get_g(bd_color_x);
+ int b = gd_color_get_b(bd_color_x);
+ Pixel color = SDL_MapRGB(drawto->surface->format, r, g, b);
+
+ BlitBitmap(gd->bitmap, drawto, gd->src_x, gd->src_y, xsize1, ysize1, x1, y1);
+ FillRectangle(drawto, x2, y2, xsize2, ysize2, color);
+}
+
+static void DrawEngineConfigColors(void)
+{
+ int i;
+
+ if (bd_color_type_changed)
+ {
+ if (level.bd_color_type != GD_COLOR_TYPE_RGB && level.bd_color_type != GetCommonColorType_BD())
+ {
+ // color type switched to non-RGB colors, but using different color type => reset colors
+
+ if (level.bd_color_type == bd_color_type_default)
+ {
+ // color type switched to same color type as default colors => reset to defaults
+ for (i = 0; i < MAX_BD_COLORS; i++)
+ *bd_color[i] = bd_color_default[i];
+ }
+ else
+ {
+ // color type switched to different color type as default colors => use random colors
+ SetRandomLevelColors_BD(level.bd_color_type);
+ }
+ }
+
+ bd_color_type_changed = FALSE;
+ }
+
+ // copy level colors to either C64-style color index or color text
+ for (i = 0; i < MAX_BD_COLORS; i++)
+ {
+ int bd_color_x = (level.bd_color_type == GD_COLOR_TYPE_C64 ? *bd_color[i] & 0x0f :
+ level.bd_color_type == GD_COLOR_TYPE_RGB ? gd_color_get_rgb(*bd_color[i]) :
+ *bd_color[i]);
+
+ if (level.bd_color_type == GD_COLOR_TYPE_C64)
+ bd_color_c64[i] = bd_color_x;
+ else
+ snprintf(bd_color_text[i], sizeof(bd_color_text[i]), "%s", gd_color_get_string(bd_color_x));
+ }
+
+ MapSelectboxGadget(ED_SELECTBOX_ID_BD_COLOR_TYPE);
+
+ if (level.bd_color_type == GD_COLOR_TYPE_C64)
+ {
+ // draw selectbox gadgets
+ for (i = ED_SELECTBOX_ID_COLORS_FIRST; i <= ED_SELECTBOX_ID_COLORS_LAST; i++)
+ MapSelectboxGadget(i);
+ }
+ else
+ {
+ // draw text input gadgets
+ for (i = ED_TEXTINPUT_ID_COLORS_FIRST; i <= ED_TEXTINPUT_ID_COLORS_LAST; i++)
+ MapTextInputGadget(i);
+ }
+
+ for (i = 0; i < MAX_BD_COLORS; i++)
+ DrawColorBox_BD(i);
+
+ MapTextbuttonGadget(ED_TEXTBUTTON_ID_BD_SET_RANDOM_COLORS);
+}
+
+static void DrawLevelConfigEngine(void)
+{
+ if (edit_mode_engineconfig == ED_MODE_ENGINECONFIG_CONFIG)
+ DrawEngineConfigConfig();
+ else if (edit_mode_engineconfig == ED_MODE_ENGINECONFIG_COLORS)
+ DrawEngineConfigColors();
+}
+
static void DrawLevelConfigWindow(void)
{
char *text = "Global Settings";
stick_element_properties_window = FALSE;
+ // make sure that previous level config edit mode exists for this level
+ if (edit_mode_levelconfig == ED_MODE_LEVELCONFIG_ENGINE &&
+ level.game_engine_type != GAME_ENGINE_TYPE_BD)
+ edit_mode_levelconfig = ED_MODE_LEVELCONFIG_LEVEL;
+
SetAutomaticNumberOfGemsNeeded();
UnmapLevelEditorFieldGadgets();
PrintInfoText(no_description_text, font1_nr, xpos, ypos - line1_height);
}
-#define TEXT_COLLECTING "Score for collecting"
-#define TEXT_COLLECTING_EXTRA "Score for extra diamonds"
-#define TEXT_SMASHING "Score for smashing"
-#define TEXT_SLURPING "Score for slurping robot"
-#define TEXT_CRACKING "Score for cracking"
-#define TEXT_AMOEBA_SPEED "Speed of amoeba growth"
-#define TEXT_DURATION "Duration when activated"
-#define TEXT_DELAY_ON "Delay before activating"
-#define TEXT_DELAY_OFF "Delay before deactivating"
-#define TEXT_DELAY_CHANGING "Delay before changing"
-#define TEXT_DELAY_EXPLODING "Delay before exploding"
-#define TEXT_DELAY_MOVING "Delay before moving"
-#define TEXT_BALL_DELAY "Element generation delay"
-#define TEXT_MOVE_SPEED "Speed of android moving"
-#define TEXT_CLONE_SPEED "Speed of android cloning"
-#define TEXT_GAME_OF_LIFE_1 "Min neighbours to survive"
-#define TEXT_GAME_OF_LIFE_2 "Max neighbours to survive"
-#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_COLLECTING "Score for collecting"
+#define TEXT_COLLECTING_EXTRA "Score for extra diamonds"
+#define TEXT_SMASHING "Score for smashing"
+#define TEXT_SLURPING "Score for slurping robot"
+#define TEXT_CRACKING "Score for cracking"
+#define TEXT_AMOEBA_SPEED "Speed of amoeba growth"
+#define TEXT_AMOEBA_THRESHOED "Size for turning to rocks"
+#define TEXT_AMOEBA_SLOW_TIME "Slow growth time (seconds)"
+#define TEXT_AMOEBA_SLOW_RATE "Slow growth rate (percent)"
+#define TEXT_AMOEBA_FAST_RATE "Fast growth rate (percent)"
+#define TEXT_DURATION "Duration when activated"
+#define TEXT_DELAY_ON "Delay before activating"
+#define TEXT_DELAY_OFF "Delay before deactivating"
+#define TEXT_DELAY_CHANGING "Delay before changing"
+#define TEXT_DELAY_EXPLODING "Delay before exploding"
+#define TEXT_DELAY_MOVING "Delay before moving"
+#define TEXT_BALL_DELAY "Element generation delay"
+#define TEXT_MOVE_SPEED "Speed of android moving"
+#define TEXT_CLONE_SPEED "Speed of android cloning"
+#define TEXT_GAME_OF_LIFE_1 "Min neighbours to survive"
+#define TEXT_GAME_OF_LIFE_2 "Max neighbours to survive"
+#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"
+#define TEXT_ACID_SPREAD_RATE "Spread rate (percent)"
+#define TEXT_BITER_MOVE_DELAY "Move delay (BD frames)"
+#define TEXT_REPLICATION_DELAY "Create delay (BD frames)"
+#define TEXT_HAMMER_BREAK_DELAY "Delay for breaking walls"
+#define TEXT_HAMMER_REAPPEAR_DELAY "Delay for reappearing walls"
+#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
{
int element;
int *value;
char *text;
+ int min_value;
+ int max_value;
} elements_with_counter[] =
{
- { EL_EMERALD, &level.score[SC_EMERALD], TEXT_COLLECTING },
- { EL_BD_DIAMOND, &level.score[SC_EMERALD], TEXT_COLLECTING },
- { EL_BD_DIAMOND, &level.score[SC_DIAMOND_EXTRA], TEXT_COLLECTING_EXTRA },
- { EL_EMERALD_YELLOW, &level.score[SC_EMERALD], TEXT_COLLECTING },
- { EL_EMERALD_RED, &level.score[SC_EMERALD], TEXT_COLLECTING },
- { EL_EMERALD_PURPLE, &level.score[SC_EMERALD], TEXT_COLLECTING },
- { EL_SP_INFOTRON, &level.score[SC_EMERALD], TEXT_COLLECTING },
- { EL_DIAMOND, &level.score[SC_DIAMOND], TEXT_COLLECTING },
- { EL_CRYSTAL, &level.score[SC_CRYSTAL], TEXT_COLLECTING },
- { EL_PEARL, &level.score[SC_PEARL], TEXT_COLLECTING },
- { EL_BUG, &level.score[SC_BUG], TEXT_SMASHING },
- { EL_BUG_RIGHT, &level.score[SC_BUG], TEXT_SMASHING },
- { EL_BUG_UP, &level.score[SC_BUG], TEXT_SMASHING },
- { EL_BUG_LEFT, &level.score[SC_BUG], TEXT_SMASHING },
- { EL_BUG_DOWN, &level.score[SC_BUG], TEXT_SMASHING },
- { EL_BD_BUTTERFLY, &level.score[SC_BUG], TEXT_SMASHING },
- { EL_BD_BUTTERFLY_RIGHT, &level.score[SC_BUG], TEXT_SMASHING },
- { EL_BD_BUTTERFLY_UP, &level.score[SC_BUG], TEXT_SMASHING },
- { EL_BD_BUTTERFLY_LEFT, &level.score[SC_BUG], TEXT_SMASHING },
- { EL_BD_BUTTERFLY_DOWN, &level.score[SC_BUG], TEXT_SMASHING },
- { EL_SP_ELECTRON, &level.score[SC_BUG], TEXT_SMASHING },
- { EL_SPACESHIP, &level.score[SC_SPACESHIP], TEXT_SMASHING },
- { EL_SPACESHIP_RIGHT, &level.score[SC_SPACESHIP], TEXT_SMASHING },
- { EL_SPACESHIP_UP, &level.score[SC_SPACESHIP], TEXT_SMASHING },
- { EL_SPACESHIP_LEFT, &level.score[SC_SPACESHIP], TEXT_SMASHING },
- { EL_SPACESHIP_DOWN, &level.score[SC_SPACESHIP], TEXT_SMASHING },
- { EL_BD_FIREFLY, &level.score[SC_SPACESHIP], TEXT_SMASHING },
- { EL_BD_FIREFLY_RIGHT, &level.score[SC_SPACESHIP], TEXT_SMASHING },
- { EL_BD_FIREFLY_UP, &level.score[SC_SPACESHIP], TEXT_SMASHING },
- { EL_BD_FIREFLY_LEFT, &level.score[SC_SPACESHIP], TEXT_SMASHING },
- { EL_BD_FIREFLY_DOWN, &level.score[SC_SPACESHIP], TEXT_SMASHING },
- { EL_SP_SNIKSNAK, &level.score[SC_SPACESHIP], TEXT_SMASHING },
- { EL_YAMYAM, &level.score[SC_YAMYAM], TEXT_SMASHING },
- { EL_YAMYAM_LEFT, &level.score[SC_YAMYAM], TEXT_SMASHING },
- { EL_YAMYAM_RIGHT, &level.score[SC_YAMYAM], TEXT_SMASHING },
- { EL_YAMYAM_UP, &level.score[SC_YAMYAM], TEXT_SMASHING },
- { EL_YAMYAM_DOWN, &level.score[SC_YAMYAM], TEXT_SMASHING },
- { EL_DARK_YAMYAM, &level.score[SC_YAMYAM], TEXT_SMASHING },
- { EL_ROBOT, &level.score[SC_ROBOT], TEXT_SMASHING },
- { EL_PACMAN, &level.score[SC_PACMAN], TEXT_SMASHING },
- { EL_PACMAN_RIGHT, &level.score[SC_PACMAN], TEXT_SMASHING },
- { EL_PACMAN_UP, &level.score[SC_PACMAN], TEXT_SMASHING },
- { EL_PACMAN_LEFT, &level.score[SC_PACMAN], TEXT_SMASHING },
- { EL_PACMAN_DOWN, &level.score[SC_PACMAN], TEXT_SMASHING },
- { EL_NUT, &level.score[SC_NUT], TEXT_CRACKING },
- { EL_DYNAMITE, &level.score[SC_DYNAMITE], TEXT_COLLECTING },
- { EL_EM_DYNAMITE, &level.score[SC_DYNAMITE], TEXT_COLLECTING },
- { EL_DYNABOMB_INCREASE_NUMBER,&level.score[SC_DYNAMITE], TEXT_COLLECTING },
- { EL_DYNABOMB_INCREASE_SIZE, &level.score[SC_DYNAMITE], TEXT_COLLECTING },
- { EL_DYNABOMB_INCREASE_POWER, &level.score[SC_DYNAMITE], TEXT_COLLECTING },
- { EL_SHIELD_NORMAL, &level.score[SC_SHIELD], TEXT_COLLECTING },
- { EL_SHIELD_DEADLY, &level.score[SC_SHIELD], TEXT_COLLECTING },
- { EL_EXTRA_TIME, &level.extra_time_score, TEXT_COLLECTING },
- { EL_KEY_1, &level.score[SC_KEY], TEXT_COLLECTING },
- { EL_KEY_2, &level.score[SC_KEY], TEXT_COLLECTING },
- { EL_KEY_3, &level.score[SC_KEY], TEXT_COLLECTING },
- { EL_KEY_4, &level.score[SC_KEY], TEXT_COLLECTING },
- { EL_EM_KEY_1, &level.score[SC_KEY], TEXT_COLLECTING },
- { EL_EM_KEY_2, &level.score[SC_KEY], TEXT_COLLECTING },
- { EL_EM_KEY_3, &level.score[SC_KEY], TEXT_COLLECTING },
- { EL_EM_KEY_4, &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_DC_KEY_WHITE, &level.score[SC_KEY], TEXT_COLLECTING },
- { EL_MM_KETTLE, &level.score[SC_EMERALD], TEXT_COLLECTING },
- { EL_DF_CELL, &level.score[SC_EMERALD], TEXT_COLLECTING },
- { EL_MM_KEY, &level.score[SC_KEY], TEXT_COLLECTING },
- { EL_MM_LIGHTBALL, &level.score[SC_ELEM_BONUS], TEXT_COLLECTING },
- { EL_MM_PACMAN, &level.score[SC_PACMAN], TEXT_SMASHING },
- { EL_MM_PACMAN_RIGHT, &level.score[SC_PACMAN], TEXT_SMASHING },
- { EL_MM_PACMAN_UP, &level.score[SC_PACMAN], TEXT_SMASHING },
- { EL_MM_PACMAN_LEFT, &level.score[SC_PACMAN], TEXT_SMASHING },
- { EL_MM_PACMAN_DOWN, &level.score[SC_PACMAN], TEXT_SMASHING },
- { 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 },
- { EL_BD_AMOEBA, &level.amoeba_speed, TEXT_AMOEBA_SPEED },
- { EL_EMC_DRIPPER, &level.amoeba_speed, TEXT_AMOEBA_SPEED },
- { EL_MAGIC_WALL, &level.time_magic_wall, TEXT_DURATION },
- { EL_BD_MAGIC_WALL, &level.time_magic_wall, TEXT_DURATION },
- { EL_DC_MAGIC_WALL, &level.time_magic_wall, TEXT_DURATION },
- { EL_ROBOT_WHEEL, &level.time_wheel, TEXT_DURATION },
- { EL_TIMEGATE_SWITCH, &level.time_timegate, TEXT_DURATION },
- { EL_DC_TIMEGATE_SWITCH, &level.time_timegate, TEXT_DURATION },
- { EL_LIGHT_SWITCH, &level.time_light, TEXT_DURATION },
- { EL_LIGHT_SWITCH_ACTIVE, &level.time_light, TEXT_DURATION },
- { EL_SHIELD_NORMAL, &level.shield_normal_time, TEXT_DURATION },
- { EL_SHIELD_DEADLY, &level.shield_deadly_time, TEXT_DURATION },
- { 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 },
- { EL_GAME_OF_LIFE, &level.game_of_life[1], TEXT_GAME_OF_LIFE_2 },
- { EL_GAME_OF_LIFE, &level.game_of_life[2], TEXT_GAME_OF_LIFE_3 },
- { EL_GAME_OF_LIFE, &level.game_of_life[3], TEXT_GAME_OF_LIFE_4 },
- { EL_BIOMAZE, &level.biomaze[0], TEXT_GAME_OF_LIFE_1 },
- { EL_BIOMAZE, &level.biomaze[1], TEXT_GAME_OF_LIFE_2 },
- { EL_BIOMAZE, &level.biomaze[2], TEXT_GAME_OF_LIFE_3 },
- { EL_BIOMAZE, &level.biomaze[3], TEXT_GAME_OF_LIFE_4 },
- { EL_EMC_ANDROID, &level.android_move_time, TEXT_MOVE_SPEED },
- { EL_EMC_ANDROID, &level.android_clone_time, TEXT_CLONE_SPEED },
- { EL_EMC_MAGIC_BALL, &level.ball_time, TEXT_BALL_DELAY },
- { EL_EMC_LENSES, &level.lenses_score, TEXT_COLLECTING },
- { EL_EMC_MAGNIFIER, &level.magnify_score, TEXT_COLLECTING },
- { EL_SPRING, &level.slurp_score, TEXT_SLURPING },
- { EL_SPRING_LEFT, &level.slurp_score, TEXT_SLURPING },
- { EL_SPRING_RIGHT, &level.slurp_score, TEXT_SLURPING },
- { EL_EMC_LENSES, &level.lenses_time, TEXT_DURATION },
- { EL_EMC_MAGNIFIER, &level.magnify_time, TEXT_DURATION },
- { EL_MM_FUSE_ACTIVE, &level.mm_time_fuse, TEXT_DELAY_OFF },
- { EL_MM_BOMB, &level.mm_time_bomb, TEXT_DELAY_EXPLODING },
- { EL_MM_GRAY_BALL, &level.mm_time_ball, TEXT_DELAY_CHANGING },
- { EL_MM_STEEL_BLOCK, &level.mm_time_block, TEXT_DELAY_MOVING },
- { EL_MM_WOODEN_BLOCK, &level.mm_time_block, TEXT_DELAY_MOVING },
-
- { -1, NULL, NULL }
+ { EL_EMERALD, &level.score[SC_EMERALD], TEXT_COLLECTING },
+ { EL_BD_DIAMOND, &level.score[SC_EMERALD], TEXT_COLLECTING },
+ { EL_BD_DIAMOND, &level.score[SC_DIAMOND_EXTRA], TEXT_COLLECTING_EXTRA },
+ { EL_EMERALD_YELLOW, &level.score[SC_EMERALD], TEXT_COLLECTING },
+ { EL_EMERALD_RED, &level.score[SC_EMERALD], TEXT_COLLECTING },
+ { EL_EMERALD_PURPLE, &level.score[SC_EMERALD], TEXT_COLLECTING },
+ { EL_SP_INFOTRON, &level.score[SC_EMERALD], TEXT_COLLECTING },
+ { EL_DIAMOND, &level.score[SC_DIAMOND], TEXT_COLLECTING },
+ { EL_CRYSTAL, &level.score[SC_CRYSTAL], TEXT_COLLECTING },
+ { EL_PEARL, &level.score[SC_PEARL], TEXT_COLLECTING },
+ { EL_BUG, &level.score[SC_BUG], TEXT_SMASHING },
+ { EL_BUG_RIGHT, &level.score[SC_BUG], TEXT_SMASHING },
+ { EL_BUG_UP, &level.score[SC_BUG], TEXT_SMASHING },
+ { EL_BUG_LEFT, &level.score[SC_BUG], TEXT_SMASHING },
+ { EL_BUG_DOWN, &level.score[SC_BUG], TEXT_SMASHING },
+ { EL_BD_BUTTERFLY, &level.score[SC_BUG], TEXT_SMASHING },
+ { EL_BD_BUTTERFLY_RIGHT, &level.score[SC_BUG], TEXT_SMASHING },
+ { EL_BD_BUTTERFLY_UP, &level.score[SC_BUG], TEXT_SMASHING },
+ { EL_BD_BUTTERFLY_LEFT, &level.score[SC_BUG], TEXT_SMASHING },
+ { EL_BD_BUTTERFLY_DOWN, &level.score[SC_BUG], TEXT_SMASHING },
+ { EL_SP_ELECTRON, &level.score[SC_BUG], TEXT_SMASHING },
+ { EL_SPACESHIP, &level.score[SC_SPACESHIP], TEXT_SMASHING },
+ { EL_SPACESHIP_RIGHT, &level.score[SC_SPACESHIP], TEXT_SMASHING },
+ { EL_SPACESHIP_UP, &level.score[SC_SPACESHIP], TEXT_SMASHING },
+ { EL_SPACESHIP_LEFT, &level.score[SC_SPACESHIP], TEXT_SMASHING },
+ { EL_SPACESHIP_DOWN, &level.score[SC_SPACESHIP], TEXT_SMASHING },
+ { EL_BD_FIREFLY, &level.score[SC_SPACESHIP], TEXT_SMASHING },
+ { EL_BD_FIREFLY_RIGHT, &level.score[SC_SPACESHIP], TEXT_SMASHING },
+ { EL_BD_FIREFLY_UP, &level.score[SC_SPACESHIP], TEXT_SMASHING },
+ { EL_BD_FIREFLY_LEFT, &level.score[SC_SPACESHIP], TEXT_SMASHING },
+ { EL_BD_FIREFLY_DOWN, &level.score[SC_SPACESHIP], TEXT_SMASHING },
+ { EL_SP_SNIKSNAK, &level.score[SC_SPACESHIP], TEXT_SMASHING },
+ { EL_YAMYAM, &level.score[SC_YAMYAM], TEXT_SMASHING },
+ { EL_YAMYAM_LEFT, &level.score[SC_YAMYAM], TEXT_SMASHING },
+ { EL_YAMYAM_RIGHT, &level.score[SC_YAMYAM], TEXT_SMASHING },
+ { EL_YAMYAM_UP, &level.score[SC_YAMYAM], TEXT_SMASHING },
+ { EL_YAMYAM_DOWN, &level.score[SC_YAMYAM], TEXT_SMASHING },
+ { EL_DARK_YAMYAM, &level.score[SC_YAMYAM], TEXT_SMASHING },
+ { EL_ROBOT, &level.score[SC_ROBOT], TEXT_SMASHING },
+ { EL_PACMAN, &level.score[SC_PACMAN], TEXT_SMASHING },
+ { EL_PACMAN_RIGHT, &level.score[SC_PACMAN], TEXT_SMASHING },
+ { EL_PACMAN_UP, &level.score[SC_PACMAN], TEXT_SMASHING },
+ { EL_PACMAN_LEFT, &level.score[SC_PACMAN], TEXT_SMASHING },
+ { EL_PACMAN_DOWN, &level.score[SC_PACMAN], TEXT_SMASHING },
+ { EL_NUT, &level.score[SC_NUT], TEXT_CRACKING },
+ { EL_DYNAMITE, &level.score[SC_DYNAMITE], TEXT_COLLECTING },
+ { EL_EM_DYNAMITE, &level.score[SC_DYNAMITE], TEXT_COLLECTING },
+ { EL_DYNABOMB_INCREASE_NUMBER,&level.score[SC_DYNAMITE], TEXT_COLLECTING },
+ { EL_DYNABOMB_INCREASE_SIZE, &level.score[SC_DYNAMITE], TEXT_COLLECTING },
+ { EL_DYNABOMB_INCREASE_POWER, &level.score[SC_DYNAMITE], TEXT_COLLECTING },
+ { EL_SHIELD_NORMAL, &level.score[SC_SHIELD], TEXT_COLLECTING },
+ { EL_SHIELD_DEADLY, &level.score[SC_SHIELD], TEXT_COLLECTING },
+ { EL_EXTRA_TIME, &level.extra_time_score, TEXT_COLLECTING },
+ { EL_KEY_1, &level.score[SC_KEY], TEXT_COLLECTING },
+ { EL_KEY_2, &level.score[SC_KEY], TEXT_COLLECTING },
+ { EL_KEY_3, &level.score[SC_KEY], TEXT_COLLECTING },
+ { EL_KEY_4, &level.score[SC_KEY], TEXT_COLLECTING },
+ { EL_EM_KEY_1, &level.score[SC_KEY], TEXT_COLLECTING },
+ { EL_EM_KEY_2, &level.score[SC_KEY], TEXT_COLLECTING },
+ { EL_EM_KEY_3, &level.score[SC_KEY], TEXT_COLLECTING },
+ { EL_EM_KEY_4, &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_DC_KEY_WHITE, &level.score[SC_KEY], TEXT_COLLECTING },
+ { EL_MM_KETTLE, &level.score[SC_EMERALD], TEXT_COLLECTING },
+ { EL_DF_CELL, &level.score[SC_EMERALD], TEXT_COLLECTING },
+ { EL_MM_KEY, &level.score[SC_KEY], TEXT_COLLECTING },
+ { EL_MM_LIGHTBALL, &level.score[SC_ELEM_BONUS], TEXT_COLLECTING },
+ { EL_MM_PACMAN, &level.score[SC_PACMAN], TEXT_SMASHING },
+ { EL_MM_PACMAN_RIGHT, &level.score[SC_PACMAN], TEXT_SMASHING },
+ { EL_MM_PACMAN_UP, &level.score[SC_PACMAN], TEXT_SMASHING },
+ { EL_MM_PACMAN_LEFT, &level.score[SC_PACMAN], TEXT_SMASHING },
+ { EL_MM_PACMAN_DOWN, &level.score[SC_PACMAN], TEXT_SMASHING },
+ { 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 },
+ { EL_BD_AMOEBA, &level.amoeba_speed, TEXT_AMOEBA_SPEED },
+ { EL_EMC_DRIPPER, &level.amoeba_speed, TEXT_AMOEBA_SPEED },
+ { EL_BD_AMOEBA, &level.bd_amoeba_threshold_too_big, TEXT_AMOEBA_THRESHOED },
+ { EL_BD_AMOEBA, &level.bd_amoeba_slow_growth_time, TEXT_AMOEBA_SLOW_TIME },
+ { EL_BD_AMOEBA, &level.bd_amoeba_slow_growth_rate, TEXT_AMOEBA_SLOW_RATE,
+ 0, 100 },
+ { EL_BD_AMOEBA, &level.bd_amoeba_fast_growth_rate, TEXT_AMOEBA_FAST_RATE,
+ 0, 100 },
+ { EL_BD_AMOEBA_2, &level.bd_amoeba_2_threshold_too_big, TEXT_AMOEBA_THRESHOED },
+ { EL_BD_AMOEBA_2, &level.bd_amoeba_2_slow_growth_time, TEXT_AMOEBA_SLOW_TIME },
+ { EL_BD_AMOEBA_2, &level.bd_amoeba_2_slow_growth_rate, TEXT_AMOEBA_SLOW_RATE,
+ 0, 100 },
+ { EL_BD_AMOEBA_2, &level.bd_amoeba_2_fast_growth_rate, TEXT_AMOEBA_FAST_RATE,
+ 0, 100 },
+ { EL_MAGIC_WALL, &level.time_magic_wall, TEXT_DURATION },
+ { EL_BD_MAGIC_WALL, &level.time_magic_wall, TEXT_DURATION },
+ { EL_DC_MAGIC_WALL, &level.time_magic_wall, TEXT_DURATION },
+ { EL_ROBOT_WHEEL, &level.time_wheel, TEXT_DURATION },
+ { EL_TIMEGATE_SWITCH, &level.time_timegate, TEXT_DURATION },
+ { EL_DC_TIMEGATE_SWITCH, &level.time_timegate, TEXT_DURATION },
+ { EL_LIGHT_SWITCH, &level.time_light, TEXT_DURATION },
+ { EL_LIGHT_SWITCH_ACTIVE, &level.time_light, TEXT_DURATION },
+ { EL_SHIELD_NORMAL, &level.shield_normal_time, TEXT_DURATION },
+ { 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_BD_ACID, &level.bd_acid_spread_rate, TEXT_ACID_SPREAD_RATE,
+ 0, 100 },
+ { EL_BD_BITER, &level.bd_biter_move_delay, TEXT_BITER_MOVE_DELAY,
+ 0, 3 },
+ { EL_BD_BITER_RIGHT, &level.bd_biter_move_delay, TEXT_BITER_MOVE_DELAY,
+ 0, 3 },
+ { EL_BD_BITER_UP, &level.bd_biter_move_delay, TEXT_BITER_MOVE_DELAY,
+ 0, 3 },
+ { EL_BD_BITER_LEFT, &level.bd_biter_move_delay, TEXT_BITER_MOVE_DELAY,
+ 0, 3 },
+ { EL_BD_BITER_DOWN, &level.bd_biter_move_delay, TEXT_BITER_MOVE_DELAY,
+ 0, 3 },
+ { EL_BD_REPLICATOR, &level.bd_replicator_create_delay, TEXT_REPLICATION_DELAY,
+ 0, 100 },
+ { EL_BD_PNEUMATIC_HAMMER, &level.bd_hammer_walls_break_delay, TEXT_HAMMER_BREAK_DELAY,
+ 1, 100 },
+ { EL_BD_PNEUMATIC_HAMMER, &level.bd_hammer_walls_reappear_delay, TEXT_HAMMER_REAPPEAR_DELAY,
+ 1, 200 },
+ { EL_BD_POT, &level.bd_num_skeletons_needed_for_pot, TEXT_SKELETONS_NEEDED,
+ 0, 50 },
+ { EL_BD_SKELETON, &level.bd_num_skeletons_needed_for_pot, TEXT_SKELETONS_NEEDED,
+ 0, 50 },
+ { 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 },
+ { EL_GAME_OF_LIFE, &level.game_of_life[1], TEXT_GAME_OF_LIFE_2,0,8 },
+ { EL_GAME_OF_LIFE, &level.game_of_life[2], TEXT_GAME_OF_LIFE_3,0,8 },
+ { EL_GAME_OF_LIFE, &level.game_of_life[3], TEXT_GAME_OF_LIFE_4,0,8 },
+ { EL_BIOMAZE, &level.biomaze[0], TEXT_GAME_OF_LIFE_1,0,8 },
+ { EL_BIOMAZE, &level.biomaze[1], TEXT_GAME_OF_LIFE_2,0,8 },
+ { EL_BIOMAZE, &level.biomaze[2], TEXT_GAME_OF_LIFE_3,0,8 },
+ { EL_BIOMAZE, &level.biomaze[3], TEXT_GAME_OF_LIFE_4,0,8 },
+ { EL_EMC_ANDROID, &level.android_move_time, TEXT_MOVE_SPEED },
+ { EL_EMC_ANDROID, &level.android_clone_time, TEXT_CLONE_SPEED },
+ { EL_EMC_MAGIC_BALL, &level.ball_time, TEXT_BALL_DELAY },
+ { EL_EMC_LENSES, &level.lenses_score, TEXT_COLLECTING },
+ { EL_EMC_MAGNIFIER, &level.magnify_score, TEXT_COLLECTING },
+ { EL_SPRING, &level.slurp_score, TEXT_SLURPING },
+ { EL_SPRING_LEFT, &level.slurp_score, TEXT_SLURPING },
+ { EL_SPRING_RIGHT, &level.slurp_score, TEXT_SLURPING },
+ { EL_EMC_LENSES, &level.lenses_time, TEXT_DURATION },
+ { EL_EMC_MAGNIFIER, &level.magnify_time, TEXT_DURATION },
+ { EL_MM_FUSE_ACTIVE, &level.mm_time_fuse, TEXT_DELAY_OFF },
+ { EL_MM_BOMB, &level.mm_time_bomb, TEXT_DELAY_EXPLODING },
+ { EL_MM_GRAY_BALL, &level.mm_time_ball, TEXT_DELAY_CHANGING },
+ { EL_MM_STEEL_BLOCK, &level.mm_time_block, TEXT_DELAY_MOVING },
+ { EL_MM_WOODEN_BLOCK, &level.mm_time_block, TEXT_DELAY_MOVING },
+
+ { -1, NULL, NULL }
};
static boolean checkPropertiesConfig(int element)
IS_DF_LASER(element) ||
IS_PLAYER_ELEMENT(element) ||
IS_BD_PLAYER_ELEMENT(element) ||
+ IS_BD_FIREFLY(properties_element) ||
+ IS_BD_FIREFLY_2(properties_element) ||
+ IS_BD_BUTTERFLY(properties_element) ||
+ IS_BD_BUTTERFLY_2(properties_element) ||
+ IS_BD_STONEFLY(properties_element) ||
+ IS_BD_DRAGONFLY(properties_element) ||
+ IS_BD_EXPANDABLE_WALL(properties_element) ||
+ IS_BD_EXPANDABLE_STEELWALL(properties_element) ||
+ IS_BD_CONVEYOR_BELT(properties_element) ||
+ IS_BD_CONVEYOR_BELT_SWITCH(properties_element) ||
IS_SOKOBAN_OBJECT_OR_FIELD(element) ||
HAS_EDITOR_CONTENT(element) ||
CAN_GROW(element) ||
COULD_MOVE_INTO_ACID(element) ||
MAYBE_DONT_COLLIDE_WITH(element) ||
+ element == EL_BD_SAND ||
element == EL_BD_ROCK ||
element == EL_BD_MEGA_ROCK ||
- element == EL_BD_SWEET)
+ element == EL_BD_BOMB ||
+ element == EL_BD_ROCKET_LAUNCHER ||
+ element == EL_BD_NITRO_PACK ||
+ element == EL_BD_SWEET ||
+ element == EL_BD_VOODOO_DOLL ||
+ element == EL_BD_WATER ||
+ element == EL_BD_GRAVITY_SWITCH)
{
return TRUE;
}
int xpos = ED_ELEMENT_SETTINGS_X(0);
int ypos = ED_ELEMENT_SETTINGS_Y(0) + ED_GADGET_SMALL_DISTANCE;
- PrintInfoText("No configuration options available.",
- FONT_TEXT_1, xpos, ypos);
+ PrintInfoText("No configuration options available.", FONT_TEXT_1, xpos, ypos);
return;
}
// check if there are elements where a value can be chosen for
for (i = 0; elements_with_counter[i].element != -1; i++)
{
- if (elements_with_counter[i].element == properties_element)
- {
- // special case: score for extra diamonds only available in BD game engine
- if (elements_with_counter[i].element == EL_BD_DIAMOND &&
- elements_with_counter[i].value == &level.score[SC_DIAMOND_EXTRA] &&
- level.game_engine_type != GAME_ENGINE_TYPE_BD)
- continue;
+ if (elements_with_counter[i].element != properties_element)
+ continue;
- int counter_id = ED_COUNTER_ID_ELEMENT_VALUE1 + num_element_counters;
+ // special case: score for extra diamonds only available in BD game engine
+ if (elements_with_counter[i].element == EL_BD_DIAMOND &&
+ elements_with_counter[i].value == &level.score[SC_DIAMOND_EXTRA] &&
+ level.game_engine_type != GAME_ENGINE_TYPE_BD)
+ continue;
- counterbutton_info[counter_id].y =
- ED_ELEMENT_SETTINGS_YPOS(
- (HAS_EDITOR_CONTENT(properties_element) ? 1 : 0) +
- (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_EMC_MAGIC_BALL ? 2 : 0) +
- num_element_counters);
+ // special case: some amoeba counters only available in BD game engine
+ if (elements_with_counter[i].element == EL_BD_AMOEBA &&
+ elements_with_counter[i].value != &level.amoeba_speed &&
+ level.game_engine_type != GAME_ENGINE_TYPE_BD)
+ continue;
- counterbutton_info[counter_id].value = elements_with_counter[i].value;
- counterbutton_info[counter_id].text_right = elements_with_counter[i].text;
+ // special case: score for smashing only available in R'n'D game engine
+ if ((IS_BD_FIREFLY(elements_with_counter[i].element) ||
+ IS_BD_BUTTERFLY(elements_with_counter[i].element)) &&
+ (elements_with_counter[i].value == &level.score[SC_BUG] ||
+ elements_with_counter[i].value == &level.score[SC_SPACESHIP]) &&
+ level.game_engine_type == GAME_ENGINE_TYPE_BD)
+ continue;
- if (properties_element == EL_GAME_OF_LIFE ||
- properties_element == EL_BIOMAZE)
- {
- counterbutton_info[counter_id].min_value = 0; // min neighbours
- counterbutton_info[counter_id].max_value = 8; // max neighbours
- }
- else
- {
- // !!! CHANGE THIS FOR CERTAIN ELEMENTS !!!
- counterbutton_info[counter_id].min_value = MIN_SCORE;
- counterbutton_info[counter_id].max_value = MAX_SCORE;
- }
+ // special case: some amoeba counters only available in R'n'D game engine
+ if (elements_with_counter[i].element == EL_BD_AMOEBA &&
+ elements_with_counter[i].value == &level.amoeba_speed &&
+ level.game_engine_type == GAME_ENGINE_TYPE_BD)
+ continue;
- MapCounterButtons(counter_id);
+ int counter_id = ED_COUNTER_ID_ELEMENT_VALUE1 + num_element_counters;
+
+ counterbutton_info[counter_id].y =
+ ED_ELEMENT_SETTINGS_YPOS((HAS_EDITOR_CONTENT(properties_element) ? 1 : 0) +
+ (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_BD_ACID ? 1 : 0) +
+ (properties_element == EL_BD_REPLICATOR ? 1 : 0) +
+ (properties_element == EL_BD_CREATURE_SWITCH ? 1 : 0) +
+ (properties_element == EL_BD_GRAVITY_SWITCH ? 2 : 0) +
+ (properties_element == EL_EMC_MAGIC_BALL ? 2 : 0) +
+ num_element_counters);
+
+ // special case: set magic wall counter for BD game engine separately
+ if (properties_element == EL_BD_MAGIC_WALL && level.game_engine_type == GAME_ENGINE_TYPE_BD)
+ counterbutton_info[counter_id].y = ED_ELEMENT_SETTINGS_YPOS(1);
+
+ // special case: set amoeba counters for BD game engine separately
+ if ((properties_element == EL_BD_AMOEBA && level.game_engine_type == GAME_ENGINE_TYPE_BD) ||
+ (properties_element == EL_BD_AMOEBA_2))
+ counterbutton_info[counter_id].y = ED_ELEMENT_SETTINGS_YPOS(3 + num_element_counters);
+
+ // special case: set position for delay counter for reappearing hammered walls
+ if (properties_element == EL_BD_PNEUMATIC_HAMMER && num_element_counters > 0)
+ counterbutton_info[counter_id].y += 1;
+
+ counterbutton_info[counter_id].value = elements_with_counter[i].value;
+ counterbutton_info[counter_id].text_right = elements_with_counter[i].text;
+ counterbutton_info[counter_id].min_value = elements_with_counter[i].min_value;
+ counterbutton_info[counter_id].max_value = elements_with_counter[i].max_value;
+
+ // default: counter values between 0 and 999
+ if (counterbutton_info[counter_id].max_value == 0)
+ counterbutton_info[counter_id].max_value = 999;
+
+ MapCounterButtons(counter_id);
+
+ num_element_counters++;
+ if (num_element_counters >= max_num_element_counters)
+ break;
+ }
- num_element_counters++;
- if (num_element_counters >= max_num_element_counters)
- break;
- }
+ if (properties_element == EL_BD_MAGIC_WALL && level.game_engine_type == GAME_ENGINE_TYPE_BD)
+ {
+ // draw stickybutton gadget
+ MapCheckbuttonGadget(ED_CHECKBUTTON_ID_STICK_ELEMENT);
+
+ MapCheckbuttonGadget(ED_CHECKBUTTON_ID_BD_MAGIC_WALL_ZERO_INFINITE);
+ MapCheckbuttonGadget(ED_CHECKBUTTON_ID_BD_MAGIC_WALL_WAIT_HATCHING);
+ MapCheckbuttonGadget(ED_CHECKBUTTON_ID_BD_MAGIC_WALL_STOPS_AMOEBA);
+ MapCheckbuttonGadget(ED_CHECKBUTTON_ID_BD_MAGIC_WALL_BREAK_SCAN);
+
+ MapDrawingArea(ED_DRAWING_ID_BD_MAGIC_WALL_DIAMOND_TO);
+ MapDrawingArea(ED_DRAWING_ID_BD_MAGIC_WALL_ROCK_TO);
+ MapDrawingArea(ED_DRAWING_ID_BD_MAGIC_WALL_MEGA_ROCK_TO);
+ MapDrawingArea(ED_DRAWING_ID_BD_MAGIC_WALL_NUT_TO);
+ MapDrawingArea(ED_DRAWING_ID_BD_MAGIC_WALL_NITRO_PACK_TO);
+ MapDrawingArea(ED_DRAWING_ID_BD_MAGIC_WALL_FLYING_DIAMOND_TO);
+ MapDrawingArea(ED_DRAWING_ID_BD_MAGIC_WALL_FLYING_ROCK_TO);
}
if (HAS_EDITOR_CONTENT(properties_element))
// draw stickybutton gadget
MapCheckbuttonGadget(ED_CHECKBUTTON_ID_STICK_ELEMENT);
- if (IS_AMOEBOID(properties_element))
+ if (properties_element == EL_BD_AMOEBA && level.game_engine_type == GAME_ENGINE_TYPE_BD)
+ {
+ MapCheckbuttonGadget(ED_CHECKBUTTON_ID_BD_AMOEBA_WAIT_FOR_HATCHING);
+ MapCheckbuttonGadget(ED_CHECKBUTTON_ID_BD_AMOEBA_START_IMMEDIATELY);
+
+ MapDrawingArea(ED_DRAWING_ID_BD_AMOEBA_CONTENT_TOO_BIG);
+ MapDrawingArea(ED_DRAWING_ID_BD_AMOEBA_CONTENT_ENCLOSED);
+ }
+ else if (properties_element == EL_BD_AMOEBA_2)
+ {
+ MapCheckbuttonGadget(ED_CHECKBUTTON_ID_BD_AMOEBA_WAIT_FOR_HATCHING);
+ MapCheckbuttonGadget(ED_CHECKBUTTON_ID_BD_AMOEBA_START_IMMEDIATELY);
+ MapCheckbuttonGadget(ED_CHECKBUTTON_ID_BD_AMOEBA_2_EXPLODE_BY_AMOEBA);
+
+ MapDrawingArea(ED_DRAWING_ID_BD_AMOEBA_2_CONTENT_TOO_BIG);
+ MapDrawingArea(ED_DRAWING_ID_BD_AMOEBA_2_CONTENT_ENCLOSED);
+ MapDrawingArea(ED_DRAWING_ID_BD_AMOEBA_2_CONTENT_EXPLODING);
+ MapDrawingArea(ED_DRAWING_ID_BD_AMOEBA_2_CONTENT_LOOKS_LIKE);
+ }
+ else if (IS_AMOEBOID(properties_element))
+ {
MapDrawingArea(ED_DRAWING_ID_AMOEBA_CONTENT);
+ }
+ else if (properties_element == EL_BD_ACID)
+ {
+ MapDrawingArea(ED_DRAWING_ID_BD_ACID_EATS_ELEMENT);
+ MapDrawingArea(ED_DRAWING_ID_BD_ACID_TURNS_TO_ELEMENT);
+ }
+ else if (IS_BD_BITER(properties_element))
+ {
+ MapDrawingArea(ED_DRAWING_ID_BD_BITER_EATS_ELEMENT);
+ }
+ else if (properties_element == EL_BD_BLADDER)
+ {
+ MapDrawingArea(ED_DRAWING_ID_BD_BLADDER_CONVERTS_BY_ELEMENT);
+ }
else if (properties_element == EL_YAMYAM ||
properties_element == EL_YAMYAM_LEFT ||
properties_element == EL_YAMYAM_RIGHT ||
properties_element == EL_YAMYAM_UP ||
properties_element == EL_YAMYAM_DOWN)
+ {
DrawYamYamContentAreas();
+ }
else if (properties_element == EL_EMC_MAGIC_BALL)
{
DrawMagicBallContentAreas();
MapCheckbuttonGadget(ED_CHECKBUTTON_ID_INITIAL_BALL_ACTIVE);
}
else if (properties_element == EL_EMC_ANDROID)
+ {
DrawAndroidElementArea();
+ }
else if (properties_element == EL_MM_GRAY_BALL)
{
MapCounterButtons(ED_COUNTER_ID_MM_BALL_CONTENT);
// 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_SAND)
+ {
+ MapDrawingArea(ED_DRAWING_ID_BD_SAND_LOOKS_LIKE);
}
if (properties_element == EL_BD_ROCK && level.game_engine_type == GAME_ENGINE_TYPE_BD)
MapCounterButtons(ED_COUNTER_ID_BD_PUSHING_PROB);
MapCounterButtons(ED_COUNTER_ID_BD_PUSHING_PROB_WITH_SWEET);
+
+ MapDrawingArea(ED_DRAWING_ID_BD_ROCK_TURNS_TO_ON_FALLING);
+ MapDrawingArea(ED_DRAWING_ID_BD_ROCK_TURNS_TO_ON_IMPACT);
+ }
+
+ if (properties_element == EL_BD_DIAMOND && level.game_engine_type == GAME_ENGINE_TYPE_BD)
+ {
+ MapDrawingArea(ED_DRAWING_ID_BD_DIAMOND_TURNS_TO_ON_FALLING);
+ MapDrawingArea(ED_DRAWING_ID_BD_DIAMOND_TURNS_TO_ON_IMPACT);
+ }
+
+ if (level.game_engine_type == GAME_ENGINE_TYPE_BD)
+ {
+ if (IS_BD_FIREFLY(properties_element))
+ {
+ MapDrawingArea(ED_DRAWING_ID_BD_FIREFLY_EXPLODES_TO);
+ MapDrawingArea(ED_DRAWING_ID_BD_EXPLOSION_TURNS_TO);
+ }
+ else if (IS_BD_FIREFLY_2(properties_element))
+ {
+ MapDrawingArea(ED_DRAWING_ID_BD_FIREFLY_2_EXPLODES_TO);
+ MapDrawingArea(ED_DRAWING_ID_BD_EXPLOSION_TURNS_TO);
+ }
+ else if (IS_BD_BUTTERFLY(properties_element))
+ {
+ MapDrawingArea(ED_DRAWING_ID_BD_BUTTERFLY_EXPLODES_TO);
+ MapDrawingArea(ED_DRAWING_ID_BD_DIAMOND_BIRTH_TURNS_TO);
+ }
+ else if (IS_BD_BUTTERFLY_2(properties_element))
+ {
+ MapDrawingArea(ED_DRAWING_ID_BD_BUTTERFLY_2_EXPLODES_TO);
+ MapDrawingArea(ED_DRAWING_ID_BD_DIAMOND_BIRTH_TURNS_TO);
+ }
+ else if (IS_BD_STONEFLY(properties_element))
+ {
+ MapDrawingArea(ED_DRAWING_ID_BD_STONEFLY_EXPLODES_TO);
+ }
+ else if (IS_BD_DRAGONFLY(properties_element))
+ {
+ MapDrawingArea(ED_DRAWING_ID_BD_DRAGONFLY_EXPLODES_TO);
+ MapDrawingArea(ED_DRAWING_ID_BD_EXPLOSION_TURNS_TO);
+ }
+ else if (properties_element == EL_BD_BOMB)
+ {
+ MapDrawingArea(ED_DRAWING_ID_BD_BOMB_EXPLOSION_TURNS_TO);
+ }
+ else if (properties_element == EL_BD_NITRO_PACK)
+ {
+ MapDrawingArea(ED_DRAWING_ID_BD_NITRO_EXPLOSION_TURNS_TO);
+ }
}
if (properties_element == EL_BD_MEGA_ROCK ||
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);
+
+ MapDrawingArea(ED_DRAWING_ID_BD_SLIME_EATS_ELEMENT_1);
+ MapDrawingArea(ED_DRAWING_ID_BD_SLIME_CONVERTS_TO_ELEMENT_1);
+ MapDrawingArea(ED_DRAWING_ID_BD_SLIME_EATS_ELEMENT_2);
+ MapDrawingArea(ED_DRAWING_ID_BD_SLIME_CONVERTS_TO_ELEMENT_2);
+ MapDrawingArea(ED_DRAWING_ID_BD_SLIME_EATS_ELEMENT_3);
+ MapDrawingArea(ED_DRAWING_ID_BD_SLIME_CONVERTS_TO_ELEMENT_3);
+ }
+
+ if (IS_BD_EXPANDABLE_WALL(properties_element) ||
+ IS_BD_EXPANDABLE_STEELWALL(properties_element))
+ {
+ MapCheckbuttonGadget(ED_CHECKBUTTON_ID_BD_CHANGE_EXPANDING_WALL);
+
+ if (IS_BD_EXPANDABLE_WALL(properties_element))
+ MapDrawingArea(ED_DRAWING_ID_BD_EXPANDING_WALL_LOOKS_LIKE);
+ }
+
+ if (properties_element == EL_BD_REPLICATOR)
+ {
+ MapCheckbuttonGadget(ED_CHECKBUTTON_ID_BD_REPLICATORS_ACTIVE);
+ }
+
+ if (IS_BD_CONVEYOR_BELT(properties_element) ||
+ IS_BD_CONVEYOR_BELT_SWITCH(properties_element))
+ {
+ MapCheckbuttonGadget(ED_CHECKBUTTON_ID_BD_CONVEYOR_BELTS_ACTIVE);
+ MapCheckbuttonGadget(ED_CHECKBUTTON_ID_BD_CONVEYOR_BELTS_CHANGED);
+ }
+
+ if (properties_element == EL_BD_WATER)
+ {
+ MapCheckbuttonGadget(ED_CHECKBUTTON_ID_BD_WATER_CANNOT_FLOW_DOWN);
+ }
+
+ if (properties_element == EL_BD_PNEUMATIC_HAMMER)
+ {
+ MapCheckbuttonGadget(ED_CHECKBUTTON_ID_BD_HAMMER_WALLS_REAPPEAR);
+ }
+
+ if (properties_element == EL_BD_ROCKET_LAUNCHER)
+ {
+ MapCheckbuttonGadget(ED_CHECKBUTTON_ID_BD_INFINITE_ROCKETS);
+ }
+
+ if (properties_element == EL_BD_CREATURE_SWITCH)
+ {
+ MapCheckbuttonGadget(ED_CHECKBUTTON_ID_BD_CREATURES_START_BACKWARDS);
+ 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);
+ }
+
// special case: slippery walls option for gems only available in R'n'D game engine
if (IS_GEM(properties_element) && level.game_engine_type == GAME_ENGINE_TYPE_RND)
MapCheckbuttonGadget(ED_CHECKBUTTON_ID_EM_SLIPPERY_GEMS);
if (properties_element == EL_EM_DYNAMITE)
MapCheckbuttonGadget(ED_CHECKBUTTON_ID_EM_EXPLODES_BY_FIRE);
- if (COULD_MOVE_INTO_ACID(properties_element) &&
+ if (level.game_engine_type == GAME_ENGINE_TYPE_RND &&
+ COULD_MOVE_INTO_ACID(properties_element) &&
!IS_PLAYER_ELEMENT(properties_element) &&
(!IS_CUSTOM_ELEMENT(properties_element) ||
edit_mode_properties == ED_MODE_PROPERTIES_CONFIG_2))
properties_element == EL_BIOMAZE)
MapCheckbuttonGadget(ED_CHECKBUTTON_ID_USE_LIFE_BUGS);
- if (CAN_GROW(properties_element))
+ if (CAN_GROW(properties_element) && level.game_engine_type != GAME_ENGINE_TYPE_BD)
{
checkbutton_info[ED_CHECKBUTTON_ID_GROW_INTO_DIGGABLE].y =
ED_ELEMENT_SETTINGS_YPOS(HAS_EDITOR_CONTENT(properties_element) ? 1 : 0);
static void DrawEditorElementAnimation(int x, int y)
{
- int graphic = el2img(properties_element);
- int frame = (ANIM_MODE(graphic) == ANIM_CE_VALUE ?
- custom_element.ce_value_fixed_initial :
- ANIM_MODE(graphic) == ANIM_CE_SCORE ?
- custom_element.collect_score_initial : FrameCounter);
+ int graphic;
+ int frame;
+
+ getEditorGraphicAndFrame(properties_element, &graphic, &frame, FALSE);
DrawFixedGraphicAnimationExt(drawto, x, y, graphic, frame, NO_MASKING);
}
ModifyEditorElementList(); // update changed button info text
}
+ else if (type_id >= ED_TEXTINPUT_ID_COLORS_FIRST &&
+ type_id <= ED_TEXTINPUT_ID_COLORS_LAST)
+ {
+ int pos = type_id - ED_TEXTINPUT_ID_COLORS_FIRST;
+
+ *bd_color[pos] = gd_color_get_from_string(bd_color_text[pos]);
+
+ DrawColorBox_BD(pos);
+ }
// do not mark level as modified for certain non-level-changing gadgets
if (type_id >= ED_TEXTINPUT_ID_LEVELSET_FIRST &&
// update BD cycle delay counter gadgets depending on BD scheduling type
DrawLevelConfigWindow();
}
+ else if (type_id == ED_SELECTBOX_ID_BD_COLOR_TYPE)
+ {
+ bd_color_type_changed = TRUE;
+
+ if (level.bd_color_type != GD_COLOR_TYPE_RGB && level.bd_color_type != GetCommonColorType_BD())
+ {
+ // color type switched to non-RGB colors, but using different color type => reset colors
+ char *message = (level.bd_color_type == bd_color_type_default ?
+ "This will reset colors to defaults! Continue?" :
+ "This will reset colors to random colors! Continue?");
+
+ if (!Request(message, REQ_ASK))
+ {
+ // keep current RGB colors
+ level.bd_color_type = GD_COLOR_TYPE_RGB;
+ bd_color_type_changed = FALSE;
+ }
+ }
+
+ // update BD color palette gadgets depending on BD color type
+ DrawLevelConfigWindow();
+ }
+ else if (type_id >= ED_SELECTBOX_ID_COLORS_FIRST &&
+ type_id <= ED_SELECTBOX_ID_COLORS_LAST)
+ {
+ int pos = type_id - ED_SELECTBOX_ID_COLORS_FIRST;
+
+ *bd_color[pos] = gd_c64_color(bd_color_c64[pos]);
+
+ DrawColorBox_BD(pos);
+ }
// do not mark level as modified for certain non-level-changing gadgets
if (type_id == ED_SELECTBOX_ID_LEVELSET_SAVE_MODE ||
DrawLevelConfigWindow();
}
+ else if (type_id >= ED_TAB_BUTTON_ID_ENGINECONFIG_FIRST &&
+ type_id <= ED_TAB_BUTTON_ID_ENGINECONFIG_LAST)
+ {
+ edit_mode_engineconfig = gi->custom_type_id;
+
+ DrawLevelConfigWindow();
+ }
else if (type_id >= ED_TAB_BUTTON_ID_PROPERTIES_FIRST &&
type_id <= ED_TAB_BUTTON_ID_PROPERTIES_LAST)
{
level.changed = TRUE;
}
+ else if (type_id == ED_TEXTBUTTON_ID_BD_SET_RANDOM_COLORS)
+ {
+ SetRandomLevelColors_BD(level.bd_color_type);
+
+ // update BD color palette gadgets after setting random colors
+ DrawLevelConfigWindow();
+ }
}
static void HandleGraphicbuttonGadgets(struct GadgetInfo *gi)