|
Brunot
|
The system responsible for facilitating communication between gameplay components (Players, Deck, and Board). 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 | systemShowMenu () -> void override |
| Specific systems should override this function to show their specific menu for the system. | |
| 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 | onSceneStart (const std::string &sceneName) -> void override |
| Hook that is called before the first frame a scene is run, but after the entire scene is loaded into the engine To receive the hook, simply override the function in your class. | |
| auto | onSceneExit (const std::string &sceneName) -> void override |
| Hook that is called right before a scene is unloaded To receive the hook, simply override the function in your class. | |
| auto | load (const 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) -> void |
| Draws a card from the deck and gives it to the player. | |
| auto | dealCardToPlayer (Player *player) -> void |
| Draws a card from the deck and gives it to the player. | |
| 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 | movePlayerCardsUp (float cardDelay, Player *currentPlayer) const -> void |
| Moves the current players cards up and highlights them. | |
| auto | movePlayerCardsDown (float cardDelay, Player *currentPlayer) const -> void |
| Moves the current players cards down and makes them gray. | |
| auto | moveAllPlayersToNormalPosition (float delayAmount) const -> void |
| Moves all current players to where. | |
| auto | moveAllPlayerCardsDown (float delayAmount) const -> void |
| Moves all the players away from the center of the screen. | |
| auto | moveAllPlayersOffscreen (float delayAmount) const -> void |
| Moves all the players away from the center of the screen. | |
| auto | moveSelectorToCurrentPlayer () -> void |
| Moves the selector to the current player, as decided by PlayerTurn. | |
| auto | getInBoard () -> bool |
| Gets if the player is in board right now. | |
| auto | setInBoard (bool setInBoard) -> void |
| Sets inBoard to either true or false. | |
| auto | setInputID (int id) const -> void |
| Updates the filter in the selector in the scene to a new value. | |
| auto | disableFilteredSelector () -> void |
| Calls disableFilter, which then returns all inputs as valid. | |
| auto | updateScoreText (int newScore) -> void |
| Updates the current player's score text, but doesn't actually change the value. | |
| auto | getSelector () const -> Entity * |
| Gets selector variable. | |
| auto | undoLastPlayedCard () const -> void |
| Returns the last played card on the board to the current players hand, and decrements cardsPlayedThisTurn. | |
| auto | playerScoreEffects () -> void |
| Adds a popping and highlighting effect to the player score. | |
| auto | handPopUpPushBack (HandRating::HandType typeOfHand) -> void |
| Automatically adds and adjusts player positions according to the count given in PlayerCountScene. | |
| auto | updateHandPopText (HandRating::HandType typeOfHand, int amount) -> void |
| Automatically adds and adjusts player positions according to the count given in PlayerCountScene. | |
| auto | destroyHandPopUp () -> void |
| Destroys the hand type pop up during scoring feedback. | |
| auto | unHighlightPlayedCards () const -> void |
| Removes the highlighting effect of the cards that were played this turn. | |
| auto | getDisabledFilter () -> bool |
| Checks if the filtered selector is disabled. | |
| auto | getDisabledInput () const -> bool |
| Checks if the gameplay input is disabled. | |
| auto | enableGameplayInput () -> void |
| Enables gameplay input (allows messaging for the selector and table). | |
| auto | enableHelpPopUp () -> void |
| auto | disableHelpPopUp () -> void |
| auto | disableGameplayInput () -> void |
| Disables gameplay input (turns off messaging for the selector and table). | |
| auto | pauseCurrentPlayerTimer () const -> void |
| Pauses the timer for the current player. | |
| auto | unpauseCurrentPlayerTimer () const -> void |
| Pauses the timer for the current player. | |
| auto | grayCurrentTimer () const -> void |
| Makes the current players timer gray. | |
| auto | hideDeckCount () const -> void |
| Makes the deck count go invisible. | |
| auto | completelyHideSelector () const -> void |
| Hides the selector and makes it stop emitting particles. | |
| Public Member Functions inherited from System | |
| auto | showMenu () -> void override |
| Called before update each frame, for calling ImGui editor code relevant to the gameObject. | |
| auto | getKey () const -> Key override |
| Generates a unique Key that corresponds to the GameObject. | |
| auto | getParent () const -> GameObject *override |
| Gets the parent of a GameObject. | |
| 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 | onEnterEngine () -> void |
| hook that is called when a GameObject enters the Engine tree. | |
| 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 | 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 | addChildLua (std::unique_ptr< GameObject > &newChild) -> bool |
| for lua | |
| auto | destroyed () const -> bool |
| auto | getUUID () const -> gobj::UUID |
| auto | coolerGetUUID () const -> unsigned int |
| 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. | |
| 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 (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 (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 (bool _shouldReceiveMessages) -> void |
| set whether the GameObject should Receive Messags, and whether all of it's children should receive messages | |
| auto | setActive (bool shouldBeActive) -> void |
| set the GameObject should update, render, and receive messages | |
| auto | getGameObjectJson () const -> json |
| Used for serializing GameObjects. | |
| auto | setGameObjectJson (const json &stream) -> void |
| used for deserializing GameObjects | |
Static Public Member Functions | |
| static auto | getEnum () -> Type |
| function required by all systems | |
Private Member Functions | |
| auto | checkValidInputID (int id) const -> bool |
| Checks if a passed in ID matches the filter inside the FilteredSelector. | |
| auto | moveSelectorToBoard () -> void |
| Moves selector to the board. Used when a card is selected in a players hand. | |
| auto | moveSelectorToPlayer (int playerNumber) -> void |
| Moves the selector to a player based on their index in the players vector. | |
| auto | moveSelectorToPlayer (Player *player) -> void |
| Moves the selector to a specified player. | |
| auto | moveSelectorToLastSelectedCard () -> 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 | getCurrentlyHoveredCard () const -> Card * |
| Gets the card that the Selector is currently hovering over if the Selector in hand. | |
| auto | updatePlayerScoreText (int playerNumber) -> void |
| Updates the text displayed for a players score. | |
| auto | updateCardsPlayedText () -> void |
| Sets the text on screen to match the "numberOfCardsPlayedThisTurn" variable. | |
| auto | updateCardsInDeckText () const -> void |
| Updates the text on screen to be the size of the Deck. | |
| auto | adjustPlayers () -> void |
| Automatically adds and adjusts player positions according to the count given in PlayerCountScene. | |
| 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 | resetTable () -> void |
| Resets everything on the table to the start of a new round. | |
| auto | playCardOnBoard (Card *cardToPlay, const std::pair< int, int > &positionOnBoard) -> void |
| Handles the entire in-engine process of playing a card on a board and visually moving it there. | |
| 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 | receiveDeselect (const Message *message) -> Message |
| Moves the selector from the board to the player hand. | |
| auto | receiveUndo (const Message *message) -> Message |
| Moves the last played card from the board to the players hand. | |
| auto | receiveRedo (const Message *message) -> Message |
| Moves the last undone card back to where it was played. | |
| 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 | receiveScoreCalculator (const Message *message) -> Message |
| Toggles the scoring calculator. | |
| auto | receivePlayerTimerRanOut (const Message *message) -> Message |
| Informs playerTurn that a player has run out of time. | |
| auto | receiveHelp (const Message *message) -> Message |
| Enables/Disables help popup. | |
| auto | receiveLeftKeyPressed (const Message *message) -> Message |
| auto | receiveRightKeyPressed (const Message *message) -> Message |
| auto | receiveUpKeyPressed (const Message *message) -> Message |
| auto | receiveDownKeyPressed (const Message *message) -> Message |
| 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 | disableFilteredSelector (const Message *message) -> Message |
| Calls disableFilter, which then returns all inputs as valid. | |
| auto | linkMessages () -> void |
Private Attributes | |
| PlayerTurn * | playerTurn = nullptr |
| A cache of PlayerTurn so we can call its functions. | |
| Scoring * | scoring = nullptr |
| A cache of Scoring so we can call its functions. | |
| 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. | |
| 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. | |
| bool | inBoard = false |
| Bool that keeps track of if the player is in board. Used by score calculator. | |
| bool | filterDisabled = false |
| Bool that keeps track of the filter for the selector is disabled. | |
| bool | inputDisabled = false |
| Bool that keeps track of if the table and selector should receive input. | |
Friends | |
| class | PlayerTurn |
Additional Inherited Members | |
| Public Types inherited from System | |
| enum class | Type : unsigned short { system_error_type = 0 , newSystemStub = 100 , OpenGL = 200 , Input = 300 , Editor = 400 , Messaging = 500 , Camera = 600 , Logging = 700 , AudioSystem = 750 , Scoring = 800 , HandSystem = 900 , PlayerTurn = 950 , Table = 960 , SceneManager = 1000 , ScriptingManager = 1050 , Particles = 1075 , ActionList = 1100 , DebugDraw = 1150 , ColliderSystem = 1300 , Options = 1400 , GameRules = 1500 , TestRunner = 64'000 } |
| Public Attributes inherited from GameObject | |
| friend | Entity |
| friend | Node |
| friend | Engine |
| Protected Member Functions inherited from System | |
| System (const std::string &typeName, Type systemType) | |
| Protected Member Functions inherited from GameObject | |
| auto | setInternalParent (GameObject *parent) -> bool |
| sets the internal parent of a GameObject directly, avoiding abstractions provided by ParentTo(). | |
| virtual auto | getChildren () const -> std::shared_ptr< std::vector< GameObject * > > |
| gets a vector of a GameObjects public (i.e. | |
| auto | checkAddToSceneHook () -> void |
| Determine if the GameObject was recently added to the engine, and if it was, call onEngineEnter. | |
The system responsible for facilitating communication between gameplay components (Players, Deck, and Board).
@Table.h
| sys::Table::Table | ( | ) |
| sys::Table::Table | ( | const Table & | other | ) |
|
noexcept |
|
overridedefault |
|
private |
Automatically adds and adjusts player positions according to the count given in PlayerCountScene.
|
private |
Checks if a passed in ID matches the filter inside the FilteredSelector.
| id | The ID to check |
|
inlineoverridevirtual |
makes a copy a GameObject even if it's held polymorphically
Implements GameObject.
| auto sys::Table::completelyHideSelector | ( | ) | const->void |
Hides the selector and makes it stop emitting particles.
| auto sys::Table::dealCardToPlayer | ( | int | playerNumber | ) | ->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 sys::Table::dealCardToPlayer | ( | Player * | player | ) | ->void |
Draws a card from the deck and gives it to the player.
| player | The player who should draw a card |
| auto sys::Table::destroyHandPopUp | ( | ) | ->void |
Destroys the hand type pop up during scoring feedback.
| auto sys::Table::disableFilteredSelector | ( | ) | ->void |
Calls disableFilter, which then returns all inputs as valid.
Calls disableFilter, which then returns all inputs as valid.
| auto sys::Table::disableGameplayInput | ( | ) | ->void |
Disables gameplay input (turns off messaging for the selector and table).
| auto sys::Table::disableHelpPopUp | ( | ) | ->void |
| auto sys::Table::enableGameplayInput | ( | ) | ->void |
Enables gameplay input (allows messaging for the selector and table).
| auto sys::Table::enableHelpPopUp | ( | ) | ->void |
|
inlineoverridevirtual |
currently unused, but intended to but was assumed to be necessary for a proper ImGui editor
Implements GameObject.
| auto sys::Table::fillAllPlayerHands | ( | ) | ->void |
Tells all players to fill their hands until they reach the limit.
| auto sys::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 |
| auto sys::Table::getDisabledFilter | ( | ) | ->bool |
Checks if the filtered selector is disabled.
| auto sys::Table::getDisabledInput | ( | ) | const->bool |
Checks if the gameplay input is disabled.
|
inlinestatic |
function required by all systems
| auto sys::Table::getInBoard | ( | ) | ->bool |
Gets if the player is in board right now.
| auto sys::Table::getSelector | ( | ) | const->Entity * |
Gets selector variable.
| auto sys::Table::grayCurrentTimer | ( | ) | const->void |
Makes the current players timer gray.
Used by scoring feedback to gray the timer early
| auto sys::Table::handPopUpPushBack | ( | HandRating::HandType | typeOfHand | ) | ->void |
Automatically adds and adjusts player positions according to the count given in PlayerCountScene.
| auto sys::Table::hideDeckCount | ( | ) | const->void |
Makes the deck count go invisible.
Only called once the deck is empty
|
private |
|
overridevirtual |
Implementations will load the state of a GameObject from a th::Json Object.
Unimplemented in GameObject
| stream | th::Json Object |
Implements GameObject.
| auto sys::Table::moveAllPlayerCardsDown | ( | float | delayAmount | ) | const->void |
Moves all the players away from the center of the screen.
| auto sys::Table::moveAllPlayersOffscreen | ( | float | delayAmount | ) | const->void |
Moves all the players away from the center of the screen.
| auto sys::Table::moveAllPlayersToNormalPosition | ( | float | delayAmount | ) | const->void |
Moves all current players to where.
| auto sys::Table::movePlayerCardsDown | ( | float | cardDelay, |
| Player * | currentPlayer ) const->void |
Moves the current players cards down and makes them gray.
| auto sys::Table::movePlayerCardsUp | ( | float | cardDelay, |
| Player * | currentPlayer ) const->void |
Moves the current players cards up and highlights them.
|
private |
Moves selector to the board. Used when a card is selected in a players hand.
| auto sys::Table::moveSelectorToCurrentPlayer | ( | ) | ->void |
Moves the selector to the current player, as decided by PlayerTurn.
|
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 |
|
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 |
Hook that is called right before a scene is unloaded To receive the hook, simply override the function in your class.
| sceneName | the name of the root node of the old scene |
Reimplemented from GameObject.
|
overridevirtual |
Hook that is called before the first frame a scene is run, but after the entire scene is loaded into the engine To receive the hook, simply override the function in your class.
| sceneName | the name of the root node of the new scene |
Prepare the board for a new round
Reimplemented from 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.
| auto sys::Table::pauseCurrentPlayerTimer | ( | ) | const->void |
Pauses the timer for the current player.
|
private |
Handles the entire in-engine process of playing a card on a board and visually moving it there.
| cardToPlay | The card to be played |
| positionOnBoard | The position on the board where the card should be played |
| auto sys::Table::playerScoreEffects | ( | ) | ->void |
Adds a popping and highlighting effect to the player score.
This is separate from updating the text itself because we need to use them at different times. This is intended for scoring feedback.
Cheat code that adds score to the current player.
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.
Moves the selector from the board to the player hand.
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.
Enables/Disables help popup.
Informs playerTurn that a player has run out of time.
Moves the last undone card back to where it was played.
Resets the table to prepare it for a new game.
Toggles the scoring calculator.
Moves the last played card from the board to the players hand.
|
private |
Gets the pointer to the board component for "board" in the cache.
| auto sys::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 |
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.
| auto sys::Table::setInBoard | ( | bool | setInBoard | ) | ->void |
Sets inBoard to either true or false.
| auto sys::Table::setInputID | ( | int | id | ) | const->void |
Updates the filter in the selector in the scene to a new value.
| id | The new ID to be set |
|
overridevirtual |
Specific systems should override this function to show their specific menu for the system.
Reimplemented from System.
| auto sys::Table::undoLastPlayedCard | ( | ) | const->void |
Returns the last played card on the board to the current players hand, and decrements cardsPlayedThisTurn.
| auto sys::Table::unHighlightPlayedCards | ( | ) | const->void |
Removes the highlighting effect of the cards that were played this turn.
| auto sys::Table::unpauseCurrentPlayerTimer | ( | ) | const->void |
Pauses the timer for the current player.
|
private |
|
private |
Sets the text on screen to match the "numberOfCardsPlayedThisTurn" variable.
| auto sys::Table::updateHandPopText | ( | HandRating::HandType | typeOfHand, |
| int | amount )->void |
Automatically adds and adjusts player positions according to the count given in PlayerCountScene.
|
private |
Updates the text displayed for a players score.
Should be called every time score changes
| playerNumber | The player whose score you want to update |
| auto sys::Table::updateScoreText | ( | int | newScore | ) | ->void |
Updates the current player's score text, but doesn't actually change the value.
Intended for score calculator.
|
friend |
|
private |
We cache the board so we don't need to get it all the time.
|
private |
We cache the deck so we don't need to get it all the time.
|
private |
Bool that keeps track of the filter for the selector is disabled.
|
private |
Ruleset to follow for things like cards in hand, size of board, etc.
|
private |
Bool that keeps track of if the player is in board. Used by score calculator.
|
private |
Bool that keeps track of if the table and selector should receive input.
Primarily used to see if input should be enabled when unpausing
|
private |
Tracker of the last selected board tile, so the player doesn't start in the bottom left every time.
|
private |
We cache the players so we don't need to get it all the time.
|
private |
A cache of PlayerTurn so we can call its functions.