diff --git a/client/mapView/MapView.cpp b/client/mapView/MapView.cpp index 3f7617d47..2be7b901d 100644 --- a/client/mapView/MapView.cpp +++ b/client/mapView/MapView.cpp @@ -210,7 +210,12 @@ void MapView::onMapZoomLevelChanged(int stepsChange, bool useDeadZone) void MapView::onViewMapActivated() { controller->activateAdventureContext(); - controller->setTileSize(Point(32, 32)); + + int zoom = persistentStorage["tileZoom"].Integer(); + if(zoom) + controller->setTileSize(Point(zoom, zoom)); + else + controller->setTileSize(Point(32, 32)); } PuzzleMapView::PuzzleMapView(const Point & offset, const Point & dimensions, const int3 & tileToCenter) diff --git a/client/mapView/MapViewController.cpp b/client/mapView/MapViewController.cpp index cd0637431..9a344a787 100644 --- a/client/mapView/MapViewController.cpp +++ b/client/mapView/MapViewController.cpp @@ -72,7 +72,7 @@ void MapViewController::setViewCenter(const Point & position, int level) adventureInt->onMapViewMoved(model->getTilesTotalRect(), model->getLevel()); } -void MapViewController::setTileSize(const Point & tileSize) +void MapViewController::setTileSize(const Point & tileSize, bool setTarget) { Point oldSize = model->getSingleTileSize(); model->setTileSize(tileSize); @@ -87,6 +87,9 @@ void MapViewController::setTileSize(const Point & tileSize) // force update of view center since changing tile size may invalidated it setViewCenter(newViewCenter, model->getLevel()); + + if(setTarget) + targetTileSize = tileSize; } void MapViewController::modifyTileSize(int stepsChange, bool useDeadZone) @@ -125,7 +128,7 @@ void MapViewController::modifyTileSize(int stepsChange, bool useDeadZone) if(actualZoom.y >= defaultTileSize - zoomTileDeadArea && actualZoom.y <= defaultTileSize + zoomTileDeadArea) actualZoom.y = defaultTileSize; } - + bool isInDeadZone = targetTileSize != actualZoom || actualZoom == Point(defaultTileSize, defaultTileSize); if(!wasInDeadZone && isInDeadZone) @@ -133,7 +136,10 @@ void MapViewController::modifyTileSize(int stepsChange, bool useDeadZone) wasInDeadZone = isInDeadZone; - setTileSize(actualZoom); + setTileSize(actualZoom, false); + + Settings tileZoom = persistentStorage.write["tileZoom"]; + tileZoom->Integer() = actualZoom.x; } } diff --git a/client/mapView/MapViewController.h b/client/mapView/MapViewController.h index ef1225a54..f1ca30d20 100644 --- a/client/mapView/MapViewController.h +++ b/client/mapView/MapViewController.h @@ -96,7 +96,7 @@ public: void setViewCenter(const int3 & position); void setViewCenter(const Point & position, int level); - void setTileSize(const Point & tileSize); + void setTileSize(const Point & tileSize, bool setTarget = true); void modifyTileSize(int stepsChange, bool useDeadZone); void tick(uint32_t timePassed); void afterRender();