GADGET_ID_CAN_FALL_INTO_ACID,
GADGET_ID_CAN_MOVE_INTO_ACID,
GADGET_ID_DONT_COLLIDE_WITH,
+ GADGET_ID_BD_DIAGONAL_MOVEMENTS,
GADGET_ID_ENVELOPE_AUTOWRAP,
GADGET_ID_ENVELOPE_CENTERED,
GADGET_ID_MM_LASER_RED,
ED_CHECKBUTTON_ID_CAN_FALL_INTO_ACID,
ED_CHECKBUTTON_ID_CAN_MOVE_INTO_ACID,
ED_CHECKBUTTON_ID_DONT_COLLIDE_WITH,
+ ED_CHECKBUTTON_ID_BD_DIAGONAL_MOVEMENTS,
ED_CHECKBUTTON_ID_ENVELOPE_AUTOWRAP,
ED_CHECKBUTTON_ID_ENVELOPE_CENTERED,
ED_CHECKBUTTON_ID_MM_LASER_RED,
NULL, NULL,
"deadly when colliding with", "element is deadly when hitting player"
},
+ {
+ 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"
+ },
{
ED_ELEMENT_SETTINGS_XPOS(0), ED_ELEMENT_SETTINGS_YPOS(1),
GADGET_ID_ENVELOPE_AUTOWRAP, GADGET_ID_NONE,
CAN_GROW(element) ||
COULD_MOVE_INTO_ACID(element) ||
MAYBE_DONT_COLLIDE_WITH(element) ||
+ element == EL_BD_PLAYER ||
element == EL_SOKOBAN_OBJECT ||
element == EL_SOKOBAN_FIELD_EMPTY ||
element == EL_SOKOBAN_FIELD_FULL)
}
}
+ if (properties_element == EL_BD_PLAYER)
+ MapCheckbuttonGadget(ED_CHECKBUTTON_ID_BD_DIAGONAL_MOVEMENTS);
+
if (IS_GEM(properties_element))
MapCheckbuttonGadget(ED_CHECKBUTTON_ID_EM_SLIPPERY_GEMS);
&li.initial_inventory_size[3], 1, MAX_INITIAL_INVENTORY_SIZE
},
+ // (these values are only valid for BD style levels)
+ {
+ EL_BD_PLAYER, -1,
+ TYPE_BOOLEAN, CONF_VALUE_8_BIT(1),
+ &li.bd_diagonal_movements, FALSE
+ },
+
+ // (the following values are related to various game elements)
+
{
EL_EMERALD, -1,
TYPE_INTEGER, CONF_VALUE_16_BIT(1),
cave->level_speed[0] = 160; // set cave speed
+ cave->diagonal_movements = level->bd_diagonal_movements;
+
strncpy(cave->name, level->name, sizeof(GdString));
cave->name[sizeof(GdString) - 1] = '\0';
level->score[SC_TIME_BONUS] = cave->level_timevalue[bd_level_nr];
level->score[SC_DIAMOND] = cave->diamond_value;
+ level->bd_diagonal_movements = cave->diagonal_movements;
+
strncpy(level->name, cave->name, MAX_LEVEL_NAME_LEN);
level->name[MAX_LEVEL_NAME_LEN] = '\0';