Brunot
Loading...
Searching...
No Matches
sys::Scoring Class Reference

Component that is responsible for managing the gameplay board, where cards are placed by Players. More...

#include <Scoring.h>

Inheritance diagram for sys::Scoring:
[legend]
Collaboration diagram for sys::Scoring:
[legend]

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 &currentPlayerHand) -> 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 &currentHand) -> void
 Finds the first transparent star sequentially and colors it to the hand type.
auto highlightStar (const CategorizedHand &currentHand) -> 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()()}
Tabletable = nullptr
GameRulesgameRules = nullptr
PlayerTurnplayerTurn = 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

Detailed Description

Component that is responsible for managing the gameplay board, where cards are placed by Players.

@Board.h

Constructor & Destructor Documentation

◆ Scoring() [1/3]

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

◆ ~Scoring()

sys::Scoring::~Scoring ( )
override
Here is the call graph for this function:

◆ Scoring() [2/3]

sys::Scoring::Scoring ( const Scoring & other)
default
Here is the call graph for this function:

◆ Scoring() [3/3]

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

Member Function Documentation

◆ addScoringCalculatorStars()

auto sys::Scoring::addScoringCalculatorStars ( const CategorizedHand & currentHand) ->void
private

Finds the first transparent star sequentially and colors it to the hand type.

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

◆ clearScoringCalculator()

auto sys::Scoring::clearScoringCalculator ( ) ->void
private

Handles the backend logic of turning off the scoring calculator.

Deletes the stars and hand pop-ups, and resets the player score

Here is the caller graph for this function:

◆ clone()

auto sys::Scoring::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:

◆ createActionsForCardScoredEvents()

void sys::Scoring::createActionsForCardScoredEvents ( ScoringFeedbackContext & context,
const Card * currPlayedCard,
Entity * cardParent,
bool isImportant,
float cardTime,
float ratioThroughContributingCards,
float cardsScored )
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:

  • CardScoredStart at the start of a cards visual change,
  • CardScoredMiddle on it's "turn" to play a sound, wiggle, etc.,
  • CardScoredEnd when it begins to move back to its original locations
Parameters
contextthe scoring feedback context
currPlayedCardpointer to the card being scoringFeedbacked
cardParentthe parent of the card
isImportantwhether the card contributes to the hand
cardTimethe "wait time" of the visual change, divided among the contributing cards
ratioThroughContributingCardshow far through, from 0 to 1, the contributing cards we are, if we are one
cardsScoredhow many contributing cards have already been scored
Here is the call graph for this function:
Here is the caller graph for this function:

◆ createCardActions()

auto sys::Scoring::createCardActions ( ScoringFeedbackContext & sfcRef,
ScoringFeedbackActions & sfaRef,
const CategorizedHand & currentPlayerHand )->void
private

Adds all actions to individual cards, including scaling, highlighting, and transform.

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

◆ endWindow()

auto sys::Scoring::endWindow ( ) ->void
inlineoverridevirtual

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

Implements GameObject.

◆ getEnum()

auto sys::Scoring::getEnum ( ) ->Type
inlinestatic

function required by all systems

◆ highlightStar()

auto sys::Scoring::highlightStar ( const CategorizedHand & currentHand) ->void
private

Intended for scoring calculator, which highlights all stars in a hand.

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

◆ isScoringFeedbackHappening()

auto sys::Scoring::isScoringFeedbackHappening ( ) const->bool

Returns if there are scoring feedback visuals currently on screen.

◆ linkMessages()

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

◆ load()

auto sys::Scoring::load ( const 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.

◆ onEnterEngine()

void sys::Scoring::onEnterEngine ( ) ->void
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.

Here is the call graph for this function:

◆ onRender()

auto sys::Scoring::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.

◆ onSceneStart()

void sys::Scoring::onSceneStart ( const std::string & sceneName) ->void
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.

Parameters
sceneNamethe name of the root node of the new scene

Reimplemented from GameObject.

Here is the call graph for this function:

◆ onUpdate()

auto sys::Scoring::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 sys::Scoring::operator= ( const Scoring & other) ->Scoring &
Here is the call graph for this function:

◆ operator=() [2/2]

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

◆ playAudioPerCard()

auto sys::Scoring::playAudioPerCard ( const CardScoredMessage * cardScoredMessage) ->void
private

helper function for receiveCardScoredMiddle, plays sfx on each card scoring

Parameters
cardScoredMessage
Returns
Here is the call graph for this function:
Here is the caller graph for this function:

◆ playAudioPerHand()

auto sys::Scoring::playAudioPerHand ( const CardScoredMessage * cardScoredMessage) ->void
private

helper function for recieveHandScored, plays a single audio effect per hand

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

◆ receiveCardScoredMiddle()

auto sys::Scoring::receiveCardScoredMiddle ( const Message * message) ->Message
private

receive when a card is scored, to play an sfx on score, and maybe later to rotate a bit

Parameters
messagea CardScoredMessage
Returns
empty message
Here is the call graph for this function:

◆ receiveHandScored()

auto sys::Scoring::receiveHandScored ( const Message * message) ->Message
private

receives when a hand of cards is scored, plays an audio effect

Parameters
messageCardScoredMessage
Returns
Here is the call graph for this function:

◆ save()

auto sys::Scoring::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.

◆ scoreBoard()

auto sys::Scoring::scoreBoard ( Board & board,
const std::vector< Card * > & cards )->int

Checks all played cards and gets the hands.

Parameters
boardThe board to be scored
cardsThe played cards stored in Table
Returns
The value of all scored hands
Here is the call graph for this function:

◆ scoringCalculatorHighlighting()

auto sys::Scoring::scoringCalculatorHighlighting ( ) ->void

Highlights stars while scoring calculator is enabled and players are moving through the board.

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

◆ scoringFeedback()

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

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

◆ scoringFeedbackDelayedFunction()

auto sys::Scoring::scoringFeedbackDelayedFunction ( float setInitialDelay) ->void
private

Calls all delayed actions at the end of scoring feedback, such as enabling feedback, making selector visible again, etc.

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

◆ scoringFeedbackSetUp()

auto sys::Scoring::scoringFeedbackSetUp ( std::vector< CategorizedHand > & handsToHighlight) ->int
private

Checks if hands evaluate at 0, makes selector invisible, and disables inputs.

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

◆ sendHandScoredEvent()

void sys::Scoring::sendHandScoredEvent ( ScoringFeedbackContext & sfcRef,
Card * card )
private

create actions that send an event that happens at the first "wait" time of a hand being scored

Parameters
sfcRefthe scoringFeedback Context
card
Here is the call graph for this function:
Here is the caller graph for this function:

◆ systemShowMenu()

void sys::Scoring::systemShowMenu ( ) ->void
overrideprotectedvirtual

Specific systems should override this function to show their specific menu for the system.

Reimplemented from System.

Here is the call graph for this function:

◆ turnOffScoringCalculator()

auto sys::Scoring::turnOffScoringCalculator ( ) ->void

Moves players up, disables scoring calculator, and resets to default visuals.

Here is the call graph for this function:

◆ turnOffScoringCalculatorWithoutMovingPlayers()

auto sys::Scoring::turnOffScoringCalculatorWithoutMovingPlayers ( ) ->void

Disables scoring calculator without moving players up.

Called when calculator is enabled and end turn is pressed.

Here is the call graph for this function:

◆ turnOnScoringCalculator()

auto sys::Scoring::turnOnScoringCalculator ( ) ->void

Performs visual effects and adding star children to board when enabled.

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

Member Data Documentation

◆ cardScoredSFX

std::string sys::Scoring::cardScoredSFX = "chips_soundeffect"
private

the audio file to play when each card is scored

◆ extraPitchPerCard

float sys::Scoring::extraPitchPerCard = 0.02f
private

how much to pitch up between cards scoring

◆ gameRules

GameRules* sys::Scoring::gameRules = nullptr
private

◆ handScoredSFX

std::string sys::Scoring::handScoredSFX = "Card_Success_1"
private

the audio file to play at the beginning of each hand scored

◆ maxPitch

float sys::Scoring::maxPitch = 1.5f
private

the pitch that audio will max out at (won't actually hit this value, will get to approximately 75% of the way there)

◆ minPitch

float sys::Scoring::minPitch = 0.8f
private

the sound pitch sounds should start at

◆ playerTurn

PlayerTurn* sys::Scoring::playerTurn = nullptr
private

◆ randSeed

std::ranlux24_base sys::Scoring::randSeed {std::random_device()()}
private

◆ scoringFeedbackActive

bool sys::Scoring::scoringFeedbackActive = false
private

◆ table

Table* sys::Scoring::table = nullptr
private

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