libultraship
Reimplementations of libultra (N64 SDK) functions for modern hardware
Loading...
Searching...
No Matches
Ship::GuiMenuBar Class Reference

The application's main ImGui menu bar rendered at the top of the screen. More...

#include <GuiMenuBar.h>

Inheritance diagram for Ship::GuiMenuBar:
[legend]
Collaboration diagram for Ship::GuiMenuBar:
[legend]

Public Member Functions

 GuiMenuBar (std::shared_ptr< ConsoleVariable > consoleVariable, std::shared_ptr< Window > window, const std::string &visibilityConsoleVariable, bool isVisible)
 Constructs a GuiMenuBar with constructor-injected dependencies and explicit initial visibility.
 
 GuiMenuBar (const std::string &visibilityConsoleVariable, bool isVisible)
 Constructs a GuiMenuBar with an explicit initial visibility.
 
 GuiMenuBar (const std::string &visibilityConsoleVariable)
 Constructs a GuiMenuBar whose initial visibility is read from the CVar.
 
void Draw () override
 Calls ImGui::BeginMainMenuBar(), invokes DrawElement(), and ends the bar.
 
- Public Member Functions inherited from Ship::GuiElement
 GuiElement (const std::string &name, bool isVisible)
 Constructs a GuiElement with an explicit initial visibility.
 
 GuiElement (const std::string &name)
 Constructs a GuiElement that starts hidden.
 
virtual ~GuiElement ()
 
void Update ()
 Updates element state for the current frame (called before Draw).
 
void Show ()
 Makes the element visible (equivalent to SetVisibility(true)).
 
void Hide ()
 Hides the element (equivalent to SetVisibility(false)).
 
void ToggleVisibility ()
 Flips the visibility state between shown and hidden.
 
bool IsVisible ()
 Returns true if the element is currently visible.
 
virtual void DrawElement ()=0
 Renders the element's content (pure ImGui draw calls).
 
- Public Member Functions inherited from Ship::Component
 Component (const std::string &name, std::shared_ptr< Context > context=nullptr)
 Constructs a Component with the given name.
 
virtual ~Component ()
 
void Init (const nlohmann::json &initArgs=nlohmann::json::object())
 Performs one-time initialization of this component.
 
bool IsInitialized () const
 Returns true once Init() (or MarkInitialized()) has completed successfully.
 
const std::string & GetName () const
 Returns the name of this Component.
 
std::string ToString () const
 Returns a human-readable string representation (e.g. "Name (id)").
 
std::string ToTreeString (int depth=0) const
 Returns a human-readable tree representation of this component and its children.
 
 operator std::string () const
 Conversion operator to std::string; equivalent to ToString().
 
ParentComponentListGetParents ()
 Returns a mutable reference to the parent list.
 
const ParentComponentListGetParents () const
 Returns a const reference to the parent list.
 
ComponentListGetChildren ()
 Returns a mutable reference to the child list.
 
const ComponentListGetChildren () const
 Returns a const reference to the child list.
 
virtual std::shared_ptr< ComponentTryGetSharedComponent () noexcept
 Returns a shared_ptr to this Component when available, otherwise nullptr.
 
virtual std::shared_ptr< ComponentGetSharedComponent ()
 Returns a shared_ptr to this Component via the correct enable_shared_from_this base.
 
template<typename T >
bool HasInChildren () const
 Checks whether any descendant Component matches type T via BFS.
 
template<typename T >
std::shared_ptr< T > GetFirstInChildren () const
 Returns the first descendant that matches type T via BFS.
 
template<typename T >
std::shared_ptr< std::vector< std::shared_ptr< T > > > GetInChildren () const
 Returns all descendants that match type T via BFS.
 
template<typename T >
bool HasInParents () const
 Checks whether any ancestor Component matches type T via BFS.
 
template<typename T >
std::shared_ptr< T > GetFirstInParents () const
 Returns the first ancestor that matches type T via BFS.
 
template<typename T >
std::shared_ptr< std::vector< std::shared_ptr< T > > > GetInParents () const
 Returns all ancestors that match type T via BFS.
 
- Public Member Functions inherited from Ship::Part
 Part ()
 Constructs a Part and assigns it a unique ID.
 
 Part (std::shared_ptr< Context > context)
 Constructs a Part with an explicit Context reference and unique ID.
 
virtual ~Part ()=default
 
uint64_t GetId () const
 Returns the unique identifier for this Part.
 
bool operator== (const Part &other) const
 Compares two Parts for equality by their unique IDs.
 
std::shared_ptr< ContextGetContext () const
 Returns the Context this Part belongs to, or nullptr if unset.
 
void SetContext (std::shared_ptr< Context > ctx)
 Sets the Context this Part belongs to.
 

Protected Member Functions

void SetVisibility (bool visible) override
 Overrides SetVisibility to also write the new state to the backing CVar.
 
void OnInit (const nlohmann::json &initArgs={}) override
 Component initialization hook.
 
- Protected Member Functions inherited from Ship::GuiElement
virtual void UpdateElement ()=0
 Per-frame logic update called by Update(). Subclasses perform state updates here.
 
- Protected Member Functions inherited from Ship::Component
void MarkInitialized ()
 Marks this component as initialized without going through Init().
 
template<typename T >
std::shared_ptr< T > RequireDependency (const std::shared_ptr< T > &dependency, const std::string &dependencyName) const
 Returns a cached dependency after validating it exists and is initialized.
 
- Protected Member Functions inherited from Ship::Part
virtual void OnAdded (bool forced)
 Called after this Part has been added to a PartList.
 
virtual void OnRemoved (bool forced)
 Called after this Part has been removed from a PartList.
 

Additional Inherited Members

- Protected Attributes inherited from Ship::GuiElement
bool mIsVisible
 Current visibility state. Subclasses may read this directly.
 

Detailed Description

The application's main ImGui menu bar rendered at the top of the screen.

GuiMenuBar wraps ImGui::BeginMainMenuBar() / ImGui::EndMainMenuBar() and integrates with the CVar system so that its visibility can be toggled from the developer console and persists across sessions.

Subclass GuiMenuBar and implement DrawElement() to populate the menu bar with ImGui::BeginMenu() / ImGui::MenuItem() calls. Register the instance with Gui::SetMenuBar().

Constructor & Destructor Documentation

◆ GuiMenuBar() [1/3]

Ship::GuiMenuBar::GuiMenuBar ( std::shared_ptr< ConsoleVariable consoleVariable,
std::shared_ptr< Window window,
const std::string &  visibilityConsoleVariable,
bool  isVisible 
)

Constructs a GuiMenuBar with constructor-injected dependencies and explicit initial visibility.

Parameters
consoleVariableConsoleVariable dependency for CVar read/write.
windowWindow dependency for GUI save scheduling.
visibilityConsoleVariableCVar name used to persist/read visibility.
isVisibleInitial visibility state.

◆ GuiMenuBar() [2/3]

Ship::GuiMenuBar::GuiMenuBar ( const std::string &  visibilityConsoleVariable,
bool  isVisible 
)

Constructs a GuiMenuBar with an explicit initial visibility.

Parameters
visibilityConsoleVariableCVar name used to persist/read visibility.
isVisibleInitial visibility state.

◆ GuiMenuBar() [3/3]

Ship::GuiMenuBar::GuiMenuBar ( const std::string &  visibilityConsoleVariable)

Constructs a GuiMenuBar whose initial visibility is read from the CVar.

Parameters
visibilityConsoleVariableCVar name used to persist/read visibility.

Member Function Documentation

◆ Draw()

void Ship::GuiMenuBar::Draw ( )
overridevirtual

Calls ImGui::BeginMainMenuBar(), invokes DrawElement(), and ends the bar.

Also syncs the visibility state back to the CVar if it changed.

Implements Ship::GuiElement.

◆ OnInit()

void Ship::GuiMenuBar::OnInit ( const nlohmann::json &  initArgs = {})
overrideprotectedvirtual

Component initialization hook.

Called by Component::Init() exactly once. Subclasses override OnInit() for their specific setup and must call GuiElement::OnInit(initArgs) (or Component::OnInit(initArgs)) to preserve the initialization contract.

Reimplemented from Ship::GuiElement.

◆ SetVisibility()

void Ship::GuiMenuBar::SetVisibility ( bool  visible)
overrideprotectedvirtual

Overrides SetVisibility to also write the new state to the backing CVar.

Parameters
visibleNew visibility state.

Reimplemented from Ship::GuiElement.


The documentation for this class was generated from the following file: