Introduce 4 new functions:

- g_map.beginGhostMode(float opacity)
- g_map.endGhostMode()
- UIMap::movePixels(int x, int y)
- MapView::move(int x, int y)
This commit is contained in:
Ahmed Samy 2013-08-30 01:54:36 +00:00
parent 3db8f54aa9
commit 56d6ef6642
7 changed files with 37 additions and 0 deletions

View File

@ -138,6 +138,8 @@ void Client::registerLuaFunctions()
g_lua.bindSingletonFunction("g_map", "getZoneColor", &Map::getZoneColor, &g_map);
g_lua.bindSingletonFunction("g_map", "showZones", &Map::showZones, &g_map);
g_lua.bindSingletonFunction("g_map", "showZone", &Map::showZone, &g_map);
g_lua.bindSingletonFunction("g_map", "beginGhostMode", &Map::beginGhostMode, &g_map);
g_lua.bindSingletonFunction("g_map", "endGhostMode", &Map::endGhostMode, &g_map);
g_lua.registerSingletonClass("g_minimap");
g_lua.bindSingletonFunction("g_minimap", "clean", &Minimap::clean, &g_minimap);
@ -578,6 +580,7 @@ void Client::registerLuaFunctions()
g_lua.registerClass<UIMap, UIWidget>();
g_lua.bindClassStaticFunction<UIMap>("create", []{ return UIMapPtr(new UIMap); });
g_lua.bindClassMemberFunction<UIMap>("drawSelf", &UIMap::drawSelf);
g_lua.bindClassMemberFunction<UIMap>("movePixels", &UIMap::movePixels);
g_lua.bindClassMemberFunction<UIMap>("setZoom", &UIMap::setZoom);
g_lua.bindClassMemberFunction<UIMap>("zoomIn", &UIMap::zoomIn);
g_lua.bindClassMemberFunction<UIMap>("zoomOut", &UIMap::zoomOut);

View File

@ -365,6 +365,16 @@ void Map::setZoneColor(tileflags_t zone, const Color& color)
m_zoneColors[zone] = color;
}
void Map::beginGhostMode(float opacity)
{
g_painter->setOpacity(opacity);
}
void Map::endGhostMode()
{
g_painter->resetOpacity();
}
void Map::addCreature(const CreaturePtr& creature)
{
m_knownCreatures[creature->getId()] = creature;

View File

@ -194,6 +194,9 @@ public:
bool showZones() { return m_zoneFlags != 0; }
bool showZone(tileflags_t zone) { return (m_zoneFlags & zone) == zone; }
void beginGhostMode(float opacity);
void endGhostMode();
// known creature related
void addCreature(const CreaturePtr& creature);
CreaturePtr getCreatureById(uint32 id);

View File

@ -564,12 +564,20 @@ Position MapView::getPosition(const Point& point, const Size& mapSize)
return position;
}
void MapView::move(int x, int y)
{
m_moveOffset.x = x;
m_moveOffset.y = y;
}
Rect MapView::calcFramebufferSource(const Size& destSize)
{
float scaleFactor = m_tileSize/(float)Otc::TILE_PIXELS;
Point drawOffset = ((m_drawDimension - m_visibleDimension - Size(1,1)).toPoint()/2) * m_tileSize;
if(isFollowingCreature())
drawOffset += m_followingCreature->getWalkOffset() * scaleFactor;
else if(!m_moveOffset.isNull())
drawOffset += m_moveOffset * scaleFactor;
Size srcSize = destSize;
Size srcVisible = m_visibleDimension * m_tileSize;
@ -703,3 +711,5 @@ void MapView::setDrawLights(bool enable)
m_lightView = nullptr;
m_drawLights = enable;
}
/* vim: set ts=4 sw=4 et: */

View File

@ -108,6 +108,8 @@ public:
void setDrawLights(bool enable);
bool isDrawingLights() { return m_drawLights; }
void move(int x, int y);
void setAnimated(bool animated) { m_animated = animated; requestVisibleTilesCacheUpdate(); }
bool isAnimating() { return m_animated; }
@ -139,6 +141,7 @@ private:
Size m_optimizedSize;
Point m_virtualCenterOffset;
Point m_visibleCenterOffset;
Point m_moveOffset;
Position m_customCameraPosition;
stdext::boolean<true> m_mustUpdateVisibleTilesCache;
stdext::boolean<true> m_mustDrawVisibleTilesCache;

View File

@ -70,6 +70,11 @@ void UIMap::drawSelf(Fw::DrawPane drawPane)
}
}
void UIMap::movePixels(int x, int y)
{
m_mapView->move(x, y);
}
bool UIMap::setZoom(int zoom)
{
m_zoom = std::min(std::max(zoom, m_maxZoomIn), m_maxZoomOut);
@ -215,3 +220,5 @@ void UIMap::updateMapSize()
if(!m_keepAspectRatio)
updateVisibleDimension();
}
/* vim: set ts=4 sw=4 et: */

View File

@ -37,6 +37,7 @@ public:
void drawSelf(Fw::DrawPane drawPane);
void movePixels(int x, int y);
bool setZoom(int zoom);
bool zoomIn();
bool zoomOut();