Initial commit
This commit is contained in:
62
sources/CardMaker.cpp
Normal file
62
sources/CardMaker.cpp
Normal file
@@ -0,0 +1,62 @@
|
||||
#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;
|
||||
}
|
||||
36
sources/main.cpp
Normal file
36
sources/main.cpp
Normal file
@@ -0,0 +1,36 @@
|
||||
#include <SFML/Graphics.hpp>
|
||||
#include <SFML/Window.hpp>
|
||||
|
||||
#include <iostream>
|
||||
#include <vector>
|
||||
|
||||
#include <CardMaker.hpp>
|
||||
|
||||
int main() {
|
||||
sf::RenderWindow win(sf::VideoMode(800, 600), "Skyjo", sf::Style::Default);
|
||||
CardMaker cm;
|
||||
auto card = cm.generate(5);
|
||||
card->flip();
|
||||
|
||||
win.create(sf::VideoMode(800, 600), "Skyjo");
|
||||
while (win.isOpen()) {
|
||||
sf::Event ev;
|
||||
|
||||
while (win.pollEvent(ev)) {
|
||||
if (ev.type == sf::Event::Closed) {
|
||||
win.close();
|
||||
}
|
||||
}
|
||||
if (sf::Mouse::isButtonPressed(sf::Mouse::Left))
|
||||
card->flip();
|
||||
// Clear frame buffer
|
||||
win.clear(sf::Color::Black);
|
||||
card->setPosition(sf::Mouse::getPosition(win));
|
||||
// Draw sprite
|
||||
win.draw(*card->getSprite());
|
||||
|
||||
// Draw frame buffer
|
||||
win.display();
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
Reference in New Issue
Block a user