diff --git a/src/client/luafunctions.cpp b/src/client/luafunctions.cpp index 30bfec75..adb97749 100644 --- a/src/client/luafunctions.cpp +++ b/src/client/luafunctions.cpp @@ -463,6 +463,7 @@ void Client::registerLuaFunctions() g_lua.bindClassMemberFunction("getCount", &Item::getCount); g_lua.bindClassMemberFunction("getSubType", &Item::getSubType); g_lua.bindClassMemberFunction("getId", &Item::getId); + g_lua.bindClassMemberFunction("getServerId", &Item::getServerId); g_lua.bindClassMemberFunction("getName", &Item::getName); g_lua.bindClassMemberFunction("isStackable", &Item::isStackable); g_lua.bindClassMemberFunction("isMarketable", &Item::isMarketable); diff --git a/src/client/mapview.cpp b/src/client/mapview.cpp index fa55755d..99f9f22a 100644 --- a/src/client/mapview.cpp +++ b/src/client/mapview.cpp @@ -566,8 +566,29 @@ Position MapView::getPosition(const Point& point, const Size& mapSize) void MapView::move(int x, int y) { - m_moveOffset.x += x; - m_moveOffset.y += y; + if(m_moveOffset.x + x > 32) { + m_customCameraPosition.x += 1; + m_moveOffset.x = x; + requestVisibleTilesCacheUpdate(); + } else if(m_moveOffset.x - x < -32) { + m_customCameraPosition.x -= 1; + m_moveOffset.x = x; + requestVisibleTilesCacheUpdate(); + } else + m_moveOffset.x += x; + + if(m_moveOffset.y + y > 32) { + m_customCameraPosition.y += 1; + m_moveOffset.y = y; + requestVisibleTilesCacheUpdate(); + } else if(m_moveOffset.y - y < -32) { + m_customCameraPosition.y -= 1; + m_moveOffset.y = y; + requestVisibleTilesCacheUpdate(); + } else + m_moveOffset.y += y; + + g_logger.warning(stdext::format("move offset %d %d", m_moveOffset.x, m_moveOffset.y)); } Rect MapView::calcFramebufferSource(const Size& destSize)