#ifndef MAPCONTROLLER_H #define MAPCONTROLLER_H #include "maphandler.h" #include "mapview.h" #include "../lib/mapping/CMap.h" #include "../lib/Terrain.h" class MainWindow; class MapController { public: MapController(MainWindow *); MapController(const MapController &) = delete; MapController(const MapController &&) = delete; ~MapController(); void setMap(std::unique_ptr); void repairMap(); const std::unique_ptr & getMapUniquePtr() const; //to be used for map saving CMap * map(); MapHandler * mapHandler(); MapScene * scene(int level); MinimapScene * miniScene(int level); void resetMapHandler(); void sceneForceUpdate(); void sceneForceUpdate(int level); void commitTerrainChange(int level, const Terrain & terrain); void commitObjectErase(const CGObjectInstance* obj); void commitObjectErase(int level); void commitObstacleFill(int level); void commitChangeWithoutRedraw(); void commitObjectShiftOrCreate(int level); void commitObjectCreate(int level); void commitObjectChange(int level); bool discardObject(int level) const; void createObject(int level, CGObjectInstance * obj) const; void undo(); void redo(); private: std::unique_ptr _map; std::unique_ptr _mapHandler; MainWindow * main; mutable std::array, 2> _scenes; mutable std::array, 2> _miniscenes; void connectScenes(); }; #endif // MAPCONTROLLER_H