Menu Editing Reference

From PMDOWiki
(Redirected from InteractableMenu Reference)

ILabeled

These properties and functions are included in every single Menu and MenuElement in the game, including SummaryMenus.

ILabeled.Label

An optional, read-only string identifier for this object. It is recommended to always use HasLabel before accessing it.


ILabeled:HasLabel()

Returns true if the object's Label is not an empty string. False otherwise.


ILabeled:LabelContains(System.String)

Returns true if the object's Label is not empty and it contains the provided string. False otherwise.

Arguments

  • substr: the string to look for.



MenuBase

These properties and functions are included in every single Menu in the game, including SummaryMenus.

MenuBase.Elements

The List of MenuElements inside this menu. This list can be interacted with directly to add or remove elements.


MenuBase.GetElementIndexByLabel(System.String)

Iterates through the Elements list and returns the index of the first element found whose Label matches the provided string. If no such element is found, it returns -1.

Arguments

  • label: the label to look for.


MenuBase.GetElementIndicesByLabel(params System.String[])

Iterates through the Elements list and returns a Dictionary containing all unique strings provided and the index of the first element found whose Label matches that specific string. Every string for which no such element is found will have its index set to -1.
You can retrieve a specific label's index with ret[label]. Keep in mind that these values do not update automatically if elements are removed.

Arguments

  • labels one or more labels or, alternatively, an array of labels to look for.



InteractableMenu

Any menu included in an AddMenu service message is an InteractableMenu, and will have all these properties and methods plus those described in the ILabeled and MenuBase sections.

InteractableMenu.SummaryMenus

The List of SummaryMenus used by this menu. This list can be interacted with directly to add or remove SummaryMenus.


InteractableMenu.GetSummaryIndexByLabel(System.String)

Iterates through the SummaryMenus list and returns the index of the first summary menu found whose Label matches the provided string. If no such summary menu is found, it returns -1.

Arguments

  • label: the label to look for.


InteractableMenu.GetSummaryIndicesByLabel(params System.String[])

Iterates through the SummaryMenus list and returns a Dictionary containing all unique strings provided and the index of the first summary menu found whose Label matches that specific string. Every string for which no such summary menu is found will have its index set to -1.
You can retrieve a specific label's index with ret[label]. Keep in mind that these values do not update automatically if summary menus are removed.

Arguments

  • labels one or more labels or, alternatively, an array of labels to look for.



ChoiceMenu

Any menu that has a list of choices to select from is a ChoiceMenu, and will have all these properties and methods plus those described in the ILabeled, MenuBase and InteractableMenu sections. Interacting with the Choices list directly can have inconsistent results, so it's recommended to use ImportChoices and ExportChoices instead.

ChoiceMenu.Choices

The list of MenuChoice elements that can be selected in this menu.

ChoiceMenu.NonChoices

The list of elements that are not choices, but are still part of this menu. An example is the title of the OthersMenu.

ChoiceMenu.Elements

This list is actually just an alias of NonChoices. You can use either and achieve the same result, but it is recommended to use NonChoices for better code clarity.


ChoiceMenu.ExportChoices()

Returns a copy of the current Choices list that can then be edited at will.


ChoiceMenu.ImportChoices(System.Collections.Generic.List<RogueEssence.Menu.IChoosable>)

Loads a list of IChoosables as the new Choices list and runs all of the necessary steps to fully reload the menu.

Arguments

  • choices: a list of IChoosable elements.


ChoiceMenu.ImportChoices(params RogueEssence.Menu.IChoosable[])

Loads an array or a parameter list of IChoosables as the new Choices list and runs all of the necessary steps to fully reload the menu.

Arguments

  • choices: an array or parameter list of IChoosable elements.


ChoiceMenu.GetChoiceIndexByLabel(System.String)

Iterates through the Choices list and returns the index of the first element found whose Label matches the provided string. If no such element is found, it returns -1.

Arguments

  • label: the label to look for.


ChoiceMenu.GetChoiceIndicesByLabel(params System.String[])

Iterates through the Choices list and returns a Dictionary containing all unique strings provided and the index of the first element found whose Label matches that specific string. Every string for which no such element is found will have its index set to -1.
You can retrieve a specific label's index with ret[label]. Keep in mind that these values do not update automatically if elements are removed.

Arguments

  • labels one or more labels or, alternatively, an array of labels to look for.


ChoiceMenu.GetNonChoiceIndexByLabel(System.String)

Iterates through the NonChoices list and returns the index of the first element found whose Label matches the provided string. If no such element is found, it returns -1.

Arguments

  • label: the label to look for.


ChoiceMenu.GetNonChoiceIndicesByLabel(params System.String[])

Iterates through the NonChoices list and returns a Dictionary containing all unique strings provided and the index of the first element found whose Label matches that specific string. Every string for which no such element is found will have its index set to -1.
You can retrieve a specific label's index with ret[label]. Keep in mind that these values do not update automatically if elements are removed.

Arguments

  • labels one or more labels or, alternatively, an array of labels to look for.



MultiPageMenu

Any ChoiceMenu whose list of choices takes up -or can take up- multiple pages is a MultiPageMenu, and will have all these properties and methods plus those described in the ILabeled, MenuBase, InteractableMenu and ChoiceMenu sections. Interacting with the Choice list is, however, highly discouraged, because it would only contain one page at a time. Use ImportChoices and ExportChoices instead.

MultiPageMenu.TotalChoices

The 2d matrix of IChoosables that contains all choices inside this menu, divided per page.


MultiPageMenu.ExportChoices()

Returns a List of all IChoosables contained by the menu in the order they appear in.


MultiPageMenu.ImportChoices(System.Collections.Generic.List<RogueEssence.Menu.IChoosable>)

Loads a list of IChoosables and registers it as the new TotalChoices matrix, running all of the necessary steps to fully reload the menu.

Arguments

  • choices: a list of IChoosable elements.