#include "versatile_sprite.hpp" #include "sprite_factory.hpp" #include "../texture_config.h" VersatileSprite::VersatileSprite(const std::string &name, sf::Vector2f size) { // Try to find in sprites if (all_sprites.find(name) != all_sprites.end()) { singleSprite = SpriteFactory::createSingleSprite(name, size); addChild(singleSprite); } else if (all_animations.find(name) != all_animations.end()) { animatedSprite = SpriteFactory::createAnimatedSprite(name, size); addChild(animatedSprite); } else { LOG(ERROR) << "Sprite " << name << " not found. Could not create versatile sprite."; return; } } void VersatileSprite::setSize(const sf::Vector2f &size) { getUsedSpritePtr()->setSize(size); } sf::Vector2f VersatileSprite::getSize() const { return getUsedSpritePtr()->getSize(); } sf::Sprite VersatileSprite::getSprite() const { return getUsedSpritePtr()->getSprite(); } void VersatileSprite::setRotation(float angle) { getUsedSpritePtr()->setRotation(angle); } std::shared_ptr VersatileSprite::getUsedSpritePtr() const { if (singleSprite != nullptr) { return singleSprite; } else if (animatedSprite != nullptr) { return animatedSprite; } else { throw std::runtime_error("Versatile sprite has no sprite"); } }