X-Git-Url: https://git.artsoft.org/?a=blobdiff_plain;f=src%2Feditor.c;h=7a854200d554445d7c48545c228b303777795d49;hb=97edb8ddb87d3abe1496a0fee11a20cf2830daf6;hp=df592b1f528f39ff055a4add1f0623c4c4503711;hpb=e23e181a31fd4ff25df5b7a7407990ddc7cf042b;p=rocksndiamonds.git diff --git a/src/editor.c b/src/editor.c index df592b1f..7a854200 100644 --- a/src/editor.c +++ b/src/editor.c @@ -3692,6 +3692,7 @@ static int level_xpos = -1, level_ypos = -1; /* actual tile size used to display playfield drawing area */ static int ed_tilesize = DEFAULT_EDITOR_TILESIZE; +static int ed_tilesize_default = DEFAULT_EDITOR_TILESIZE; #define IN_ED_FIELD(x,y) IN_FIELD(x, y, ed_fieldx, ed_fieldy) @@ -8281,9 +8282,13 @@ void InitZoomLevelSettings(int zoom_tilesize) if (zoom_tilesize == -1) { ed_tilesize = setup.auto_setup.editor_zoom_tilesize; + ed_tilesize_default = DEFAULT_EDITOR_TILESIZE; if (level.game_engine_type == GAME_ENGINE_TYPE_MM) + { ed_tilesize = DEFAULT_EDITOR_TILESIZE_MM; + ed_tilesize_default = DEFAULT_EDITOR_TILESIZE_MM; + } } // limit zoom tilesize by upper and lower bound @@ -8297,6 +8302,35 @@ void InitZoomLevelSettings(int zoom_tilesize) MAX_ED_FIELDY = getMaxEdFieldY(FALSE); } +static void InitDrawingElements() +{ + static int game_engine_type_last = GAME_ENGINE_TYPE_UNKNOWN; + + if (level.game_engine_type == game_engine_type_last) + return; + + 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; + } + + game_engine_type_last = level.game_engine_type; +} + static void InitLevelSetInfo() { snprintf(levelset_name, MAX_LEVEL_NAME_LEN + 1, @@ -8398,6 +8432,7 @@ void DrawLevelEd() ClearField(); InitZoomLevelSettings(-1); + InitDrawingElements(); InitLevelSetInfo(); #if DEBUG @@ -13271,7 +13306,7 @@ static void HandleControlButtons(struct GadgetInfo *gi) case GADGET_ID_ZOOM: // zoom level editor tile size in or out (or reset to default size) ed_tilesize = (button == 1 ? ed_tilesize * 2 : - button == 2 ? DEFAULT_EDITOR_TILESIZE : + button == 2 ? ed_tilesize_default : button == 3 ? ed_tilesize / 2 : ed_tilesize); // limit zoom level by upper and lower bound