diff --git a/src/otclient/core/map.cpp b/src/otclient/core/map.cpp index 951665b7..c16ba408 100644 --- a/src/otclient/core/map.cpp +++ b/src/otclient/core/map.cpp @@ -31,10 +31,15 @@ Map g_map; +Map::Map() +{ + setVisibleSize(Size(MAP_VISIBLE_WIDTH, MAP_VISIBLE_HEIGHT) + Size(8, 2)); +} + void Map::draw(const Rect& rect) { if(!m_framebuffer) - setVisibleSize(Size(MAP_VISIBLE_WIDTH, MAP_VISIBLE_HEIGHT)); + m_framebuffer = FrameBufferPtr(new FrameBuffer(m_visibleSize.width() * NUM_TILE_PIXELS, m_visibleSize.height() * NUM_TILE_PIXELS)); g_graphics.bindColor(Fw::white); m_framebuffer->bind(); @@ -290,7 +295,8 @@ void Map::setVisibleSize(const Size& visibleSize) m_centralOffset = Point(std::ceil(m_visibleSize.width() / 2.0), std::ceil(m_visibleSize.height() / 2.0)); m_size = m_visibleSize + Size(3, 3); - m_framebuffer = FrameBufferPtr(new FrameBuffer(m_visibleSize.width() * NUM_TILE_PIXELS, m_visibleSize.height() * NUM_TILE_PIXELS)); + if(m_framebuffer) + m_framebuffer = FrameBufferPtr(new FrameBuffer(m_visibleSize.width() * NUM_TILE_PIXELS, m_visibleSize.height() * NUM_TILE_PIXELS)); } Point Map::positionTo2D(const Position& position) diff --git a/src/otclient/core/map.h b/src/otclient/core/map.h index 485336d4..e8a3845a 100644 --- a/src/otclient/core/map.h +++ b/src/otclient/core/map.h @@ -39,6 +39,8 @@ public: NUM_TILE_PIXELS = 32 }; + Map(); + void draw(const Rect& rect); void clean(); @@ -65,6 +67,7 @@ public: void removeCreatureById(uint32 id); void setVisibleSize(const Size& visibleSize); + Size getVibibleSize() { return m_visibleSize; } Point getCentralOffset() { return m_centralOffset; } Point positionTo2D(const Position& position); diff --git a/src/otclient/ui/uimap.cpp b/src/otclient/ui/uimap.cpp index 9e93eba6..ef793ab0 100644 --- a/src/otclient/ui/uimap.cpp +++ b/src/otclient/ui/uimap.cpp @@ -56,7 +56,7 @@ bool UIMap::onMousePress(const Point& mousePos, Fw::MouseButton button) { if(m_mapRect.contains(mousePos)) { Point relativeStretchMousePos = mousePos - m_mapRect.topLeft(); - Size mapSize(Map::MAP_VISIBLE_WIDTH * Map::NUM_TILE_PIXELS, Map::MAP_VISIBLE_HEIGHT * Map::NUM_TILE_PIXELS); + Size mapSize(g_map.getVibibleSize().width() * Map::NUM_TILE_PIXELS, g_map.getVibibleSize().height() * Map::NUM_TILE_PIXELS); PointF stretchFactor(m_mapRect.width() / (float)mapSize.width(), m_mapRect.height() / (float)mapSize.height()); PointF relativeMousePos = PointF(relativeStretchMousePos.x, relativeStretchMousePos.y) / stretchFactor; @@ -75,8 +75,18 @@ bool UIMap::onMousePress(const Point& mousePos, Fw::MouseButton button) void UIMap::onGeometryUpdate(const Rect& oldRect, const Rect& newRect) { Rect mapRect = newRect.expanded(-m_mapMargin-1); - Size mapSize(Map::MAP_VISIBLE_WIDTH * Map::NUM_TILE_PIXELS, Map::MAP_VISIBLE_HEIGHT * Map::NUM_TILE_PIXELS); + Size mapSize(g_map.getVibibleSize().width() * Map::NUM_TILE_PIXELS, g_map.getVibibleSize().height() * Map::NUM_TILE_PIXELS); mapSize.scale(mapRect.size(), Fw::KeepAspectRatio); + + + /*bool useHeight = ((float)mapRect.width() / mapRect.height() < (float)mapSize.width() / mapSize.height()); + if(useHeight) { + mapRect.setWidth(mapRect.height() * ((float)mapSize.width() / mapSize.height())); + } + else { + mapRect.setHeight(mapRect.width() * ((float)mapSize.width() / mapSize.height())); + }*/ + m_mapRect.setSize(mapSize); m_mapRect.moveCenter(newRect.center()); }