GADGET_ID_DF_LASER_RED,
GADGET_ID_DF_LASER_GREEN,
GADGET_ID_DF_LASER_BLUE,
+ GADGET_ID_ROTATE_MM_BALL_CONTENT,
GADGET_ID_CUSTOM_INDESTRUCTIBLE,
GADGET_ID_CUSTOM_CAN_EXPLODE,
GADGET_ID_CUSTOM_EXPLODE_FIRE,
ED_CHECKBUTTON_ID_DF_LASER_RED,
ED_CHECKBUTTON_ID_DF_LASER_GREEN,
ED_CHECKBUTTON_ID_DF_LASER_BLUE,
+ ED_CHECKBUTTON_ID_ROTATE_MM_BALL_CONTENT,
ED_CHECKBUTTON_ID_CUSTOM_USE_GRAPHIC,
ED_CHECKBUTTON_ID_CUSTOM_USE_TEMPLATE_1,
ED_CHECKBUTTON_ID_CUSTOM_ACCESSIBLE,
NULL, NULL,
"blue", "use blue color components in laser"
},
+ {
+ 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"
+ },
// ---------- element settings: configure 1 (custom elements) ---------------
{
MapCounterButtons(ED_COUNTER_ID_MM_BALL_CONTENT);
MapSelectboxGadget(ED_SELECTBOX_ID_MM_BALL_CHOICE_MODE);
+ MapCheckbuttonGadget(ED_CHECKBUTTON_ID_ROTATE_MM_BALL_CONTENT);
DrawMMBallContentArea();
}
&li.mm_ball_content, EL_EMPTY, NULL,
&li.num_mm_ball_contents, 8, MAX_MM_BALL_CONTENTS
},
+ {
+ EL_MM_GRAY_BALL, -1,
+ TYPE_BOOLEAN, CONF_VALUE_8_BIT(1),
+ &li.rotate_mm_ball_content, TRUE
+ },
{
EL_MM_STEEL_BLOCK, -1,
level_mm->num_ball_contents = level->num_mm_ball_contents;
level_mm->ball_choice_mode = level->mm_ball_choice_mode;
+ level_mm->rotate_ball_content = level->rotate_mm_ball_content;
for (i = 0; i < level->num_mm_ball_contents; i++)
level_mm->ball_content[i] =
level->num_mm_ball_contents = level_mm->num_ball_contents;
level->mm_ball_choice_mode = level_mm->ball_choice_mode;
+ level->rotate_mm_ball_content = level_mm->rotate_ball_content;
for (i = 0; i < level->num_mm_ball_contents; i++)
level->mm_ball_content[i] =
int num_ball_contents;
int ball_choice_mode;
int ball_content[MM_MAX_BALL_CONTENTS];
+ boolean rotate_ball_content;
short field[MAX_PLAYFIELD_WIDTH][MAX_PLAYFIELD_HEIGHT];
};
int new_element = native_mm_level.ball_content[element_pos];
- Store[ELX][ELY] = get_rotated_element(new_element, RND(16));
+ // randomly rotate newly created game element, if needed
+ if (native_mm_level.rotate_ball_content)
+ new_element = get_rotated_element(new_element, RND(16));
+
+ Store[ELX][ELY] = new_element;
Store2[ELX][ELY] = TRUE;
}
int num_mm_ball_contents;
int mm_ball_choice_mode;
int mm_ball_content[MAX_MM_BALL_CONTENTS];
+ boolean rotate_mm_ball_content;
// ('int' instead of 'boolean' because used as selectbox value in editor)
int use_step_counter; // count steps instead of seconds for level