IMenuOption
Interfacepublic interface IMenuOption : IDisposableRepresents a menu option that can be displayed and interacted with by players.
View sourceProperties
Gets a value indicating whether the menu should be closed after handling the click.
bool CloseAfterClick { get; }Gets or sets the comment content displayed for this menu option.
string Comment { get; set; }This is a global property. Changing it will affect what all players see.
Gets or sets a value indicating whether this option can be interacted with.
bool Enabled { get; set; }This is a global property. Changing it will affect what all players see.
Gets the number of lines this option requests to occupy in the menu.
int LineCount { get; }The maximum display width for menu option text in relative units.
float MaxWidth { get; set; }Gets the menu that this option belongs to.
IMenuAPI? Menu { get; }This property will be null until the option is added to a menu via IMenuOption). When implementing custom menu options, avoid accessing this property in the constructor as it will not be set yet.
Gets or sets a value indicating whether a sound should play when this option is selected.
bool PlaySound { get; set; }Gets or sets an object that contains data about this option.
object? Tag { get; set; }Gets or sets the text content displayed for this menu option.
string Text { get; set; }This is a global property. Changing it will affect what all players see.
Gets or sets the text size for this option.
MenuOptionTextSize TextSize { get; set; }Gets or sets the text overflow style for this option.
MenuOptionTextStyle TextStyle { get; set; }Gets or sets a value indicating whether this option is visible in the menu.
bool Visible { get; set; }This is a global property. Changing it will affect what all players see.
Methods
Gets the display text for this option as it should appear to the specified player.
string GetDisplayText(IPlayer player, int displayLine = 0)When a menu option occupies multiple lines, MenuAPI may only need to display a specific line of that option. When LineCount=1 : The displayLine parameter is not needed; return the HTML-formatted string directly. When LineCount>=2 : Check the displayLine parameter: displayLine=0 : Return all content displayLine=1 : Return only the first line content displayLine=2 : Return only the second line content And so on... Note: MenuAPI ensures that the displayLine parameter will not exceed the option's LineCount .
Determines whether this option is enabled for the specified player.
bool GetEnabled(IPlayer player)- playerIPlayerThe player to check enabled state for.
Determines whether this option is visible to the specified player.
bool GetVisible(IPlayer player)- playerIPlayerThe player to check visibility for.
Determines whether the click task for the specified player is completed.
bool IsClickTaskCompleted(IPlayer player)- playerIPlayerThe player to check.
Handles the click action for this option.
ValueTask OnClickAsync(IPlayer player)- playerIPlayerThe player who clicked the option.
Validates whether the specified player can interact with this option.
ValueTask<bool> OnValidatingAsync(IPlayer player)- playerIPlayerThe player to validate.
Sets the enabled state of this option for a specific player.
void SetEnabled(IPlayer player, bool enabled)The per-player enabled state has lower priority than the global Enabled property.
Sets the visibility of this option for a specific player.
void SetVisible(IPlayer player, bool visible)The per-player visibility has lower priority than the global Visible property.
Occurs after HTML markup is assembled, allowing customization of the final HTML output.
event EventHandler<MenuOptionFormattingEventArgs>? AfterFormatOccurs before HTML markup is assembled, allowing customization of the text content.
event EventHandler<MenuOptionFormattingEventArgs>? BeforeFormatOccurs when the option is clicked by a player.
event AsyncEventHandler<MenuOptionClickEventArgs>? ClickOccurs when the enabled state of the option changes.
event EventHandler<MenuOptionEventArgs>? EnabledChangedOccurs when the text of the option changes.
event EventHandler<MenuOptionEventArgs>? TextChangedOccurs before a Click event is processed, allowing validation and cancellation.
event EventHandler<MenuOptionValidatingEventArgs>? ValidatingOccurs when the visibility of the option changes.
event EventHandler<MenuOptionEventArgs>? VisibilityChanged