Page MenuHomePhabricator (Chris)

No OneTemporary

Authored By
Unknown
Size
7 KB
Referenced Files
None
Subscribers
None
diff --git a/cardsdeck.cpp b/cardsdeck.cpp
index 27331ac..cd20e05 100644
--- a/cardsdeck.cpp
+++ b/cardsdeck.cpp
@@ -1,136 +1,147 @@
#include "cardsdeck.h"
CardsDeck::CardsDeck(TextureHolder *textures, sf::Font *gameFont)
{
std::array<std::array<int,2>,4> cardsPos = {
{
{1087,95}, {1225, 95}, {1225, 277}, {1087, 277}
}
};
this->textures = textures;
for (int i=0;i<=3;i++)
{
// spriteCardBases[i].setTexture(this->textures->textureCardBases[i]);
spriteCardBases[i].setPosition(cardsPos[i][0],cardsPos[i][1]);
textPileTitle[i].setFont(*gameFont);
textPileTitle[i].setCharacterSize(10);
textPileTitle[i].setPosition(cardsPos[i][0]+10,cardsPos[i][1]+100);
for (int j=0;j<efc::cardsDistribution.size();j++)
{
int cardTypeInt = efc::cardsDistribution[j];
std::cout << cardTypeInt << std::endl;
cardsList[i].cardsPile[j].cardType = efc::cardsTypes[cardTypeInt];
cardsList[i].cardsPile[j].cardTypeInt = cardTypeInt;
spriteCardBases[i].setTexture(this->textures->cardsTextures[i][cardTypeInt]);
}
cardsList[i].shufflePile();
- nextCard(i);
+// nextCard(i);
setTitles(i);
}
}
void CardsDeck::draw(sf::RenderTarget& target, sf::RenderStates states) const
{
states.transform *= getTransform();
for (int i=0;i<=3;i++)
{
- if (cardsList[i].invisibleLeft==0.0f)
+ if ((cardsList[i].invisibleLeft==0.0f) and (cardsList[i].active))
{
target.draw(spriteCardBases[i], states);
target.draw(textPileTitle[i], states);
}
}
}
void CardsDeck::setTitles(int number)
{
int cardTypeInt = getCardTypeInt(number);
textPileTitle[number].setString(efc::cardsTypes[cardTypeInt]);
// int val = getCardTypeInt(number);
- std::cout <<number<< " << hjehe >> " << getTitle(number) << " " << cardTypeInt << std::endl;
+
spriteCardBases[number].setTexture(textures->cardsTextures[number][cardTypeInt]);
}
void CardsDeck::setSprites(int number)
{
// for (int i=0;i<=3;i++)
// {
// int val = getCardTypeInt(i);
// std::string title = getTitle(i);
// std::cout <<i<< " << hjehe >> " << val << std::endl;
// sf::Texture tmpText = textures->cardsTextures[i][val];
// spriteCardBases[i].setTexture(tmpText);
// }
}
void CardsDeck::setFonts(sf::Font *gameFont)
{
for (int i=0;i<=3;i++)
{
textPileTitle[i].setFont(*gameFont);
}
}
void CardsDeck::nextCard(int pileNumber)
{
- cardsList[pileNumber].invisibleLeft = 0.75f;
- int currentCard = getCurrentCard(pileNumber);
- currentCard += 1;
- std::cout << currentCard << " ccard" << std::endl;
- if ((currentCard>3) || (currentCard<0))
- currentCard = 0;
- cardsList[pileNumber].currentCard = currentCard;
- setTitles(pileNumber);
+ if (cardsList[pileNumber].active)
+ {
+ cardsList[pileNumber].invisibleLeft = 0.75f;
+ int currentCard = getCurrentCard(pileNumber);
+
+ if (currentCard>=efc::cardsDistribution.size()-1)
+ {
+ cardsList[pileNumber].active = false;
+
+ } else
+ {
+ currentCard += 1;
+ std::cout << currentCard << " ccard" << std::endl;
+ if ((currentCard>3) || (currentCard<0))
+ currentCard = 0;
+ cardsList[pileNumber].currentCard = currentCard;
+ setTitles(pileNumber);
+ }
+ }
// setSprites(pileNumber);
}
int CardsDeck::getCurrentCard(int pileNumber)
{
int currentCard = cardsList[pileNumber].currentCard;
return currentCard;
}
std::string CardsDeck::getTitle(int pileNumber)
{
std::string currentText = efc::cardsTypes[getCardTypeInt(pileNumber)];
return currentText;
}
int CardsDeck::getCardTypeInt(int pileNumber)
{
int result = cardsList[pileNumber].cardsPile[getCurrentCard(pileNumber)].cardTypeInt;
return result;
}
void CardsDeck::update(sf::Time deltaTime)
{
for (int i=0;i<=3;i++)
{
if (cardsList[i].invisibleLeft>0.0f)
{
cardsList[i].invisibleLeft -= deltaTime.asSeconds();
}
if (cardsList[i].invisibleLeft<0.0f)
{
cardsList[i].invisibleLeft = 0.0f;
}
}
}
diff --git a/cardsdeck.h b/cardsdeck.h
index d80a6b8..03009df 100644
--- a/cardsdeck.h
+++ b/cardsdeck.h
@@ -1,47 +1,42 @@
#ifndef CARDSDECK_H
#define CARDSDECK_H
#include <array>
#include <SFML/Graphics.hpp>
#include <iostream>
#include "textureholder.h"
#include "cardslist.h"
namespace efc {
const static std::array<std::string, 4> cardsTypes = {
"stop", "card", "diamond", "diamond x 2"
};
-const static std::array<int,32> cardsDistribution = {
- 0,0,0,0,0,0,0,0,
- 1,1,1,1,1,1,1,1,
- 2,2,2,2,2,2,2,2,2,2,
- 3,3,3,3,3,3
-};
+
}
class CardsDeck: public sf::Drawable, public sf::Transformable
{
public:
CardsDeck(TextureHolder *textures, sf::Font *gameFont);
std::array<CardsList, 4> cardsList;
std::array<sf::Sprite, 4> spriteCardBases;
std::array<sf::Text, 4> textPileTitle;
TextureHolder *textures;
void draw(sf::RenderTarget &target, sf::RenderStates states) const;
// void setTitles();
void setSprites(int number);
void setFonts(sf::Font *gameFont);
void nextCard(int pileNumber);
int getCurrentCard(int pileNumber);
std::string getTitle(int pileNumber);
void update(sf::Time deltaTime);
int getCardTypeInt(int pileNumber);
void setTitles(int number);
};
#endif // CARDSDECK_H
diff --git a/cardslist.cpp b/cardslist.cpp
index a097054..5ce04e8 100644
--- a/cardslist.cpp
+++ b/cardslist.cpp
@@ -1,32 +1,33 @@
#include "cardslist.h"
CardsList::CardsList():
currentCard(0),
- invisibleLeft(0)
+ invisibleLeft(0),
+ active(true)
{
}
CardsList::CardsList(int element)
{
amount = 32; //TODO: ???
this->element = element;
currentCard = 0;
- invisibleLeft = 0.0f;
+ invisibleLeft = 0.0f; // Transparency for effect
}
void CardsList::shufflePile()
{
std::srand(std::time(0));
unsigned seed = std::chrono::system_clock::now().time_since_epoch().count();
shuffle (cardsPile.begin(), cardsPile.end(), std::default_random_engine(seed));
}
//void CardsList::addCard(Card card)
//{
//}
diff --git a/cardslist.h b/cardslist.h
index 44973a3..ac2c908 100644
--- a/cardslist.h
+++ b/cardslist.h
@@ -1,38 +1,48 @@
#ifndef CARDSLIST_H
#define CARDSLIST_H
#include <vector>
#include <array>
#include <iostream> // std::cout
#include <algorithm> // std::shuffle
#include <random> // std::default_random_engine
#include <chrono> // std::chrono::system_clock
#include "card.h"
namespace efc {
- const static int PILE_SIZE = 32;
+ const static std::array<int,32> cardsDistributio2n = {
+ 0,0,0,0,0,0,0,0,
+ 1,1,1,1,1,1,1,1,
+ 2,2,2,2,2,2,2,2,2,2,
+ 3,3,3,3,3,3
+ };
+ const static std::array<int,2> cardsDistribution = {
+ 2,3
+ };
+ const static int PILE_SIZE = efc::cardsDistribution.size();
+
}
class CardsList
{
public:
CardsList(); // To create an array of CardsList
CardsList(int element);
int amount;
// std::vector<Card*> sd;
/*!
* \brief element Number of the element
*/
std::array<Card, efc::PILE_SIZE> cardsPile;
int currentCard;
int element; /*!< Number of the element */
-
+ bool active;
float invisibleLeft;
void shufflePile();
};
#endif // CARDSLIST_H

File Metadata

Mime Type
text/x-diff
Expires
Wed, Jun 17, 9:09 PM (1 w, 5 d ago)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
70980
Default Alt Text
(7 KB)

Event Timeline