diff --git a/src/client/thingtype.cpp b/src/client/thingtype.cpp index 12f4f2032e..07ed0139d0 100644 --- a/src/client/thingtype.cpp +++ b/src/client/thingtype.cpp @@ -758,23 +758,25 @@ void ThingType::loadTexture(const int animationPhase) return; if (!spriteImage) { - g_logger.error("Failed to fetch sprite id {} for thing {} ({}, {}), layer {}, pattern {}x{}x{}, frame {}", spriteId, m_name, m_id, categoryName(m_category), l, x, y, z, animationPhase); - return; - } - - // verifies that the first block in the lower right corner is transparent. - if (!spriteImage || spriteImage->hasTransparentPixel()) { - fullImage->setTransparentPixel(true); - } + if (spriteId != 0) { + g_logger.error("Failed to fetch sprite id {} for thing {} ({}, {}), layer {}, pattern {}x{}x{}, frame {}", spriteId, m_name, m_id, categoryName(m_category), l, x, y, z, animationPhase); + return; + } + } else { + // verifies that the first block in the lower right corner is transparent. + if (spriteImage->hasTransparentPixel()) { + fullImage->setTransparentPixel(true); + } - if (spriteMask) { - spriteImage->overwriteMask(maskColors[(l - 1)]); - } + if (spriteMask) { + spriteImage->overwriteMask(maskColors[(l - 1)]); + } - auto spriteSize = spriteImage->getSize() / g_gameConfig.getSpriteSize(); + auto spriteSize = spriteImage->getSize() / g_gameConfig.getSpriteSize(); - const Point& spritePos = Point(m_size.width() - spriteSize.width(), m_size.height() - spriteSize.height()) * g_gameConfig.getSpriteSize(); - fullImage->blit(framePos + spritePos, spriteImage); + const Point& spritePos = Point(m_size.width() - spriteSize.width(), m_size.height() - spriteSize.height()) * g_gameConfig.getSpriteSize(); + fullImage->blit(framePos + spritePos, spriteImage); + } } else { for (int h = 0; h < m_size.height(); ++h) { for (int w = 0; w < m_size.width(); ++w) { @@ -787,21 +789,23 @@ void ThingType::loadTexture(const int animationPhase) return; if (!spriteImage) { - g_logger.error("Failed to fetch sprite id {} for thing {} ({}, {}), layer {}, pattern {}x{}x{}, frame {}, offset {}x{}", spriteId, m_name, m_id, categoryName(m_category), l, x, y, z, framePos, w, h); - return; - } - - // verifies that the first block in the lower right corner is transparent. - if (h == 0 && w == 0 && (!spriteImage || spriteImage->hasTransparentPixel())) { - fullImage->setTransparentPixel(true); + if (spriteId != 0) { + g_logger.error("Failed to fetch sprite id {} for thing {} ({}, {}), layer {}, pattern {}x{}x{}, frame {}, offset {}x{}", spriteId, m_name, m_id, categoryName(m_category), l, x, y, z, framePos, w, h); + return; + } + } else { + // verifies that the first block in the lower right corner is transparent. + if (h == 0 && w == 0 && spriteImage->hasTransparentPixel()) { + fullImage->setTransparentPixel(true); + } + + if (spriteMask) { + spriteImage->overwriteMask(maskColors[(l - 1)]); + } + + const Point& spritePos = Point(m_size.width() - w - 1, m_size.height() - h - 1) * g_gameConfig.getSpriteSize(); + fullImage->blit(framePos + spritePos, spriteImage); } - - if (spriteMask) { - spriteImage->overwriteMask(maskColors[(l - 1)]); - } - - const Point& spritePos = Point(m_size.width() - w - 1, m_size.height() - h - 1) * g_gameConfig.getSpriteSize(); - fullImage->blit(framePos + spritePos, spriteImage); } } }