/* default value for element tile size in drawing area */
#define DEFAULT_EDITOR_TILESIZE MINI_TILESIZE
+#define DEFAULT_EDITOR_TILESIZE_MM TILESIZE
/*
/* 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)
void InitZoomLevelSettings(int zoom_tilesize)
{
if (zoom_tilesize == -1)
- zoom_tilesize = setup.auto_setup.editor_zoom_tilesize;
+ {
+ 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
- zoom_tilesize = MIN(MAX(MICRO_TILESIZE, zoom_tilesize), TILESIZE);
+ ed_tilesize = MIN(MAX(MICRO_TILESIZE, ed_tilesize), TILESIZE);
- ed_tilesize = setup.auto_setup.editor_zoom_tilesize = zoom_tilesize;
+ // store zoom tilesize in auto setup file only if it was manually changed
+ if (zoom_tilesize != -1)
+ setup.auto_setup.editor_zoom_tilesize = ed_tilesize;
MAX_ED_FIELDX = getMaxEdFieldX(FALSE);
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,
ClearField();
InitZoomLevelSettings(-1);
+ InitDrawingElements();
InitLevelSetInfo();
#if DEBUG
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