holesome/src/sprites/versatile_sprite.cpp

56 lines
1.3 KiB
C++
Raw Normal View History

#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();
}
2023-06-17 19:48:51 +02:00
sf::Sprite VersatileSprite::getSprite() const
{
return getUsedSpritePtr()->getSprite();
}
void VersatileSprite::setRotation(float angle)
{
getUsedSpritePtr()->setRotation(angle);
}
std::shared_ptr<Sprite> VersatileSprite::getUsedSpritePtr() const
2023-06-17 19:48:51 +02:00
{
if (singleSprite != nullptr)
{
return singleSprite;
2023-06-17 19:48:51 +02:00
} else if (animatedSprite != nullptr)
{
return animatedSprite;
2023-06-17 19:48:51 +02:00
} else
{
throw std::runtime_error("Versatile sprite has no sprite");
2023-06-17 19:48:51 +02:00
}
}