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

#include <GameRules.h>

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

Public Member Functions

 GameRules ()
 ~GameRules () override=default
 GameRules (const GameRules &other)=default
 GameRules (GameRules &&other) noexcept=default
auto operator= (const GameRules &other) -> GameRules &
auto operator= (GameRules &&other) noexcept -> GameRules &=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 systemShowMenu () -> void override
 Specific systems should override this function to show their specific menu for the system.
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 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 getSeed () const -> unsigned int
 get the seed we use for making random number generators, so we can have a consistent gameplay if we want
auto setSeed (unsigned int seed) -> void
 if for some reason you want set the seed manually in code, instead of ImGui, you can set it here make sure you set it before launching gameplay, when we start using it
auto getMaxPlayerCards () const -> int
auto setMaxPlayerCards (int newMax) -> void
auto getCardsPlayedPerTurnLimit () const -> int
auto setCardsPlayedPerTurnLimit (int newMax) -> void
auto getBoardDimensions () const -> const std::pair< int, int > &
auto setBoardDimensions (const std::pair< int, int > &newDimensions) -> void
auto getPlayerTimeLimit () const -> float
auto setPlayerTimeLimit (float newLimit) -> void
auto getTimeLimitPointPenalty () const -> int
auto setTimeLimitPointPenalty (int newPenalty) -> void
auto getScoreCalculator () const -> bool
auto setScoreCalculator (bool enabled) -> void
auto getHandTypeColor (HandRating::HandType handType) const -> Vector4D
auto getHandTypeValue (HandRating::HandType handType) const -> int
auto setHelpPopUp (bool enabled) -> void
auto getHelpPopUp () const -> bool
auto getPlayerCount () const -> int
auto setPlayerCount (int count) -> void
auto getPassAndPlay () const -> bool
 Sets if we want to pass and play when we start the gameplay scene Also causes us to load PlayerCountScene instead of PlayerJoinScene.
auto setPassAndPlay (bool newState) -> void
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 onSceneStart (const std::string &sceneName) -> void
 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.
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

Private Attributes

bool useSetSeed = false
 whether GameRules should generate seed from a random number on construction
unsigned int seed
 seed to use to seed random generators for gameplay events
int maxCardsPerPlayerHand
int maxNumberOfCardsPlayedPerTurn
std::pair< int, int > boardDimensions
float timeLimitPerPlayer
 The time limit is stored in seconds.
int timeLimitPointPenalty
 The amount of points players lose if they run out of time.
bool scoreCalculator = false
 if the player has scoring calculator enabled
float gameSpeedModifier = 1.f
 Affects the speed of the animations in game.
int playerCount = 0
 Tracks how many players we want in our game.
bool passAndPlay = false
 If we want to support multiple device inputs at the same time in the gameplay scene.
Vector4D straightFlushColor = { 0.5f, 0.02f, 0.92f, 1.0f }
 the different colors for hand types
Vector4D quadsColor = { 1.0f, 0.84f, 0.23f, 1.0f }
Vector4D fullHouseColor = { 0.f, 0.f, 1.0f, 1.0f }
Vector4D flushColor = { 0.f, 1.0f, 1.0f, 1.0f }
Vector4D straightColor = { 0.5f, 0.f, 1.0f, 1.0f }
Vector4D tripsColor = { 1.0f, 0.f, 0.f, 1.0f }
Vector4D twoPairColor = { 1.0f, 0.5f, 0.f, 1.0f }
Vector4D pairColor = { 1.0f, 1.0f, 0.f, 1.0f }
Vector4D highCardColor = { 0.6f, 1.0f, 1.0f, 1.0f }
bool helpPopUp = true

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.

Constructor & Destructor Documentation

◆ GameRules() [1/3]

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

◆ ~GameRules()

sys::GameRules::~GameRules ( )
overridedefault

◆ GameRules() [2/3]

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

◆ GameRules() [3/3]

sys::GameRules::GameRules ( GameRules && other)
defaultnoexcept
Here is the call graph for this function:

Member Function Documentation

◆ clone()

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

◆ endWindow()

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

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

Implements GameObject.

◆ getBoardDimensions()

auto sys::GameRules::getBoardDimensions ( ) const->conststd::pair< int, int > &

◆ getCardsPlayedPerTurnLimit()

auto sys::GameRules::getCardsPlayedPerTurnLimit ( ) const->int

◆ getEnum()

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

function required by all systems

◆ getHandTypeColor()

auto sys::GameRules::getHandTypeColor ( HandRating::HandType handType) const->Vector4D

◆ getHandTypeValue()

auto sys::GameRules::getHandTypeValue ( HandRating::HandType handType) const->int
Here is the caller graph for this function:

◆ getHelpPopUp()

auto sys::GameRules::getHelpPopUp ( ) const->bool

◆ getMaxPlayerCards()

auto sys::GameRules::getMaxPlayerCards ( ) const->int

◆ getPassAndPlay()

auto sys::GameRules::getPassAndPlay ( ) const->bool

Sets if we want to pass and play when we start the gameplay scene Also causes us to load PlayerCountScene instead of PlayerJoinScene.

◆ getPlayerCount()

auto sys::GameRules::getPlayerCount ( ) const->int

◆ getPlayerTimeLimit()

auto sys::GameRules::getPlayerTimeLimit ( ) const->float

◆ getScoreCalculator()

auto sys::GameRules::getScoreCalculator ( ) const->bool

◆ getSeed()

unsigned int sys::GameRules::getSeed ( ) const->unsignedint
nodiscard

get the seed we use for making random number generators, so we can have a consistent gameplay if we want

Returns
the seed to pass to the generator

◆ getTimeLimitPointPenalty()

auto sys::GameRules::getTimeLimitPointPenalty ( ) const->int

◆ load()

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

◆ onRender()

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

◆ operator=() [2/2]

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

◆ save()

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

◆ setBoardDimensions()

auto sys::GameRules::setBoardDimensions ( const std::pair< int, int > & newDimensions) ->void

◆ setCardsPlayedPerTurnLimit()

auto sys::GameRules::setCardsPlayedPerTurnLimit ( int newMax) ->void

◆ setHelpPopUp()

auto sys::GameRules::setHelpPopUp ( bool enabled) ->void

◆ setMaxPlayerCards()

auto sys::GameRules::setMaxPlayerCards ( int newMax) ->void

◆ setPassAndPlay()

auto sys::GameRules::setPassAndPlay ( bool newState) ->void

◆ setPlayerCount()

auto sys::GameRules::setPlayerCount ( int count) ->void

◆ setPlayerTimeLimit()

auto sys::GameRules::setPlayerTimeLimit ( float newLimit) ->void

◆ setScoreCalculator()

auto sys::GameRules::setScoreCalculator ( bool enabled) ->void

◆ setSeed()

void sys::GameRules::setSeed ( unsigned int seed) ->void

if for some reason you want set the seed manually in code, instead of ImGui, you can set it here make sure you set it before launching gameplay, when we start using it

Parameters
seedthe seed to set

◆ setTimeLimitPointPenalty()

auto sys::GameRules::setTimeLimitPointPenalty ( int newPenalty) ->void

◆ systemShowMenu()

void sys::GameRules::systemShowMenu ( ) ->void
overridevirtual

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

Reimplemented from System.

Member Data Documentation

◆ boardDimensions

std::pair<int, int> sys::GameRules::boardDimensions
private

◆ flushColor

Vector4D sys::GameRules::flushColor = { 0.f, 1.0f, 1.0f, 1.0f }
private

◆ fullHouseColor

Vector4D sys::GameRules::fullHouseColor = { 0.f, 0.f, 1.0f, 1.0f }
private

◆ gameSpeedModifier

float sys::GameRules::gameSpeedModifier = 1.f
private

Affects the speed of the animations in game.

◆ helpPopUp

bool sys::GameRules::helpPopUp = true
private

◆ highCardColor

Vector4D sys::GameRules::highCardColor = { 0.6f, 1.0f, 1.0f, 1.0f }
private

◆ maxCardsPerPlayerHand

int sys::GameRules::maxCardsPerPlayerHand
private

◆ maxNumberOfCardsPlayedPerTurn

int sys::GameRules::maxNumberOfCardsPlayedPerTurn
private

◆ pairColor

Vector4D sys::GameRules::pairColor = { 1.0f, 1.0f, 0.f, 1.0f }
private

◆ passAndPlay

bool sys::GameRules::passAndPlay = false
private

If we want to support multiple device inputs at the same time in the gameplay scene.

◆ playerCount

int sys::GameRules::playerCount = 0
private

Tracks how many players we want in our game.

◆ quadsColor

Vector4D sys::GameRules::quadsColor = { 1.0f, 0.84f, 0.23f, 1.0f }
private

◆ scoreCalculator

bool sys::GameRules::scoreCalculator = false
private

if the player has scoring calculator enabled

◆ seed

unsigned int sys::GameRules::seed
private

seed to use to seed random generators for gameplay events

◆ straightColor

Vector4D sys::GameRules::straightColor = { 0.5f, 0.f, 1.0f, 1.0f }
private

◆ straightFlushColor

Vector4D sys::GameRules::straightFlushColor = { 0.5f, 0.02f, 0.92f, 1.0f }
private

the different colors for hand types

◆ timeLimitPerPlayer

float sys::GameRules::timeLimitPerPlayer
private

The time limit is stored in seconds.

◆ timeLimitPointPenalty

int sys::GameRules::timeLimitPointPenalty
private

The amount of points players lose if they run out of time.

◆ tripsColor

Vector4D sys::GameRules::tripsColor = { 1.0f, 0.f, 0.f, 1.0f }
private

◆ twoPairColor

Vector4D sys::GameRules::twoPairColor = { 1.0f, 0.5f, 0.f, 1.0f }
private

◆ useSetSeed

bool sys::GameRules::useSetSeed = false
private

whether GameRules should generate seed from a random number on construction


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