VoltMod
C++23 framework for CS2 server plugins
Loading...
Searching...
No Matches
VoltMod::MenuBuilder Class Reference

#include <MenuBuilder.hpp>

Public Member Functions

 MenuBuilder (std::string title)
 
MenuBuilder & Subtitle (std::string subtitle)
 
MenuBuilder & Add (MenuItem item)
 
MenuBuilder & Add (const MenuRowSpec auto &row)
 
MenuBuilder & Button (std::string label, std::function< void(int slot)> activate)
 
MenuBuilder & Submenu (std::string label, std::function< std::shared_ptr< Menu >(int slot)> build)
 
MenuBuilder & Text (std::string label)
 
MenuBuilder & EmptyText (std::string label)
 
std::shared_ptr< Menu > Build ()
 

Detailed Description

Fluent builder for menus and row specs.

Definition at line 160 of file MenuBuilder.hpp.

Constructor & Destructor Documentation

◆ MenuBuilder()

VoltMod::MenuBuilder::MenuBuilder ( std::string  title)
inlineexplicit

Definition at line 163 of file MenuBuilder.hpp.

References VoltMod::ReadFile(), and VoltMod::Menu::Title.

Member Function Documentation

◆ Add() [1/2]

MenuBuilder & VoltMod::MenuBuilder::Add ( const MenuRowSpec auto &  row)
inline

Appends any compatible row spec.

Definition at line 180 of file MenuBuilder.hpp.

References Add(), and VoltMod::ReadFile().

Referenced by Add().

◆ Add() [2/2]

MenuBuilder & VoltMod::MenuBuilder::Add ( MenuItem  item)
inline

Append a row built by hand.

Definition at line 173 of file MenuBuilder.hpp.

References VoltMod::Menu::Items, and VoltMod::ReadFile().

Referenced by Button(), Submenu(), and Text().

◆ Build()

std::shared_ptr< Menu > VoltMod::MenuBuilder::Build ( )
inline

Returns the built menu. The builder must not be reused after this.

Definition at line 205 of file MenuBuilder.hpp.

References VoltMod::Menu::Items, and VoltMod::Text.

Referenced by VoltMod::BuildPlayerPicker().

◆ Button()

MenuBuilder & VoltMod::MenuBuilder::Button ( std::string  label,
std::function< void(int slot)>  activate 
)
inline

ButtonRow with nothing but a label and a callback.

Definition at line 183 of file MenuBuilder.hpp.

References Add(), VoltMod::ButtonRow::Label, and VoltMod::ReadFile().

◆ EmptyText()

MenuBuilder & VoltMod::MenuBuilder::EmptyText ( std::string  label)
inline

Sets a text row used only when no other rows were added.

Definition at line 198 of file MenuBuilder.hpp.

References VoltMod::ReadFile().

◆ Submenu()

MenuBuilder & VoltMod::MenuBuilder::Submenu ( std::string  label,
std::function< std::shared_ptr< Menu >(int slot)>  build 
)
inline

SubmenuRow with nothing but a label and a factory.

Definition at line 189 of file MenuBuilder.hpp.

References Add(), VoltMod::SubmenuRow::Label, and VoltMod::ReadFile().

◆ Subtitle()

MenuBuilder & VoltMod::MenuBuilder::Subtitle ( std::string  subtitle)
inline

Sets optional plain-text detail shown with the title.

Definition at line 166 of file MenuBuilder.hpp.

References VoltMod::ReadFile(), and VoltMod::Menu::Subtitle.

◆ Text()

MenuBuilder & VoltMod::MenuBuilder::Text ( std::string  label)
inline

TextRow: a heading or divider.

Definition at line 195 of file MenuBuilder.hpp.

References Add(), VoltMod::TextRow::Label, and VoltMod::ReadFile().


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