fix some elevation issues

master
Eduardo Bart 12 years ago
parent 8c8749520d
commit 30330d1d2e

@ -216,8 +216,9 @@ void MapView::updateVisibleTilesCache(int start)
for(int iz = m_cachedLastVisibleFloor; iz >= m_cachedFirstVisibleFloor && !stop; --iz) {
if(m_viewRange <= FAR_VIEW) {
const int numDiagonals = m_drawDimension.width() + m_drawDimension.height() - 1;
// loop through / diagonals beginning at top left and going to top right
for(int diagonal = 0; diagonal < numDiagonals && !stop; ++diagonal) {
// loop through / diagonals beginning at top left and going to top right
// loop current diagonal tiles
for(int iy = std::min(diagonal, m_drawDimension.width() - 1), ix = std::max(diagonal - m_drawDimension.width() + 1, 0); iy >= 0 && ix < m_drawDimension.width() && !stop; --iy, ++ix) {
// only start really looking tiles in the desired start
if(count < start) {

@ -109,21 +109,21 @@ void Tile::draw(const Point& dest, float scaleFactor, int drawFlags)
for(auto it = m_things.rbegin(); it != m_things.rend(); ++it) {
CreaturePtr creature = (*it)->asCreature();
if(creature && (!creature->isWalking() || !animate))
creature->draw(dest - m_drawElevation, scaleFactor, animate);
creature->draw(dest - m_drawElevation*scaleFactor, scaleFactor, animate);
}
}
// effects
if(drawFlags & Otc::DrawEffects) {
for(const EffectPtr& effect : m_effects)
effect->draw(dest, scaleFactor, animate);
effect->draw(dest - m_drawElevation*scaleFactor, scaleFactor, animate);
}
// top items
if(drawFlags & Otc::DrawOnTop) {
for(const ThingPtr& thing : m_things) {
if(thing->isOnTop())
thing->draw(dest - m_drawElevation, scaleFactor, animate);
thing->draw(dest, scaleFactor, animate);
}
}
}

Loading…
Cancel
Save