|
Brunot
|
The component responsible for facilitating the gameplay. More...
#include <Table.h>
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. | |
| Board * | board |
| We cache the board so we don't need to get it all the time. | |
| Deck * | deck |
| We cache the deck so we don't need to get it all the time. | |
| Entity * | selector |
| 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. | |
| Card * | lastSelectedCard |
| Tracker of the last selected card, so we know what we're playing. | |
| Entity * | lastSelectedTile |
| 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. | |
The component responsible for facilitating the gameplay.
@Table.h
| Table::Table | ( | ) |
| Table::Table | ( | const Table & | other | ) |
|
noexcept |
|
overridedefault |
|
private |
Checks if all players have empty hands.
|
inlineoverridevirtual |
makes a copy a GameObject even if it's held polymorphically
Implements GameObject.
|
overridevirtual |
Reimplemented from Component.
| auto Table::dealCardToPlayer | ( | int | playerNumber | ) | const->void |
Draws a card from the deck and gives it to the player.
| playerNumber | The index of the player in the "players" vector that should draw a card |
| auto Table::dealCardToPlayer | ( | Player * | player | ) | const->void |
Draws a card from the deck and gives it to the player.
| player | The player who should draw a card |
|
inlineoverridevirtual |
currently unused, but intended to but was assumed to be necessary for a proper ImGui editor
Implements GameObject.
| auto Table::fillAllPlayerHands | ( | ) | ->void |
Tells all players to fill their hands until they reach the limit.
| auto Table::fillPlayerHand | ( | int | playerNumber | ) | const->void |
Tells a player to draw cards until their hand is full.
| playerNumber | The index of the player in the "players" vector that should draw cards |
| auto Table::fillPlayerHand | ( | Player * | player | ) | ->void |
Tells a player to draw cards until their hand is full.
| player | The player that should draw the cards |
|
private |
Generates a Stream (json object) that has the player number and their corresponding score in descending order.
|
private |
Gets who the current player should be based on the turn.
|
private |
Gets who the current player should be based on the turn.
|
private |
| auto Table::goToWinScreen | ( | ) | const->void |
Moves the game to the win screen.
Called when all cards have been played
|
private |
|
overridevirtual |
Implementations will load the state of a GameObject from a th::Json Object.
Unimplemented in GameObject
| stream | th::Json Object |
Implements GameObject.
|
private |
Moves selector to the board. Used when a card is selected in a players hand.
|
private |
Moves the selector to lastSelectedCard, which is set every time a card is selected in a players hand.
|
private |
Moves the selector to the last selected tile, which is set every time a card is played on the board.
|
private |
Moves the selector to a player based on their index in the players vector.
| playerNumber | The index of the player in the players vector. Needs to a valid index |
|
private |
Moves the selector to a specified player.
| player | The player to move the selector to |
| auto Table::moveTurnForward | ( | ) | ->void |
Increments the turn counter and moves the selector to the right player.
|
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.
|
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.
|
overridevirtual |
called once every frame.
Generally used for timers, movement, condition checks, etc. Unimplemented in GameObject
| dt | the time in seconds that has elapsed |
Implements GameObject.
|
private |
Plays the sound effect for scoring a hand.
Used after a players turn ends
Cheat code that adds score to the current player.
Moves the selector from the board to the player hand.
Moves the selector back to the player hand, unless it is the next players turn.
Moves the selector from the player hand to the board.
Cheat code that draws a card to the current player.
Ends the current player's turn.
Cheat code that ends the game immediately and goes to the win screen.
Resets the table to prepare it for a new game.
|
private |
Gets the pointer to the board component for "board" in the cache.
| auto Table::reloadCache | ( | ) | ->void |
Re-gets the players, board, and deck pointers.
|
private |
Gets the pointer to the deck component for "deck" in the cache.
|
private |
Gets all the pointers of the Player components for "players" in the cache.
|
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
|
private |
Sets all the scores to 0.
|
private |
Resets everything on the table to the start of a new round.
|
overridevirtual |
Implementations will load the state of a GameObject to a th::Json object.
Unimplemented in GameObject
| stream | th::Json Object |
Implements GameObject.
|
private |
|
private |
Sets the text on screen to match the "numberOfCardsPlayedThisTurn" variable.
|
private |
Sets "playedThisTurn" for cards played this turn to false, then empties the vector Typically called at the end of a players turn.
|
private |
Updates the text displayed for a players score.
Should be called every time score changes
| playerNumber | The player who's score you want to update |
|
private |
We cache the board so we don't need to get it all the time.
|
private |
Vector of all cards that have been played, primarily used for updating the "playedThisTurn" variable inside of Card.
|
private |
We cache the deck so we don't need to get it all the time.
|
private |
Ruleset to follow for things like cards in hand, size of board, etc.
|
private |
Tracker of the last selected card, so we know what we're playing.
|
private |
Tracker of the last selected board tile, so the player doesn't start in the bottom left every time.
|
private |
Tracker for if the player can play more cards or not.
|
private |
We cache the players so we don't need to get it all the time.
|
private |
Scores for each player for the current game.
|
private |
Tracker of how many times a player has played their cards on the board. Starts at 0.