Files
SkyPlus/sources/CardMaker.cpp
2026-01-09 13:20:01 +01:00

63 lines
1.5 KiB
C++

#include <CardMaker.hpp>
/// Card
Card::Card(int value, std::shared_ptr<sf::Sprite> face,
std::shared_ptr<sf::Sprite> back)
: value_(value), face_(face), back_(back) {}
Card::~Card() {}
int Card::getValue() { return value_; }
std::shared_ptr<sf::Sprite> Card::getSprite() {
if (flipped_)
return face_;
return back_;
}
void Card::setPosition(sf::Vector2i vec) {
if (grabbed_)
face_->setPosition(vec.x - 15, vec.y - 25);
}
void Card::flip() {
if (!flipped_)
grabbed_ == true;
flipped_ = true;
}
/// CardMaker
CardMaker::CardMaker() {
std::string ext(".png");
std::string folder(ASSET_DIR);
for (int i = -2; i < 13; i++) {
auto tex = std::make_shared<sf::Texture>();
std::string name(std::to_string(i));
if (!tex->loadFromFile(folder + name + ext)) {
std::cerr << "Failed to load " << folder + name + ext << std::endl;
exit(1);
}
textures_[i] = tex;
}
auto tex = std::make_shared<sf::Texture>();
tex->loadFromFile(folder + "back.png");
textures_[CARD_BACK] = tex;
}
CardMaker::~CardMaker() {}
std::shared_ptr<Card> CardMaker::generate(int value) {
if (value < -2 || value > 12) {
std::cerr << "Trying to generate oob card nbr " << value << std::endl;
exit(1);
}
auto spr_face = std::make_shared<sf::Sprite>();
auto spr_back = std::make_shared<sf::Sprite>();
spr_face->setTexture(*textures_[value]);
spr_back->setTexture(*textures_[CARD_BACK]);
auto card = std::make_shared<Card>(value, spr_face, spr_back);
return card;
}