Animations are now optional
The default behaviour is still there though.
This commit is contained in:
parent
4f997a3826
commit
eb4fb4ff41
|
@ -141,6 +141,10 @@ void Client::registerLuaFunctions()
|
||||||
g_lua.bindSingletonFunction("g_map", "getZoneColor", &Map::getZoneColor, &g_map);
|
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", "showZones", &Map::showZones, &g_map);
|
||||||
g_lua.bindSingletonFunction("g_map", "showZone", &Map::showZone, &g_map);
|
g_lua.bindSingletonFunction("g_map", "showZone", &Map::showZone, &g_map);
|
||||||
|
g_lua.bindSingletonFunction("g_map", "setForceShowAnimations", &Map::setForceShowAnimations, &g_map);
|
||||||
|
g_lua.bindSingletonFunction("g_map", "isForcingAnimations", &Map::isForcingAnimations, &g_map);
|
||||||
|
g_lua.bindSingletonFunction("g_map", "isShowingAnimations", &Map::isShowingAnimations, &g_map);
|
||||||
|
g_lua.bindSingletonFunction("g_map", "setShowAnimations", &Map::setShowAnimations, &g_map);
|
||||||
g_lua.bindSingletonFunction("g_map", "beginGhostMode", &Map::beginGhostMode, &g_map);
|
g_lua.bindSingletonFunction("g_map", "beginGhostMode", &Map::beginGhostMode, &g_map);
|
||||||
g_lua.bindSingletonFunction("g_map", "endGhostMode", &Map::endGhostMode, &g_map);
|
g_lua.bindSingletonFunction("g_map", "endGhostMode", &Map::endGhostMode, &g_map);
|
||||||
g_lua.bindSingletonFunction("g_map", "findItemsById", &Map::findItemsById, &g_map);
|
g_lua.bindSingletonFunction("g_map", "findItemsById", &Map::findItemsById, &g_map);
|
||||||
|
|
|
@ -39,6 +39,7 @@ TilePtr Map::m_nulltile;
|
||||||
void Map::init()
|
void Map::init()
|
||||||
{
|
{
|
||||||
resetAwareRange();
|
resetAwareRange();
|
||||||
|
m_animationFlags |= Animation_Show;
|
||||||
}
|
}
|
||||||
|
|
||||||
void Map::terminate()
|
void Map::terminate()
|
||||||
|
@ -363,6 +364,34 @@ void Map::setZoneColor(tileflags_t zone, const Color& color)
|
||||||
m_zoneColors[zone] = color;
|
m_zoneColors[zone] = color;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void Map::setForceShowAnimations(bool force)
|
||||||
|
{
|
||||||
|
if(force) {
|
||||||
|
if(!(m_animationFlags & Animation_Force))
|
||||||
|
m_animationFlags |= Animation_Force;
|
||||||
|
} else
|
||||||
|
m_animationFlags &= ~Animation_Force;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool Map::isForcingAnimations()
|
||||||
|
{
|
||||||
|
return (m_animationFlags & Animation_Force) == Animation_Force;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool Map::isShowingAnimations()
|
||||||
|
{
|
||||||
|
return (m_animationFlags & Animation_Show) == Animation_Show;
|
||||||
|
}
|
||||||
|
|
||||||
|
void Map::setShowAnimations(bool show)
|
||||||
|
{
|
||||||
|
if(show) {
|
||||||
|
if(!(m_animationFlags & Animation_Show))
|
||||||
|
m_animationFlags |= Animation_Show;
|
||||||
|
} else
|
||||||
|
m_animationFlags &= ~Animation_Show;
|
||||||
|
}
|
||||||
|
|
||||||
void Map::beginGhostMode(float opacity)
|
void Map::beginGhostMode(float opacity)
|
||||||
{
|
{
|
||||||
g_painter->setOpacity(opacity);
|
g_painter->setOpacity(opacity);
|
||||||
|
|
|
@ -93,6 +93,11 @@ enum {
|
||||||
BLOCK_SIZE = 32
|
BLOCK_SIZE = 32
|
||||||
};
|
};
|
||||||
|
|
||||||
|
enum : uint8 {
|
||||||
|
Animation_Force,
|
||||||
|
Animation_Show
|
||||||
|
};
|
||||||
|
|
||||||
class TileBlock {
|
class TileBlock {
|
||||||
public:
|
public:
|
||||||
TileBlock() { m_tiles.fill(nullptr); }
|
TileBlock() { m_tiles.fill(nullptr); }
|
||||||
|
@ -195,6 +200,11 @@ public:
|
||||||
bool showZones() { return m_zoneFlags != 0; }
|
bool showZones() { return m_zoneFlags != 0; }
|
||||||
bool showZone(tileflags_t zone) { return (m_zoneFlags & zone) == zone; }
|
bool showZone(tileflags_t zone) { return (m_zoneFlags & zone) == zone; }
|
||||||
|
|
||||||
|
void setForceShowAnimations(bool force);
|
||||||
|
bool isForcingAnimations();
|
||||||
|
bool isShowingAnimations();
|
||||||
|
void setShowAnimations(bool show);
|
||||||
|
|
||||||
void beginGhostMode(float opacity);
|
void beginGhostMode(float opacity);
|
||||||
void endGhostMode();
|
void endGhostMode();
|
||||||
|
|
||||||
|
@ -244,6 +254,7 @@ private:
|
||||||
std::vector<MapViewPtr> m_mapViews;
|
std::vector<MapViewPtr> m_mapViews;
|
||||||
std::unordered_map<Position, std::string, PositionHasher> m_waypoints;
|
std::unordered_map<Position, std::string, PositionHasher> m_waypoints;
|
||||||
|
|
||||||
|
uint8 m_animationFlags;
|
||||||
uint32 m_zoneFlags;
|
uint32 m_zoneFlags;
|
||||||
std::array<Color, TILESTATE_LAST> m_zoneColors;
|
std::array<Color, TILESTATE_LAST> m_zoneColors;
|
||||||
float m_zoneOpacity;
|
float m_zoneOpacity;
|
||||||
|
|
|
@ -85,11 +85,22 @@ void MapView::draw(const Rect& rect)
|
||||||
Position cameraPosition = getCameraPosition();
|
Position cameraPosition = getCameraPosition();
|
||||||
|
|
||||||
int drawFlags = 0;
|
int drawFlags = 0;
|
||||||
|
// First branch:
|
||||||
|
// This is unlikely to be false because a lot of us
|
||||||
|
// don't wanna hear their GPU fan while playing a
|
||||||
|
// 2D game.
|
||||||
|
//
|
||||||
|
// Second & Third branch:
|
||||||
|
// This is likely to be true since not many people have
|
||||||
|
// low-end graphics cards.
|
||||||
|
if(unlikely(g_map.isForcingAnimations()) || (likely(g_map.isShowingAnimations()) && m_viewMode == NEAR_VIEW))
|
||||||
|
drawFlags = Otc::DrawAnimations;
|
||||||
|
|
||||||
if(m_viewMode == NEAR_VIEW)
|
if(m_viewMode == NEAR_VIEW)
|
||||||
drawFlags = Otc::DrawGround | Otc::DrawGroundBorders | Otc::DrawWalls |
|
drawFlags |= Otc::DrawGround | Otc::DrawGroundBorders | Otc::DrawWalls |
|
||||||
Otc::DrawItems | Otc::DrawCreatures | Otc::DrawEffects | Otc::DrawMissiles | Otc::DrawAnimations;
|
Otc::DrawItems | Otc::DrawCreatures | Otc::DrawEffects | Otc::DrawMissiles;
|
||||||
else
|
else
|
||||||
drawFlags = Otc::DrawGround | Otc::DrawGroundBorders | Otc::DrawWalls | Otc::DrawItems;
|
drawFlags |= Otc::DrawGround | Otc::DrawGroundBorders | Otc::DrawWalls | Otc::DrawItems;
|
||||||
|
|
||||||
if(m_mustDrawVisibleTilesCache || (drawFlags & Otc::DrawAnimations)) {
|
if(m_mustDrawVisibleTilesCache || (drawFlags & Otc::DrawAnimations)) {
|
||||||
m_framebuffer->bind();
|
m_framebuffer->bind();
|
||||||
|
|
Loading…
Reference in New Issue