X-Git-Url: https://git.artsoft.org/?a=blobdiff_plain;f=src%2Feditor.c;h=1edadc31df46954f0becf7779431c48ad22ef942;hb=84a7f4ae97c71de8d7542914cd83a4c4e7203cf1;hp=92b35d0f5f4f135fd8536dc2288bca9f7eb27a4e;hpb=b903ee03857c26c3816a37b4c7c858c24250a7ef;p=rocksndiamonds.git diff --git a/src/editor.c b/src/editor.c index 92b35d0f..1edadc31 100644 --- a/src/editor.c +++ b/src/editor.c @@ -3658,6 +3658,7 @@ static void HandleControlButtons(struct GadgetInfo *); static void HandleDrawingAreaInfo(struct GadgetInfo *); static void PrintEditorGadgetInfoText(struct GadgetInfo *); static boolean AskToCopyAndModifyLevelTemplate(); +static boolean getDrawModeHiRes(); static int num_editor_gadgets = 0; /* dynamically determined */ @@ -9114,6 +9115,10 @@ static void DrawPropertiesInfo() #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_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" @@ -9239,10 +9244,11 @@ static struct { EL_SPRING, &level.slurp_score, TEXT_SLURPING }, { EL_EMC_LENSES, &level.lenses_time, TEXT_DURATION }, { EL_EMC_MAGNIFIER, &level.magnify_time, TEXT_DURATION }, -#if 0 - /* defined, but currently not used in MM engine */ - { EL_MM_FUSE_ACTIVE, &level.mm_time_fuse, TEXT_DURATION }, -#endif + { 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_ON }, + { 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 } }; @@ -10291,7 +10297,7 @@ static void SetElementSimpleExt(int x, int y, int dx, int dy, int element, int sx = x - level_xpos; int sy = y - level_ypos; int old_element = Feld[x][y]; - unsigned int new_bitmask = (dx + 1) << (dy * 2); + unsigned int new_bitmask = (getDrawModeHiRes() ? (dx + 1) << (dy * 2) : 0x0f); boolean draw_masked = FALSE; if (IS_MM_WALL_EDITOR(element)) @@ -12038,6 +12044,8 @@ static void HandleDrawingAreas(struct GadgetInfo *gi) } else { + SetDrawModeHiRes(new_element); + if (new_element == EL_PLAYER_1) { /* remove player at old position */ @@ -12212,6 +12220,7 @@ static void HandleDrawingAreas(struct GadgetInfo *gi) /* do not mark level as modified for certain non-level-changing gadgets */ if ((type_id >= ED_DRAWING_ID_EDITOR_FIRST && type_id <= ED_DRAWING_ID_EDITOR_LAST) || + actual_drawing_function == GADGET_ID_GRAB_BRUSH || actual_drawing_function == GADGET_ID_PICK_ELEMENT) return; @@ -12388,8 +12397,6 @@ static void HandleSelectboxGadgets(struct GadgetInfo *gi) } CopyElementPropertiesToGame(properties_element); - - level.changed = TRUE; } else if (type_id == ED_SELECTBOX_ID_GAME_ENGINE_TYPE) { @@ -12397,6 +12404,12 @@ static void HandleSelectboxGadgets(struct GadgetInfo *gi) ReinitializeElementList(); ModifyEditorElementList(); } + + /* do not mark level as modified for certain non-level-changing gadgets */ + if (type_id == ED_SELECTBOX_ID_SELECT_CHANGE_PAGE) + return; + + level.changed = TRUE; } static void HandleTextbuttonGadgets(struct GadgetInfo *gi)