2023-06-05 00:12:17 +02:00
|
|
|
#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)
|
|
|
|
{
|
2023-07-01 20:06:53 +02:00
|
|
|
getUsedSpritePtr()->setSize(size);
|
2023-06-05 00:12:17 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
sf::Vector2f VersatileSprite::getSize() const
|
|
|
|
{
|
2023-07-01 20:06:53 +02:00
|
|
|
return getUsedSpritePtr()->getSize();
|
2023-06-05 00:12:17 +02:00
|
|
|
}
|
2023-06-17 19:48:51 +02:00
|
|
|
|
|
|
|
sf::Sprite VersatileSprite::getSprite() const
|
2023-07-01 20:06:53 +02:00
|
|
|
{
|
|
|
|
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)
|
|
|
|
{
|
2023-07-01 20:06:53 +02:00
|
|
|
return singleSprite;
|
2023-06-17 19:48:51 +02:00
|
|
|
} else if (animatedSprite != nullptr)
|
|
|
|
{
|
2023-07-01 20:06:53 +02:00
|
|
|
return animatedSprite;
|
2023-06-17 19:48:51 +02:00
|
|
|
} else
|
|
|
|
{
|
2023-07-01 20:06:53 +02:00
|
|
|
throw std::runtime_error("Versatile sprite has no sprite");
|
2023-06-17 19:48:51 +02:00
|
|
|
}
|
|
|
|
}
|