#include /// Card Card::Card(int value, std::shared_ptr face, std::shared_ptr back) : value_(value), face_(face), back_(back) {} Card::~Card() {} int Card::getValue() { return value_; } std::shared_ptr 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(); 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(); tex->loadFromFile(folder + "back.png"); textures_[CARD_BACK] = tex; } CardMaker::~CardMaker() {} std::shared_ptr 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(); auto spr_back = std::make_shared(); spr_face->setTexture(*textures_[value]); spr_back->setTexture(*textures_[CARD_BACK]); auto card = std::make_shared(value, spr_face, spr_back); return card; }