added more animations (im just stalling the inevitable eventually i will have to sit down and write a proper event system but for now i am just making these animatons)

This commit is contained in:
Lauchmelder 2022-01-16 16:56:24 +01:00
parent 758d577609
commit dd671571b0
10 changed files with 106 additions and 23 deletions

View file

@ -11,11 +11,23 @@ Board::Board(Game* parent) :
void Board::RevealCard()
{
openCards.push_back(parent->GetStack().DrawCard());
if (callback)
callback(openCards.back());
if (revealCallback)
revealCallback(openCards.back());
}
void Board::Cleanup()
{
openCards.clear();
if (cleanupCallback)
cleanupCallback();
}
void Board::SetRevealCallback(RevealCallbackFunc callbackFunc)
{
callback = callbackFunc;
revealCallback = callbackFunc;
}
void Board::SetCleanupCallback(CleanupCallbackFunc callbackFunc)
{
cleanupCallback = callbackFunc;
}

View file

@ -6,22 +6,33 @@
#include "Card.hpp"
typedef std::function<void(std::shared_ptr<Card>)> RevealCallbackFunc;
typedef std::function<void(void)> CleanupCallbackFunc;
class Game;
enum class BoardState
{
Empty,
HasCards,
C
};
class Board
{
public:
Board(Game* parent);
void RevealCard();
void Cleanup();
inline const std::vector<std::shared_ptr<Card>>& GetOpenCards() { return openCards; }
void SetRevealCallback(RevealCallbackFunc callbackFunc);
void SetCleanupCallback(CleanupCallbackFunc callbackFunc);
private:
std::vector<std::shared_ptr<Card>> openCards;
RevealCallbackFunc callback;
RevealCallbackFunc revealCallback;
CleanupCallbackFunc cleanupCallback;
Game* parent;
};

View file

@ -16,7 +16,7 @@ CardStack::CardStack()
}
// Shuffle stack
std::default_random_engine engine(time(0));
std::default_random_engine engine(std::chrono::steady_clock::now().time_since_epoch().count());
std::shuffle(stack.begin(), stack.end(), engine);
}

View file

@ -11,4 +11,10 @@ void Game::Setup()
// Put 8 cards on the table
for (int i = 0; i < 8; i++)
board.RevealCard();
}
}
void Game::Cleanup()
{
stack = CardStack();
board.Cleanup();
}

View file

@ -10,6 +10,7 @@ public:
~Game() {}
void Setup();
void Cleanup();
inline CardStack& GetStack() { return stack; }
inline Board& GetBoard() { return board; }