# ChooseOption Methods to interact with the game context menu. ```{figure} ../../images/chooseoption.png ``` - - - ## TOption Helper record to interact with {ref}`ChooseOption`. - - - ## TChooseOption Core record responsible with interacting with the {ref}`ChooseOption` context menu. - - - ## ChooseOption.Setup ```pascal procedure TChooseOption.Setup(); ``` Draws the context menu's "Choose Option" header, which {ref}`ChooseOption.Header` looks for on screen to find the menu. - - - ## ChooseOption.IsOpen ```pascal function TChooseOption.IsOpen(): Boolean; ``` Returns True/False if the {ref}`ChooseOption` menu is currently visible/open. Example: ```pascal WriteLn ChooseOption.IsOpen(); ``` - - - ## ChooseOption.WaitOpen ```pascal function TChooseOption.WaitOpen(time: Integer; interval: Integer = -1): Boolean; ``` Returns True/False if the {ref}`ChooseOption` menu is becomes visible/open within the specified `time`. Example: ```pascal WriteLn ChooseOption.WaitOpen(); ``` - - - ## ChooseOption.Open ```pascal function TChooseOption.Open(): Boolean; ``` Opens the {ref}`ChooseOption` context menu if it's not currently open. Example: ```pascal WriteLn ChooseOption.Open(); ``` - - - ## ChooseOption.GetOptions ```pascal function TChooseOption.GetOptions(): TChooseOption_OptionArray; ``` Returns a `TOptionArray` of all available options in the {ref}`ChooseOption` context menu. This is a internal method, you probably don't need to call it. - - - ## ChooseOption.FindSubmenu ```pascal function TChooseOption.FindSubmenu(): TBox; ``` Returns the bounds of the submenu if it exists, otherwise returns an empty TBox. - - - ## ChooseOption.Close ```pascal function TChooseOption.Close(): Boolean; ``` Closes the {ref}`ChooseOption` context menu if it's open. Returns True on success. Example: ```pascal WriteLn ChooseOption.Close(); ``` - - - ## ChooseOption.Find ```pascal function TChooseOption.Find(strings: TStringArray; out option: TOption; matchCase: Boolean = True; closeOnFail: Boolean = True): Boolean; ``` Check if an option is available in the {ref}`ChooseOption` context menu. Returns true if any of the specified `strings` is available and the `option` parameter will return the `TOption` data. Example: ```pascal {$I WaspLib/main.simba} var option: TOption; begin if ChooseOption.Find(['Take'], option) then ShowOnTarget(option.Bounds); end. ``` - - - ## ChooseOption.ContainsAny ```pascal function TChooseOption.ContainsAny(strings: TStringArray; matchCase, closeOnFail: Boolean = True): Boolean; ``` Checks if an option is available in the {ref}`ChooseOption` context menu. Returns true if any of the specified `strings` is available. Example: ```pascal {$I WaspLib/main.simba} begin WriteLn ChooseOption.ContainsAny(['Take']); end. ``` - - - ## ChooseOption.Hover ```pascal procedure TChooseOption.Hover(const option: TOption); function TChooseOption.Hover(strings: TStringArray; matchCase, closeOnFail: Boolean = True): Boolean; overload; function TChooseOption.Hover(text: String; matchCase, closeOnFail: Boolean = True): Boolean; overload; ``` Hovers the specified option if it exists on the {ref}`ChooseOption` context menu. Example: ```pascal WriteLn ChooseOption.Select('Take Bones'); ``` - - - ## ChooseOption.Select ```pascal procedure TChooseOption.Select(const option: TOption); function TChooseOption.Select(strings: TStringArray; matchCase, closeOnFail: Boolean = True): Boolean; overload; function TChooseOption.Select(text: String; matchCase, closeOnFail: Boolean = True): Boolean; overload; ``` Selects the specified option if it exists on the {ref}`ChooseOption` context menu. Example: ```pascal WriteLn ChooseOption.Select('Take Bones'); ``` - - - ## ChooseOption.HasSubmenu ```pascal function TChooseOption.HasSubmenu(): Boolean; ``` Returns True if the {ref}`ChooseOption` context menu has a submenu (indicated by ' >' in the option text). - - - ## ChooseOption.IsSubmenuOpen ```pascal function TChooseOption.IsSubmenuOpen(): Boolean; ``` Returns True if a submenu is currently open and visible. - - - ## ChooseOption.OpenSubmenu ```pascal function TChooseOption.OpenSubmenu(closeIfNotFound: Boolean = True): Boolean; ``` Opens a submenu if it exists. Returns True if successful. If closeIfNotFound is True, closes the context menu if no submenu is found. - - - ## ChooseOption.GetSubmenuOptions ```pascal function TChooseOption.GetSubmenuOptions(): TOptionArray; ``` Returns a `TOptionArray` of all available options in the submenu. This is a internal method, you probably don't need to call it. - - - ## ChooseOption.FindSubmenuOption ```pascal function TChooseOption.FindSubmenuOption(text: TStringArray; out option: TOption; matchCase, closeIfNotFound: Boolean = True): Boolean; ``` Searches for a specific option in the submenu. Returns True if found. The found option is returned through the 'option' parameter. - - - ## ChooseOption.HoverSubmenuOption ```pascal function TChooseOption.HoverSubmenuOption(const option: TOption): Boolean; function TChooseOption.HoverSubmenuOption(text: TStringArray; matchCase, closeOnFail: Boolean = True): Boolean; overload; ``` Hovers over a specific option in the submenu. Returns True if successful. - - - ## ChooseOption.SelectSubmenuOption ```pascal function TChooseOption.SelectSubmenuOption(const option: TOption): Boolean; function TChooseOption.SelectSubmenuOption(text: TStringArray; matchCase, closeOnFail: Boolean = True): Boolean; ``` Selects a specific option in the submenu by clicking on it. Returns True if successful. - - - ## ChooseOption variable Global {ref}`TChooseOption` variable.