Game of Ur 0.3.3
This is a computer adaptation of Game of Ur, written in C++ mainly using SDL and OpenGL.
|
The base class for all aspects, providing an interface to its attached SimObject, and consequently, the engine's SceneSystem. More...
#include <sim_system.hpp>
Public Member Functions | |
virtual | ~BaseSimObjectAspect ()=default |
Destroys this object. | |
virtual void | simulationUpdate (uint32_t simStepMillis) |
Overriding this allows an aspect to respond to simulation updates. | |
virtual void | variableUpdate (uint32_t variableStepMillis) |
Overriding this allows an aspect to respond to variable updates. | |
bool | handleAction (const ActionData &actionData, const ActionDefinition &actionDefinition) override final |
Pipes an action received from the InputManager via our SimObject to all that action's handler methods on this aspect. | |
ViewportNode & | getLocalViewport () |
Returns the closest ancestor viewport to this node, if one exists (which it should, since this shouldn't be called until this aspect is attached to an active SimObject). | |
![]() | |
SignalTracker () | |
Constructs a new SignalTracker object. | |
SignalTracker (const SignalTracker &other) | |
Constructs a new SignalTracker. | |
SignalTracker & | operator= (const SignalTracker &other) |
Copy assignment operator. | |
SignalTracker (SignalTracker &&other) | |
Moves resources from another SignalTracker into this one, invalidating them from the other. | |
SignalTracker & | operator= (SignalTracker &&other) |
Moves resources from another SignalTracker into this one, destroying this tracker's resources in the process. | |
void | connect (const std::string &theirSignal, const std::string &ourObserver, SignalTracker &other) |
Method that connects one of this objects SignalObservers to another tracker's Signal. | |
Protected Member Functions | |
BaseSimObjectAspect (const BaseSimObjectAspect &other)=delete | |
BaseSimObjectAspect (BaseSimObjectAspect &&other)=delete | |
SimObject & | getSimObject () |
Returns the sim object that this aspect is attached to. | |
template<typename TComponent> | |
void | addComponent (const TComponent &component) |
Adds a component of some type to the underlying entity. | |
template<typename TComponent> | |
bool | hasComponent () |
Tests whether a component of some specific type is present on the object. | |
template<typename TComponent> | |
void | updateComponent (const TComponent &component) |
Updates the value of a component belonging to this object to a new one. | |
template<typename TComponent> | |
TComponent | getComponent (const float simulationProgress=1.f) const |
Gets the value of a component belonging to this object. | |
template<typename TComponent> | |
void | removeComponent () |
Removes a component of some type belonging to the underlying SimObject. | |
void | addAspect (const nlohmann::json &jsonAspectProperties) |
Adds a new aspect to the underlying SimObject constructed based on its properties in JSON. | |
void | addAspect (const BaseSimObjectAspect &aspect) |
Adds a new aspect to the underlying SimObject copied from an already existing aspect. | |
template<typename TSimObjectAspect> | |
bool | hasAspect () const |
Tests whether an aspect of a particular type is attached to the underlying SimObject. | |
bool | hasAspect (const std::string &aspectType) const |
Tests whether an aspect of a particular type is attached to the underlying SimObject. | |
template<typename TSimObjectAspect> | |
TSimObjectAspect & | getAspect () |
Gets an aspect of a particular type belonging to the underlying SimObject. | |
BaseSimObjectAspect & | getAspect (const std::string &aspectType) |
Gets (a base class reference to) an aspect of a particular type belonging to the underlying SimObject. | |
template<typename TSimObjectAspect> | |
void | removeAspect () |
Removes an aspect from the underlying SimObject. | |
void | addOrReplaceAspect (const BaseSimObjectAspect &aspect) |
Adds or replaces an aspect on the underlying SimObject with a new aspect constructed as a copy of another. | |
void | addOrReplaceAspect (const nlohmann::json &jsonAspectProperties) |
Adds or replaces an aspect on the underlying SimObject with a new aspect constructed from its JSON description. | |
std::weak_ptr< FixedActionBinding > | declareFixedActionBinding (const std::string &context, const std::string &action, std::function< bool(const ActionData &, const ActionDefinition &)>) |
Binds some method (or any function) present on this object to an action generated by the InputManager. | |
EntityID | getEntityID () const |
Gets the ID of the ECSWorld Entity belonging to our SimObject. | |
std::weak_ptr< ECSWorld > | getWorld () const |
Gets a weak reference to the ECSWorld to which our SimObject's entity belongs. | |
virtual std::string | getAspectTypeName () const =0 |
Overridable function for fetching the aspect type string of an aspect. | |
Static Protected Member Functions | |
template<typename TSimObjectAspectDerived> | |
static void | registerAspect () |
Registers an implementation of an aspect with the SimSystem. | |
Private Types | |
enum | AspectState : uint8_t { ATTACHED =1 , ACTIVE =2 } |
Enum for mask values representing the readiness of an aspect. | |
Private Member Functions | |
void | activateFixedActionBindings () |
Called when an aspect has just been activated to bind its handler method to its associated action. | |
void | deactivateFixedActionBindings () |
Called when an aspect's SimObject has been deactivated, retiring all currently active action bindings. | |
void | onAttached_ () |
void | onDetached_ () |
void | onActivated_ () |
void | onDeactivated_ () |
virtual void | onAttached () |
Callback for when an aspect has just been attached to an object (but which hasn't yet been activated). | |
virtual void | onDetached () |
Callback for when an aspect is about to be removed from an object (after it has been deactivated). | |
virtual void | onActivated () |
Callback for when the aspect is activated (after it is attached to an active SimObject, or if the SimObject it was attached to has just been activated) | |
virtual void | onDeactivated () |
Callback for when the aspect is deactivated (just prior to being detached, or when its SimObject has been deactivated). | |
bool | isAttached () |
Tests whether this aspect is attached to a SimObject. | |
bool | isActive () |
Tests whether the SimObject this aspect is attached to is active on the SceneSystem and the SimSystem. | |
void | attach (SimObject *owner) |
Causes this aspect to be detached from its previous owner and to be attached to a new one. | |
void | detach () |
Causes this aspect to be disconnected from its current SimObject. | |
virtual std::shared_ptr< BaseSimObjectAspect > | clone () const =0 |
A method which must be overridden to specify how a new aspect should be constructed as a copy of this one. | |
Private Attributes | |
std::map< std::pair< std::string, std::string >, std::shared_ptr< FixedActionBinding >, std::less< std::pair< std::string, std::string > > > | mFixedActionBindings {} |
The set of action bindings owned by this aspect. | |
SimObject * | mSimObject { nullptr } |
The SimObject underlying this aspect. | |
uint8_t | mState { 0x0 } |
Value representing the readiness of this aspect. | |
Friends | |
class | SimObject |
The base class for all aspects, providing an interface to its attached SimObject, and consequently, the engine's SceneSystem.
|
protected |
Adds a new aspect to the underlying SimObject copied from an already existing aspect.
aspect | The aspect being copied. |
|
protected |
Adds a new aspect to the underlying SimObject constructed based on its properties in JSON.
jsonAspectProperties | The properties of the aspect in JSON. |
|
protected |
Adds a component of some type to the underlying entity.
TComponent | The type of component being added. |
component | The value of the component when it is added. |
|
protected |
Adds or replaces an aspect on the underlying SimObject with a new aspect constructed as a copy of another.
aspect | The aspect being copied. |
|
protected |
Adds or replaces an aspect on the underlying SimObject with a new aspect constructed from its JSON description.
jsonAspectProperties | The JSON description of the aspect, including its type and value. |
|
private |
Causes this aspect to be detached from its previous owner and to be attached to a new one.
owner | The new owner of this aspect. |
|
privatepure virtual |
A method which must be overridden to specify how a new aspect should be constructed as a copy of this one.
Implemented in BoardLocations, PlayerCPURandom, PlayerLocal, QueryClick, RenderDebugViewer, UIButton, UIImage, UIPanel, UIText, UrController, UrLookAtBoard, UrRecords, UrSceneManager, UrSceneView, UrUINavigation, UrUIRecordsBrowser, UrUITutorialsBrowser, UrUIVersion, and UrUIView.
|
protected |
Binds some method (or any function) present on this object to an action generated by the InputManager.
context | The name of the context of the bound action. |
action | The name of the action itself. |
|
protected |
Gets an aspect of a particular type belonging to the underlying SimObject.
TSimObjectAspect | The type of the aspect being retrieved. |
|
protected |
Gets (a base class reference to) an aspect of a particular type belonging to the underlying SimObject.
aspectType | The aspect type name of the aspect being retrieved. |
|
protectedpure virtual |
Overridable function for fetching the aspect type string of an aspect.
Implemented in ToyMaker::SimObjectAspect< TSimObjectAspectDerived >, ToyMaker::SimObjectAspect< BoardLocations >, ToyMaker::SimObjectAspect< PlayerCPURandom >, ToyMaker::SimObjectAspect< PlayerLocal >, ToyMaker::SimObjectAspect< QueryClick >, ToyMaker::SimObjectAspect< RenderDebugViewer >, ToyMaker::SimObjectAspect< UIButton >, ToyMaker::SimObjectAspect< UIImage >, ToyMaker::SimObjectAspect< UIPanel >, ToyMaker::SimObjectAspect< UIText >, ToyMaker::SimObjectAspect< UrController >, ToyMaker::SimObjectAspect< UrLookAtBoard >, ToyMaker::SimObjectAspect< UrRecords >, ToyMaker::SimObjectAspect< UrSceneManager >, ToyMaker::SimObjectAspect< UrSceneView >, ToyMaker::SimObjectAspect< UrUINavigation >, ToyMaker::SimObjectAspect< UrUIRecordsBrowser >, ToyMaker::SimObjectAspect< UrUITutorialsBrowser >, ToyMaker::SimObjectAspect< UrUIVersion >, and ToyMaker::SimObjectAspect< UrUIView >.
|
protected |
Gets the value of a component belonging to this object.
TComponent | The type of component being retrieved. |
simulationProgress | The progress towards the next simulation step after the previous one represented as a value between 0 and 1. |
|
protected |
ViewportNode & BaseSimObjectAspect::getLocalViewport | ( | ) |
Returns the closest ancestor viewport to this node, if one exists (which it should, since this shouldn't be called until this aspect is attached to an active SimObject).
|
protected |
Returns the sim object that this aspect is attached to.
|
protected |
|
finaloverridevirtual |
Pipes an action received from the InputManager via our SimObject to all that action's handler methods on this aspect.
actionData | The data describing the action event. |
actionDefinition | The definition of the action event. |
true | The action was handled by this aspect; |
false | The action was not handled by this aspect; |
Reimplemented from ToyMaker::IActionHandler.
|
protected |
Tests whether an aspect of a particular type is attached to the underlying SimObject.
TSimObjectAspect | The type of aspect whose existence is being tested. |
true | An aspect of the specified type exists; |
false | No aspect of the type specified exists; |
|
protected |
Tests whether an aspect of a particular type is attached to the underlying SimObject.
aspectType | The aspect type name of the aspect. |
true | An aspect of this type exists; |
false | No aspect of this type exists; |
|
protected |
Tests whether a component of some specific type is present on the object.
TComponent | The type of component whose existence is being tested. |
true | The component exists; |
false | The component does not exist; |
|
inlineprivate |
|
inlineprivate |
|
inlineprivatevirtual |
Callback for when the aspect is activated (after it is attached to an active SimObject, or if the SimObject it was attached to has just been activated)
Reimplemented in PlayerCPURandom, PlayerLocal, UIButton, UIImage, UIPanel, UIText, UrController, UrLookAtBoard, UrRecords, UrSceneManager, UrSceneView, UrUIRecordsBrowser, UrUITutorialsBrowser, UrUIVersion, and UrUIView.
|
inlineprivatevirtual |
|
inlinestaticprotected |
Registers an implementation of an aspect with the SimSystem.
This gives the sim system a pointer to the function responsible for the construction of an aspect, allowing the aspect to be constructed by its description in a JSON scene file.
TSimObjectAspectDerived | The derived aspect's type. |
|
protected |
Removes an aspect from the underlying SimObject.
TSimObjectAspect | The type of the aspect being removed. |
|
protected |
Removes a component of some type belonging to the underlying SimObject.
TComponent | The type of component being removed. |
|
inlinevirtual |
Overriding this allows an aspect to respond to simulation updates.
simStepMillis | The time by which the simulation should be advanced, in milliseconds. |
|
protected |
Updates the value of a component belonging to this object to a new one.
TComponent | The type of component being updated. |
component | The new value of the component. |
|
inlinevirtual |
Overriding this allows an aspect to respond to variable updates.
variableStepMillis | The time since the execution of the last frame, in milliseconds. |
Reimplemented in UrSceneManager, UrSceneView, and UrUIView.
|
private |
The set of action bindings owned by this aspect.
|
private |
Value representing the readiness of this aspect.