|
Brunot
|
A menu that organizes its parents' children (in the node) either horizontally or vertically. More...
#include <Menu.h>
Public Member Functions | |
| Menu (float gapSize, int widthSize, int heightSize, menuType typeMenu) | |
| Menu () | |
| Menu (const Menu &)=default | |
| auto | operator= (const Menu &) -> Menu &=default |
| ~Menu () override=default | |
| Menu (Menu &&other) noexcept=default | |
| auto | operator= (Menu &&other) noexcept -> Menu &=default |
| auto | clone () const -> std::unique_ptr< GameObject > override |
| makes a copy a GameObject even if it's held polymorphically | |
| auto | componentShowMenu () -> void override |
| 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 | onEnterEngine () -> void override |
| hook that is called when a GameObject enters the Engine tree. | |
| auto | load (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 | width () const -> int |
| Returns the width of the menu. | |
| auto | height () const -> int |
| Returns the height of the menu. | |
| auto | createEmptyButton () -> std::unique_ptr< Entity > |
| Creates an empty button, intended for filling the board. | |
| auto | getTranslationOfIndex (int x, int y) -> Point2D |
| Returns the translation of an item at given index. | |
| auto | pushEntityHorizontal (Entity *entity) -> void |
| Pushes an item to the first row of a menu, intended for the cards. | |
| auto | pushEntity (Entity *entity) -> void |
| A universal push function that automatically fills in empty spaces. | |
| auto | removeEntity (int x, int y) -> void |
| Removes a specific entity at given index. | |
| auto | getAboveEntity (Entity *entity) -> Entity * |
| When given an entity, it will return the one above in the menu. | |
| auto | getBelowEntity (Entity *entity) -> Entity * |
| When given an entity, it will return the one below in the menu. | |
| auto | getLeftEntity (Entity *entity) -> Entity * |
| When given an entity, it will return the one left in the menu. | |
| auto | getRightEntity (Entity *entity) -> Entity * |
| When given an entity, it will return the one right in the menu. | |
| auto | getGamespacePositionForEntity (Entity *entity) const -> Vector4D |
| Gets where an entity is in its gamespace position, based on where it is in the menu. | |
| auto | getMenuElementPosition (Entity *entity) const -> std::pair< int, int > |
| Returns the index of the entity in the menu. | |
| auto | updateMenuChildren () -> void |
| Resizes menu in memory, allocates new items, and then calls compact menu. | |
| auto | compactMenu () -> void |
| Visually shrinks the menu, intended for when an element gets removed. | |
| auto | getButtonEntity (int x, int y) -> Entity * |
| takes in a position, and gets the entitiy in the position, blocking overflow by locking to edges, or wrapping, based on type of menu @ todo fully document getButtonEntity | |
| auto | deleteAllEntities () const -> void |
| Deletes all entities inside of the grid. | |
| auto | fillMenu () -> void |
| auto | linkMessages () -> void |
| Public Member Functions inherited from Component | |
| auto | getType () const -> ComponentTypeEnum |
| auto | getKey () const -> Key override |
| Generates a unique Key that corresponds to the GameObject. | |
| auto | showMenu () -> void override |
| Called before update each frame, for calling ImGui editor code relevant to the gameObject. | |
| auto | getEntityParent () const -> Entity * |
| gets the parent as an Entity. | |
| 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 | 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 | getParent () const -> GameObject * |
| Gets the parent of a GameObject. | |
| 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 | destroyed () const -> bool |
| auto | getUUID () const -> gobj::UUID |
| 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. | |
| void | calculateFormattedName () const |
| 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 (const 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 (const 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 (const bool _shouldReceiveMessages) -> void |
| set whether the GameObject should Receive Messags, and whether all of it's children should receive messages | |
| auto | setActive (const bool shouldBeActive) -> void |
| set the GameObject should update, render, and receive messages | |
Private Member Functions | |
| auto | arrangeEntityAccordingToPositionInMenu (Entity *entity) const -> void |
| Moves an entity to its gamespace position, based on where it is in the menu. | |
| auto | returnWrappedMenuPosition (int x, int y) -> Point2D |
| Returns the menu position while accounting for wrapped logic, intended as a helper function for returnMenuPosition. | |
| auto | returnDefaultMenuPosition (int x, int y) -> Point2D |
| Returns the menu position while accounting for default logic, intended as a helper function for returnMenuPosition. | |
| auto | returnButtonIndexWrapped (int x, int y) -> Entity * |
| Returns the menu position while accounting for wrapped logic, intended as a helper function for getButtonEntity. | |
| auto | returnButtonIndexDefault (int x, int y) -> Entity * |
| Returns the menu position while accounting for default logic, intended as a helper function for getButtonEntity. | |
| auto | getButtonPosition (Entity *ent) -> std::pair< int, int > |
| takes in the entity and returns the index (x and y) of where it is in the menu | |
| auto | repositionItems (std::vector< Entity * > ent, int column) -> void |
| Visually arranges the entities in a given column, intended as a helper function for compactMenu. | |
Private Attributes | |
| float | gapBetweenObjects = 0.01f |
| How much visual space is put between objects in the menu. | |
| int | maxMenuWidth = 3 |
| How wide menu grid is (how many objects it can hold horizontally). | |
| int | maxMenuHeight = 3 |
| How tall the menu grid is (how many objects it can hold vertically). | |
| menuType | type = menuType::mDefault |
| How to tell if the menu wraps. | |
| std::vector< std::vector< Entity * > > | buttons |
| The managed items/entities for the menu. | |
Friends | |
| auto | to_json (json &j, const Menu &m) ->void |
| auto | from_json (const json &j, Menu &m) ->void |
Additional Inherited Members | |
| Public Types inherited from Component | |
| enum | ComponentTypeEnum : unsigned short { cErrorType = 0 , cPhysics = 100 , cAnimation = 200 , cTransform = 300 , cCollider = 400 , cSprite = 500 , cBehavior = 600 , cTable = 650 , cCard = 700 , cDeck = 750 , cPlayer = 800 , cBoard = 850 , cScene = 900 , cPauseScene = 915 , cMainScene = 920 , cMainMenuScene = 925 , cConfirmDestructiveActionScene = 930 , cOptionsScene = 935 , cCreditsScene = 940 , cTutorialScene = 945 , cBackground = 950 , cSplashScreenScene = 955 , cWinScreenScene = 960 , cFlags = 1000 , cSelectable = 1100 , cMenu = 1200 , cActionProxy = 1300 , cEntityMover = 1400 , cMenuItem = 1500 , cMenuPosition = 1525 , cSelector = 1600 , cButton = 1700 } |
| This enum lists out every type of component we have. More... | |
| Public Attributes inherited from GameObject | |
| friend | Entity |
| friend | Node |
| friend | ChildrenHandeler |
| friend | Engine |
| Protected Member Functions inherited from Component | |
| Component (ComponentTypeEnum type, const char *typeName) | |
| auto | getComponentJson () const -> json |
| auto | getChildren () const -> std::shared_ptr< std::vector< GameObject * > > override |
| override for component to return a vector of no children | |
| Protected Member Functions inherited from GameObject | |
| auto | setInternalParent (GameObject *parent) -> bool |
| sets the internal parent of a GameObject directly, avoiding abstractions provided by ParentTo(). | |
| auto | getGameObjectJson () const -> json |
| Used for serializing GameObjects. | |
| auto | setGameObjectJson (const json &stream) -> void |
| used for deserializing GameObjects | |
| auto | checkAddToSceneHook () -> void |
| Determine if the GameObject was recently added to the engine, and if it was, call onEngineEnter. | |
A menu that organizes its parents' children (in the node) either horizontally or vertically.
Inherently supports 2D grids. Typically used with Button s and a Selector, but doesn't depend on them in any way
| Menu::Menu | ( | float | gapSize, |
| int | widthSize, | ||
| int | heightSize, | ||
| menuType | typeMenu ) |
|
inline |
|
default |
|
overridedefault |
|
defaultnoexcept |
|
private |
Moves an entity to its gamespace position, based on where it is in the menu.
| entity | an entity in the menu |
|
inlineoverridevirtual |
makes a copy a GameObject even if it's held polymorphically
Implements GameObject.
| auto Menu::compactMenu | ( | ) | ->void |
Visually shrinks the menu, intended for when an element gets removed.
|
overridevirtual |
| auto Menu::createEmptyButton | ( | ) | ->std::unique_ptr< Entity > |
Creates an empty button, intended for filling the board.
| auto Menu::deleteAllEntities | ( | ) | const->void |
Deletes all entities inside of the grid.
|
inlineoverridevirtual |
currently unused, but intended to but was assumed to be necessary for a proper ImGui editor
Implements GameObject.
| auto Menu::fillMenu | ( | ) | ->void |
When given an entity, it will return the one above in the menu.
When given an entity, it will return the one below in the menu.
| auto Menu::getButtonEntity | ( | int | x, |
| int | y )->Entity * |
takes in a position, and gets the entitiy in the position, blocking overflow by locking to edges, or wrapping, based on type of menu @ todo fully document getButtonEntity
| x | |
| y |
|
private |
takes in the entity and returns the index (x and y) of where it is in the menu
Gets where an entity is in its gamespace position, based on where it is in the menu.
| entity | an entity in the menu |
When given an entity, it will return the one left in the menu.
| auto Menu::getMenuElementPosition | ( | Entity * | entity | ) | const->std::pair< int, int > |
Returns the index of the entity in the menu.
When given an entity, it will return the one right in the menu.
| auto Menu::getTranslationOfIndex | ( | int | x, |
| int | y )->Point2D |
Returns the translation of an item at given index.
| auto Menu::height | ( | ) | const->int |
Returns the height of the menu.
| auto Menu::linkMessages | ( | ) | ->void |
|
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 immedietly after a gameobject's parent is called. Functionality may not be correct if an object was removed from the engine then re-added
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 |
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 Menu::pushEntity | ( | Entity * | entity | ) | ->void |
A universal push function that automatically fills in empty spaces.
| auto Menu::pushEntityHorizontal | ( | Entity * | entity | ) | ->void |
Pushes an item to the first row of a menu, intended for the cards.
| auto Menu::removeEntity | ( | int | x, |
| int | y )->void |
Removes a specific entity at given index.
|
private |
Visually arranges the entities in a given column, intended as a helper function for compactMenu.
|
private |
Returns the menu position while accounting for default logic, intended as a helper function for getButtonEntity.
|
private |
Returns the menu position while accounting for wrapped logic, intended as a helper function for getButtonEntity.
|
private |
Returns the menu position while accounting for default logic, intended as a helper function for returnMenuPosition.
|
private |
Returns the menu position while accounting for wrapped logic, intended as a helper function for returnMenuPosition.
|
overridevirtual |
Implementations will load the state of a GameObject to a th::Json object.
Unimplemented in GameObject
| stream | th::Json Object |
Implements GameObject.
| auto Menu::updateMenuChildren | ( | ) | ->void |
Resizes menu in memory, allocates new items, and then calls compact menu.
| auto Menu::width | ( | ) | const->int |
Returns the width of the menu.
|
private |
The managed items/entities for the menu.
|
private |
How much visual space is put between objects in the menu.
|
private |
How tall the menu grid is (how many objects it can hold vertically).
|
private |
How wide menu grid is (how many objects it can hold horizontally).
|
private |
How to tell if the menu wraps.