|
Brunot
|
Component that is responsible for managing the gameplay board, where cards are placed by Players. More...
#include <Scoring.h>
Public Member Functions | |
| Scoring () | |
| ~Scoring () override | |
| Scoring (const Scoring &other)=default | |
| Scoring (Scoring &&other) noexcept | |
| auto | operator= (const Scoring &other) -> Scoring & |
| auto | operator= (Scoring &&other) noexcept -> Scoring &=default |
| auto | clone () const -> std::unique_ptr< GameObject > override |
| makes a copy a GameObject even if it's held polymorphically | |
| 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 | 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 | onEnterEngine () -> void override |
| hook that is called when a GameObject enters the Engine tree. | |
| auto | scoreBoard (Board &board, const std::vector< Card * > &cards) -> int |
| Checks all played cards and gets the hands. | |
| auto | scoringFeedback (std::vector< CategorizedHand > handsToHighlight) -> void |
| Highlights hands sequentially, being given them by scoring. | |
| auto | turnOnScoringCalculator () -> void |
| Performs visual effects and adding star children to board when enabled. | |
| auto | turnOffScoringCalculator () -> void |
| Moves players up, disables scoring calculator, and resets to default visuals. | |
| auto | turnOffScoringCalculatorWithoutMovingPlayers () -> void |
| Disables scoring calculator without moving players up. | |
| auto | scoringCalculatorHighlighting () -> void |
| Highlights stars while scoring calculator is enabled and players are moving through the board. | |
| auto | isScoringFeedbackHappening () const -> bool |
| Returns if there are scoring feedback visuals currently on screen. | |
| 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 | onSceneExit (const std::string &sceneName) -> void |
| Hook that is called right before a scene is unloaded To receive the hook, simply override the function in your class. | |
| 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 | |
Protected Member Functions | |
| auto | systemShowMenu () -> void override |
| Specific systems should override this function to show their specific menu for the system. | |
| 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. | |
Private Member Functions | |
| auto | scoringFeedbackSetUp (std::vector< CategorizedHand > &handsToHighlight) -> int |
| Checks if hands evaluate at 0, makes selector invisible, and disables inputs. | |
| void | createActionsForCardScoredEvents (ScoringFeedbackContext &context, const Card *currPlayedCard, Entity *cardParent, bool isImportant, float cardTime, float ratioThroughContributingCards, float cardsScored) |
| create actions that send 3 events for a scored card. | |
| void | sendHandScoredEvent (ScoringFeedbackContext &sfcRef, Card *card) |
| create actions that send an event that happens at the first "wait" time of a hand being scored | |
| auto | createCardActions (ScoringFeedbackContext &sfcRef, ScoringFeedbackActions &sfaRef, const CategorizedHand ¤tPlayerHand) -> void |
| Adds all actions to individual cards, including scaling, highlighting, and transform. | |
| auto | scoringFeedbackDelayedFunction (float setInitialDelay) -> void |
| Calls all delayed actions at the end of scoring feedback, such as enabling feedback, making selector visible again, etc. | |
| auto | addScoringCalculatorStars (const CategorizedHand ¤tHand) -> void |
| Finds the first transparent star sequentially and colors it to the hand type. | |
| auto | highlightStar (const CategorizedHand ¤tHand) -> void |
| Intended for scoring calculator, which highlights all stars in a hand. | |
| auto | clearScoringCalculator () -> void |
| Handles the backend logic of turning off the scoring calculator. | |
| auto | linkMessages () -> void |
| auto | playAudioPerCard (const CardScoredMessage *cardScoredMessage) -> void |
| helper function for receiveCardScoredMiddle, plays sfx on each card scoring | |
| auto | receiveCardScoredMiddle (const Message *message) -> Message |
| receive when a card is scored, to play an sfx on score, and maybe later to rotate a bit | |
| auto | playAudioPerHand (const CardScoredMessage *cardScoredMessage) -> void |
| helper function for recieveHandScored, plays a single audio effect per hand | |
| auto | receiveHandScored (const Message *message) -> Message |
| receives when a hand of cards is scored, plays an audio effect | |
Private Attributes | |
| std::ranlux24_base | randSeed {std::random_device()()} |
| Table * | table = nullptr |
| GameRules * | gameRules = nullptr |
| PlayerTurn * | playerTurn = nullptr |
| bool | scoringFeedbackActive = false |
| float | minPitch = 0.8f |
| the sound pitch sounds should start at | |
| float | maxPitch = 1.5f |
| the pitch that audio will max out at (won't actually hit this value, will get to approximately 75% of the way there) | |
| float | extraPitchPerCard = 0.02f |
| how much to pitch up between cards scoring | |
| std::string | cardScoredSFX = "chips_soundeffect" |
| the audio file to play when each card is scored | |
| std::string | handScoredSFX = "Card_Success_1" |
| the audio file to play at the beginning of each hand scored | |
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 |
Component that is responsible for managing the gameplay board, where cards are placed by Players.
@Board.h
| sys::Scoring::Scoring | ( | ) |
|
override |
|
default |
|
noexcept |
|
private |
Finds the first transparent star sequentially and colors it to the hand type.
|
private |
Handles the backend logic of turning off the scoring calculator.
Deletes the stars and hand pop-ups, and resets the player score
|
inlineoverridevirtual |
makes a copy a GameObject even if it's held polymorphically
Implements GameObject.
|
private |
create actions that send 3 events for a scored card.
this function is called for every scored card by createCardActions the events broadcasted are:
| context | the scoring feedback context |
| currPlayedCard | pointer to the card being scoringFeedbacked |
| cardParent | the parent of the card |
| isImportant | whether the card contributes to the hand |
| cardTime | the "wait time" of the visual change, divided among the contributing cards |
| ratioThroughContributingCards | how far through, from 0 to 1, the contributing cards we are, if we are one |
| cardsScored | how many contributing cards have already been scored |
|
private |
Adds all actions to individual cards, including scaling, highlighting, and transform.
|
inlineoverridevirtual |
currently unused, but intended to but was assumed to be necessary for a proper ImGui editor
Implements GameObject.
|
inlinestatic |
function required by all systems
|
private |
Intended for scoring calculator, which highlights all stars in a hand.
| auto sys::Scoring::isScoringFeedbackHappening | ( | ) | const->bool |
Returns if there are scoring feedback visuals currently on screen.
|
private |
|
overridevirtual |
Implementations will load the state of a GameObject from a th::Json Object.
Unimplemented in GameObject
| stream | th::Json Object |
Implements GameObject.
|
overridevirtual |
hook that is called when a GameObject enters the Engine tree.
The hook is called immediately after a GameObject's parent is called. Functionality may not be correct if an object was removed from the engine then re-added. To receive the hook, simply override the function in your class
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 |
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 |
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.
|
private |
helper function for receiveCardScoredMiddle, plays sfx on each card scoring
| cardScoredMessage |
|
private |
helper function for recieveHandScored, plays a single audio effect per hand
| cardScoredMessage |
receive when a card is scored, to play an sfx on score, and maybe later to rotate a bit
| message | a CardScoredMessage |
receives when a hand of cards is scored, plays an audio effect
| message | CardScoredMessage |
|
overridevirtual |
Implementations will load the state of a GameObject to a th::Json object.
Unimplemented in GameObject
| stream | th::Json Object |
Implements GameObject.
Checks all played cards and gets the hands.
| board | The board to be scored |
| cards | The played cards stored in Table |
| auto sys::Scoring::scoringCalculatorHighlighting | ( | ) | ->void |
Highlights stars while scoring calculator is enabled and players are moving through the board.
| auto sys::Scoring::scoringFeedback | ( | std::vector< CategorizedHand > | handsToHighlight | ) | ->void |
Highlights hands sequentially, being given them by scoring.
@TODO: i would like them to pop up in the middle initially and be shifted to the left/right
|
private |
Calls all delayed actions at the end of scoring feedback, such as enabling feedback, making selector visible again, etc.
|
private |
Checks if hands evaluate at 0, makes selector invisible, and disables inputs.
|
private |
create actions that send an event that happens at the first "wait" time of a hand being scored
| sfcRef | the scoringFeedback Context |
| card |
|
overrideprotectedvirtual |
Specific systems should override this function to show their specific menu for the system.
Reimplemented from System.
| auto sys::Scoring::turnOffScoringCalculator | ( | ) | ->void |
Moves players up, disables scoring calculator, and resets to default visuals.
| auto sys::Scoring::turnOffScoringCalculatorWithoutMovingPlayers | ( | ) | ->void |
Disables scoring calculator without moving players up.
Called when calculator is enabled and end turn is pressed.
| auto sys::Scoring::turnOnScoringCalculator | ( | ) | ->void |
Performs visual effects and adding star children to board when enabled.
|
private |
the audio file to play when each card is scored
|
private |
how much to pitch up between cards scoring
|
private |
|
private |
the audio file to play at the beginning of each hand scored
|
private |
the pitch that audio will max out at (won't actually hit this value, will get to approximately 75% of the way there)
|
private |
the sound pitch sounds should start at
|
private |
|
private |
|
private |
|
private |