Brunot
Loading...
Searching...
No Matches
Table Class Reference

The component responsible for facilitating the gameplay. More...

#include <Table.h>

Inheritance diagram for Table:
[legend]
Collaboration diagram for Table:
[legend]

Public Member Functions

 Table ()
 Table (const Table &)
 Table (Table &&other) noexcept
auto operator= (const Table &) -> Table &=default
auto operator= (Table &&other) noexcept -> Table &=default
 ~Table () override=default
auto clone () const -> std::unique_ptr< GameObject > override
 makes a copy a GameObject even if it's held polymorphically
auto componentShowMenu () -> void override
auto onUpdate (float dt) -> void override
 called once every frame.
auto endWindow () -> void override
 currently unused, but intended to but was assumed to be necessary for a proper ImGui editor
auto onRender () -> void override
 called every frame after update has been called for every object.
auto onEnterEngine () -> void override
 hook that is called when a GameObject enters the Engine tree.
auto load (Stream &stream) -> void override
 Implementations will load the state of a GameObject from a th::Json Object.
auto save (Stream &stream) const -> void override
 Implementations will load the state of a GameObject to a th::Json object.
auto reloadCache () -> void
 Re-gets the players, board, and deck pointers.
auto dealCardToPlayer (int playerNumber) const -> void
 Draws a card from the deck and gives it to the player.
auto dealCardToPlayer (Player *player) const -> void
 Draws a card from the deck and gives it to the player.
auto fillPlayerHand (int playerNumber) const -> void
 Tells a player to draw cards until their hand is full.
auto fillPlayerHand (Player *player) -> void
 Tells a player to draw cards until their hand is full.
auto fillAllPlayerHands () -> void
 Tells all players to fill their hands until they reach the limit.
auto moveTurnForward () -> void
 Increments the turn counter and moves the selector to the right player.
auto goToWinScreen () const -> void
 Moves the game to the win screen.
Public Member Functions inherited from Component
auto getType () const -> ComponentTypeEnum
auto getKey () const -> Key override
 Generates a unique Key that corresponds to the GameObject.
auto showMenu () -> void override
 Called before update each frame, for calling ImGui editor code relevant to the gameObject.
auto getEntityParent () const -> Entity *
 gets the parent as an Entity.
Public Member Functions inherited from GameObject
 GameObject (std::string typeName, gobj::Type parentType, gobj::Type type)
 constructor for gameobject.
virtual ~GameObject ()
 destructor for GameObject.
 GameObject (const GameObject &other)
 Copy Constructor.
auto operator= (const GameObject &other) -> GameObject &
 copy assignment operator
 GameObject (GameObject &&other) noexcept
 Move constructor.
auto operator= (GameObject &&other) noexcept -> GameObject &
 Move assignment operator.
virtual auto update (float dt) -> void
 called once every frame.
virtual auto render () -> void
 called every frame after update has been called for every object.
virtual auto destroy () -> void
 Marks an GameObject to be destroyed.
virtual auto for_each (std::function< void(GameObject &)> func) -> void
 applies a function to every child.
virtual auto for_each (std::function< void(const GameObject &)> func) const -> void
 applies a const function to every child.
virtual auto getParent () const -> GameObject *
 Gets the parent of a GameObject.
virtual auto parentTo (GameObject *newParent) -> bool
 Sets the GameObject as a child of another GameObject.
auto getInternalParent () const -> GameObject *
 returns the actual owning parent of the GameObject
virtual auto addChild (std::unique_ptr< GameObject > newChild) -> bool
 Adds a child to a GameObject.
auto destroyed () const -> bool
auto getUUID () const -> gobj::UUID
auto isUUID (gobj::UUID compareUUID) const -> bool
auto getName () const -> const std::string &
 Gets the type of the object as a string.
auto getNickname () const -> const std::string &
 Gets the nickname (custom, writable name) of a GameObject.
void calculateFormattedName () const
auto getFormattedName () const -> const std::string &
 combines a GameObjects Type, Nickname, and UUID into one string, for use with logging.
auto nameEquals (const std::string &compareString) const -> bool
 check whether a GameObjects typeName is equivilent to a given string.
auto isType (gobj::Type otherType) const -> bool
 check whether the GameObject is the same as a given type.
auto getObjectType () const -> gobj::Type
 gets the internal type of the GameObject, as an enum
auto setNickname (const std::string &newNickname) -> void
 sets the GameObjects nickname.
auto updates () const -> bool
auto renders () const -> bool
auto receivesMessages () const -> bool
auto isActive () const -> bool
virtual auto setShouldUpdate (const bool _shouldUpdate) -> void
 set whether the GameObject should update every frame, and whether all of it's children should update every frame
virtual auto setShouldRender (const bool _shouldRender) -> void
 set whether the GameObject should render every frame, and whether all of it's children should render every frame
virtual auto setShouldReceiveMessages (const bool _shouldReceiveMessages) -> void
 set whether the GameObject should Receive Messags, and whether all of it's children should receive messages
auto setActive (const bool shouldBeActive) -> void
 set the GameObject should update, render, and receive messages

Private Member Functions

auto moveSelectorToBoard () -> void
 Moves selector to the board. Used when a card is selected in a players hand.
auto moveSelectorToPlayer (int playerNumber) const -> void
 Moves the selector to a player based on their index in the players vector.
auto moveSelectorToPlayer (Player *player) const -> void
 Moves the selector to a specified player.
auto moveSelectorToLastPlayedCard () -> void
 Moves the selector to lastSelectedCard, which is set every time a card is selected in a players hand.
auto moveSelectorToLastSelectedTile () -> void
 Moves the selector to the last selected tile, which is set every time a card is played on the board.
auto updatePlayerScoreText (int playerNumber) -> void
 Updates the text displayed for a players score.
auto updatedCardsPlayedThisTurn () -> void
 Sets "playedThisTurn" for cards played this turn to false, then empties the vector Typically called at the end of a players turn.
auto updateCardsPlayedText () -> void
 Sets the text on screen to match the "numberOfCardsPlayedThisTurn" variable.
auto updateCardsInDeckText () -> void
 Updates the text on screen to be the size of the Deck.
auto getCurrentPlayerNumber () const -> int
 Gets who the current player should be based on the turn.
auto getCurrentPlayer () const -> Player *
 Gets who the current player should be based on the turn.
auto getWinningPlayer () const -> Player *
auto arePlayersEmpty () const -> bool
 Checks if all players have empty hands.
auto reloadPlayers () -> void
 Gets all the pointers of the Player components for "players" in the cache.
auto reloadBoard () -> void
 Gets the pointer to the board component for "board" in the cache.
auto reloadDeck () -> void
 Gets the pointer to the deck component for "deck" in the cache.
auto reloadSelector () -> void
 Gets the pointer to the selector entity being used for gameplay for the cache Currently checks player1 for the selector.
auto resetScores () -> void
 Sets all the scores to 0.
auto resetTable () -> void
 Resets everything on the table to the start of a new round.
auto playHandScoredSound () -> void
 Plays the sound effect for scoring a hand.
auto generatePlayerScoresData () const -> Stream
 Generates a Stream (json object) that has the player number and their corresponding score in descending order.
auto receiveResetTable (const Message *message) -> Message
 Resets the table to prepare it for a new game.
auto receiveCardSelected (const Message *message) -> Message
 Moves the selector from the player hand to the board.
auto receiveCardDeselected (const Message *message) -> Message
 Moves the selector from the board to the player hand.
auto receiveCardPlayedOnBoard (const Message *message) -> Message
 Moves the selector back to the player hand, unless it is the next players turn.
auto receiveEndTurn (const Message *message) -> Message
 Ends the current player's turn.
auto receiveAddScore (const Message *message) -> Message
 Cheat code that adds score to the current player.
auto receiveDrawCard (const Message *message) -> Message
 Cheat code that draws a card to the current player.
auto receiveGoToWinScreen (const Message *message) -> Message
 Cheat code that ends the game immediately and goes to the win screen.
auto linkMessages () -> void

Private Attributes

std::vector< Player * > players
 We cache the players so we don't need to get it all the time.
Boardboard
 We cache the board so we don't need to get it all the time.
Deckdeck
 We cache the deck so we don't need to get it all the time.
Entityselector
 We cache the Selector so we don't need to get it all the time.
std::vector< Card * > cardsPlayedThisTurn
 Vector of all cards that have been played, primarily used for updating the "playedThisTurn" variable inside of Card.
std::vector< int > playerScores
 Scores for each player for the current game.
int turn
 Tracker of how many times a player has played their cards on the board. Starts at 0.
int numberOfCardsPlayedThisTurn
 Tracker for if the player can play more cards or not.
CardlastSelectedCard
 Tracker of the last selected card, so we know what we're playing.
EntitylastSelectedTile
 Tracker of the last selected board tile, so the player doesn't start in the bottom left every time.
GameRules gameRules
 Ruleset to follow for things like cards in hand, size of board, etc.

Friends

auto to_json (json &j, const Table &t) ->void
auto from_json (const json &j, Table &t) ->void

Additional Inherited Members

Public Types inherited from Component
enum  ComponentTypeEnum : unsigned short {
  cErrorType = 0 , cPhysics = 100 , cAnimation = 200 , cTransform = 300 ,
  cCollider = 400 , cSprite = 500 , cBehavior = 600 , cTable = 650 ,
  cCard = 700 , cDeck = 750 , cPlayer = 800 , cBoard = 850 ,
  cScene = 900 , cPauseScene = 915 , cMainScene = 920 , cMainMenuScene = 925 ,
  cConfirmDestructiveActionScene = 930 , cOptionsScene = 935 , cCreditsScene = 940 , cTutorialScene = 945 ,
  cBackground = 950 , cSplashScreenScene = 955 , cWinScreenScene = 960 , cFlags = 1000 ,
  cSelectable = 1100 , cMenu = 1200 , cActionProxy = 1300 , cEntityMover = 1400 ,
  cMenuItem = 1500 , cMenuPosition = 1525 , cSelector = 1600 , cButton = 1700
}
 This enum lists out every type of component we have. More...
Public Attributes inherited from GameObject
friend Entity
friend Node
friend ChildrenHandeler
friend Engine
Protected Member Functions inherited from Component
 Component (ComponentTypeEnum type, const char *typeName)
auto getComponentJson () const -> json
auto getChildren () const -> std::shared_ptr< std::vector< GameObject * > > override
 override for component to return a vector of no children
Protected Member Functions inherited from GameObject
auto setInternalParent (GameObject *parent) -> bool
 sets the internal parent of a GameObject directly, avoiding abstractions provided by ParentTo().
auto getGameObjectJson () const -> json
 Used for serializing GameObjects.
auto setGameObjectJson (const json &stream) -> void
 used for deserializing GameObjects
auto checkAddToSceneHook () -> void
 Determine if the GameObject was recently added to the engine, and if it was, call onEngineEnter.

Detailed Description

The component responsible for facilitating the gameplay.

@Table.h

Constructor & Destructor Documentation

◆ Table() [1/3]

Table::Table ( )
Here is the call graph for this function:
Here is the caller graph for this function:

◆ Table() [2/3]

Table::Table ( const Table & other)
Here is the call graph for this function:

◆ Table() [3/3]

Table::Table ( Table && other)
noexcept
Here is the call graph for this function:

◆ ~Table()

Table::~Table ( )
overridedefault

Member Function Documentation

◆ arePlayersEmpty()

auto Table::arePlayersEmpty ( ) const->bool
private

Checks if all players have empty hands.

Returns
Here is the caller graph for this function:

◆ clone()

auto Table::clone ( ) const->std::unique_ptr< GameObject >
inlineoverridevirtual

makes a copy a GameObject even if it's held polymorphically

Warning
When overriding this function, make sure to set the parents object to this
Returns
a unique_ptr to a new stack allocated object that is a copy of the object

Implements GameObject.

Here is the call graph for this function:

◆ componentShowMenu()

auto Table::componentShowMenu ( ) ->void
overridevirtual

Reimplemented from Component.

◆ dealCardToPlayer() [1/2]

auto Table::dealCardToPlayer ( int playerNumber) const->void

Draws a card from the deck and gives it to the player.

Parameters
playerNumberThe index of the player in the "players" vector that should draw a card
Here is the call graph for this function:
Here is the caller graph for this function:

◆ dealCardToPlayer() [2/2]

auto Table::dealCardToPlayer ( Player * player) const->void

Draws a card from the deck and gives it to the player.

Parameters
playerThe player who should draw a card

◆ endWindow()

auto Table::endWindow ( ) ->void
inlineoverridevirtual

currently unused, but intended to but was assumed to be necessary for a proper ImGui editor

Implements GameObject.

◆ fillAllPlayerHands()

auto Table::fillAllPlayerHands ( ) ->void

Tells all players to fill their hands until they reach the limit.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ fillPlayerHand() [1/2]

auto Table::fillPlayerHand ( int playerNumber) const->void

Tells a player to draw cards until their hand is full.

Parameters
playerNumberThe index of the player in the "players" vector that should draw cards
Here is the call graph for this function:
Here is the caller graph for this function:

◆ fillPlayerHand() [2/2]

auto Table::fillPlayerHand ( Player * player) ->void

Tells a player to draw cards until their hand is full.

Parameters
playerThe player that should draw the cards
Here is the call graph for this function:

◆ generatePlayerScoresData()

auto Table::generatePlayerScoresData ( ) const->Stream
private

Generates a Stream (json object) that has the player number and their corresponding score in descending order.

Returns
A stream containing all the data of the players (player number and score)
Here is the call graph for this function:
Here is the caller graph for this function:

◆ getCurrentPlayer()

auto Table::getCurrentPlayer ( ) const->Player *
private

Gets who the current player should be based on the turn.

Returns
A pointer to the player
Here is the call graph for this function:
Here is the caller graph for this function:

◆ getCurrentPlayerNumber()

auto Table::getCurrentPlayerNumber ( ) const->int
private

Gets who the current player should be based on the turn.

Returns
the index of the player inside of the "players" vector
Note
This starts at 0, so if you are doing public facing text, add 1 to this number
Here is the caller graph for this function:

◆ getWinningPlayer()

auto Table::getWinningPlayer ( ) const->Player *
private

◆ goToWinScreen()

auto Table::goToWinScreen ( ) const->void

Moves the game to the win screen.

Called when all cards have been played

Here is the call graph for this function:
Here is the caller graph for this function:

◆ linkMessages()

auto Table::linkMessages ( ) ->void
private
Here is the call graph for this function:
Here is the caller graph for this function:

◆ load()

auto Table::load ( Stream & stream) ->void
overridevirtual

Implementations will load the state of a GameObject from a th::Json Object.

Unimplemented in GameObject

Parameters
streamth::Json Object

Implements GameObject.

◆ moveSelectorToBoard()

auto Table::moveSelectorToBoard ( ) ->void
private

Moves selector to the board. Used when a card is selected in a players hand.

Here is the caller graph for this function:

◆ moveSelectorToLastPlayedCard()

auto Table::moveSelectorToLastPlayedCard ( ) ->void
private

Moves the selector to lastSelectedCard, which is set every time a card is selected in a players hand.

Here is the caller graph for this function:

◆ moveSelectorToLastSelectedTile()

auto Table::moveSelectorToLastSelectedTile ( ) ->void
private

Moves the selector to the last selected tile, which is set every time a card is played on the board.

◆ moveSelectorToPlayer() [1/2]

auto Table::moveSelectorToPlayer ( int playerNumber) const->void
private

Moves the selector to a player based on their index in the players vector.

Parameters
playerNumberThe index of the player in the players vector. Needs to a valid index
Here is the call graph for this function:
Here is the caller graph for this function:

◆ moveSelectorToPlayer() [2/2]

auto Table::moveSelectorToPlayer ( Player * player) const->void
private

Moves the selector to a specified player.

Parameters
playerThe player to move the selector to

◆ moveTurnForward()

auto Table::moveTurnForward ( ) ->void

Increments the turn counter and moves the selector to the right player.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ onEnterEngine()

auto Table::onEnterEngine ( ) ->void
overridevirtual

hook that is called when a GameObject enters the Engine tree.

The hook is called immedietly after a gameobject's parent is called. Functionality may not be correct if an object was removed from the engine then re-added

Prepare the board for a new round

Reimplemented from GameObject.

Here is the call graph for this function:

◆ onRender()

auto Table::onRender ( ) ->void
overridevirtual

called every frame after update has been called for every object.

Generally used for rendering an object to the screen, when applicable. Unimplemented in GameObject

Implements GameObject.

◆ onUpdate()

auto Table::onUpdate ( float dt) ->void
overridevirtual

called once every frame.

Generally used for timers, movement, condition checks, etc. Unimplemented in GameObject

Parameters
dtthe time in seconds that has elapsed

Implements GameObject.

◆ operator=() [1/2]

auto Table::operator= ( const Table & ) ->Table &=default
default
Here is the call graph for this function:

◆ operator=() [2/2]

auto Table::operator= ( Table && other) ->Table &=default
defaultnoexcept
Here is the call graph for this function:

◆ playHandScoredSound()

auto Table::playHandScoredSound ( ) ->void
private

Plays the sound effect for scoring a hand.

Used after a players turn ends

Here is the call graph for this function:
Here is the caller graph for this function:

◆ receiveAddScore()

auto Table::receiveAddScore ( const Message * message) ->Message
private

Cheat code that adds score to the current player.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ receiveCardDeselected()

auto Table::receiveCardDeselected ( const Message * message) ->Message
private

Moves the selector from the board to the player hand.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ receiveCardPlayedOnBoard()

auto Table::receiveCardPlayedOnBoard ( const Message * message) ->Message
private

Moves the selector back to the player hand, unless it is the next players turn.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ receiveCardSelected()

auto Table::receiveCardSelected ( const Message * message) ->Message
private

Moves the selector from the player hand to the board.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ receiveDrawCard()

auto Table::receiveDrawCard ( const Message * message) ->Message
private

Cheat code that draws a card to the current player.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ receiveEndTurn()

auto Table::receiveEndTurn ( const Message * message) ->Message
private

Ends the current player's turn.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ receiveGoToWinScreen()

auto Table::receiveGoToWinScreen ( const Message * message) ->Message
private

Cheat code that ends the game immediately and goes to the win screen.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ receiveResetTable()

auto Table::receiveResetTable ( const Message * message) ->Message
private

Resets the table to prepare it for a new game.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ reloadBoard()

auto Table::reloadBoard ( ) ->void
private

Gets the pointer to the board component for "board" in the cache.

Here is the caller graph for this function:

◆ reloadCache()

auto Table::reloadCache ( ) ->void

Re-gets the players, board, and deck pointers.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ reloadDeck()

auto Table::reloadDeck ( ) ->void
private

Gets the pointer to the deck component for "deck" in the cache.

Here is the caller graph for this function:

◆ reloadPlayers()

auto Table::reloadPlayers ( ) ->void
private

Gets all the pointers of the Player components for "players" in the cache.

Here is the caller graph for this function:

◆ reloadSelector()

auto Table::reloadSelector ( ) ->void
private

Gets the pointer to the selector entity being used for gameplay for the cache Currently checks player1 for the selector.

This needs to be updated if/when we move the default location of the selector

Here is the call graph for this function:
Here is the caller graph for this function:

◆ resetScores()

auto Table::resetScores ( ) ->void
private

Sets all the scores to 0.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ resetTable()

auto Table::resetTable ( ) ->void
private

Resets everything on the table to the start of a new round.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ save()

auto Table::save ( Stream & stream) const->void
overridevirtual

Implementations will load the state of a GameObject to a th::Json object.

Unimplemented in GameObject

Parameters
streamth::Json Object

Implements GameObject.

◆ updateCardsInDeckText()

auto Table::updateCardsInDeckText ( ) ->void
private

Updates the text on screen to be the size of the Deck.

Here is the caller graph for this function:

◆ updateCardsPlayedText()

auto Table::updateCardsPlayedText ( ) ->void
private

Sets the text on screen to match the "numberOfCardsPlayedThisTurn" variable.

Here is the caller graph for this function:

◆ updatedCardsPlayedThisTurn()

auto Table::updatedCardsPlayedThisTurn ( ) ->void
private

Sets "playedThisTurn" for cards played this turn to false, then empties the vector Typically called at the end of a players turn.

◆ updatePlayerScoreText()

auto Table::updatePlayerScoreText ( int playerNumber) ->void
private

Updates the text displayed for a players score.

Should be called every time score changes

Parameters
playerNumberThe player who's score you want to update
Here is the caller graph for this function:

◆ from_json

auto from_json ( const json & j,
Table & t )->void
friend

◆ to_json

auto to_json ( json & j,
const Table & t )->void
friend

Member Data Documentation

◆ board

Board* Table::board
private

We cache the board so we don't need to get it all the time.

◆ cardsPlayedThisTurn

std::vector<Card*> Table::cardsPlayedThisTurn
private

Vector of all cards that have been played, primarily used for updating the "playedThisTurn" variable inside of Card.

◆ deck

Deck* Table::deck
private

We cache the deck so we don't need to get it all the time.

◆ gameRules

GameRules Table::gameRules
private

Ruleset to follow for things like cards in hand, size of board, etc.

◆ lastSelectedCard

Card* Table::lastSelectedCard
private

Tracker of the last selected card, so we know what we're playing.

◆ lastSelectedTile

Entity* Table::lastSelectedTile
private

Tracker of the last selected board tile, so the player doesn't start in the bottom left every time.

◆ numberOfCardsPlayedThisTurn

int Table::numberOfCardsPlayedThisTurn
private

Tracker for if the player can play more cards or not.

◆ players

std::vector<Player*> Table::players
private

We cache the players so we don't need to get it all the time.

◆ playerScores

std::vector<int> Table::playerScores
private

Scores for each player for the current game.

◆ selector

Entity* Table::selector
private

We cache the Selector so we don't need to get it all the time.

◆ turn

int Table::turn
private

Tracker of how many times a player has played their cards on the board. Starts at 0.


The documentation for this class was generated from the following files:
  • /home/egrazil/sites/Brunot/The House/source/Component/Table.h
  • /home/egrazil/sites/Brunot/The House/source/Component/Table.cpp