63 lines
1.5 KiB
C++
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;
|
|
}
|