Page Menu
Home
Phabricator (Chris)
Search
Configure Global Search
Log In
Files
F133887
No One
Temporary
Actions
View File
Edit File
Delete File
View Transforms
Subscribe
Flag For Later
Award Token
Authored By
Unknown
Size
7 KB
Referenced Files
None
Subscribers
None
View Options
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
Details
Attached
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)
Attached To
Mode
R82 deerportal
Attached
Detach File
Event Timeline