|
Brunot
|
A menu that organizes its parents' children (in the node) either horizontally or vertically. More...
#include <Menu.h>
Classes | |
| struct | PositioningInformation |
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 (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 | width () const -> int |
| Returns the maximum width of the menu. | |
| auto | sizeWidth () const -> int |
| Returns the current 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 | removeEntity (Entity *entity) -> void |
| Removes a specific entity from menu. | |
| 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 | 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 | horizontalCompactMenu () -> void |
| Visually shrinks the menu, intended for when an element gets removed from a player hand. | |
| 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 | getChildScale () const -> Vector4D |
| Returns what the scale of a child inside the menu should be. | |
| auto | drawDebugLines (AffineMatrix transform) -> 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 | 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 | 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. | |
| 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 | |
Private Member Functions | |
| 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 | |
| void | recalculatePositioning () |
| Recalculates where children inside the menu should be positioned + scaled in the game. | |
| void | recalculateHorizontalPositioning () |
| Recalculates where children inside the menu should be positioned + scaled in the game. | |
| auto | repositionItems (const std::vector< Entity * > &ent, int column) -> void |
| Visually arranges the entities in a given column, intended as a helper function for compactMenu. | |
| auto | repositionHorizontalItems (const 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 | maxItemsWide = 3 |
| How wide menu grid is (how many objects it can hold horizontally). | |
| int | maxItemsHeight = 3 |
| How tall the menu grid is (how many objects it can hold vertically). | |
| Vector4D | originPoint {0.f, 0.f, 0, 1} |
| Vector4D | menuScale {1.f, 1.f, 0.f, 0.f} |
| menuType | type = menuType::mDefault |
| How to tell if the menu wraps. | |
| PositioningInformation | posInfo |
| Used to keep track of where items in the menu should be put in the game. | |
| 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 , cPlayerCountScene = 965 , cPlayerJoinScene = 970 , cFlags = 1000 , cSelectable = 1100 , cMenu = 1200 , cActionList = 1300 , cEntityMover = 1400 , cMenuItem = 1500 , cMenuPosition = 1525 , cSelector = 1600 , cButton = 1700 , cParticleGenerator = 2500 } |
| 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 |
|
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.
| auto Menu::drawDebugLines | ( | AffineMatrix | transform | ) | ->void |
|
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
| auto Menu::getChildScale | ( | ) | const->Vector4D |
Returns what the scale of a child inside the menu should be.
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::horizontalCompactMenu | ( | ) | ->void |
Visually shrinks the menu, intended for when an element gets removed from a player hand.
| 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 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 |
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.
|
private |
Recalculates where children inside the menu should be positioned + scaled in the game.
Only accounts for horizontal elements.
|
private |
Recalculates where children inside the menu should be positioned + scaled in the game.
Should be called when the dimensions of the menu are changed
| auto Menu::removeEntity | ( | Entity * | entity | ) | ->void |
Removes a specific entity from menu.
| 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.
Only accounts for horizontal elements.
|
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::sizeWidth | ( | ) | const->int |
Returns the current width of the menu.
| auto Menu::updateMenuChildren | ( | ) | ->void |
Resizes menu in memory, allocates new items, and then calls compact menu.
| auto Menu::width | ( | ) | const->int |
Returns the maximum 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 |
|
private |
|
private |
Used to keep track of where items in the menu should be put in the game.
|
private |
How to tell if the menu wraps.