# Client Methods relating to targeting the game client and detecting client states. - - - ## EClient ```pascal EClient = enum(UNKNOWN, LEGACY, RUNELITE, OFFICIAL); ``` Enum that represent the client type. - - - ## EMode ```pascal EMode = enum(UNKNOWN, FIXED, RESIZABLE_CLASSIC, RESIZABLE_MODERN); ``` Enum that represent the client mode. - - - ## EPopoutPanel ```pascal EPopoutPanel = enum(UNKNOWN, DISABLED, ENABLED); ``` Enum that represent the state of the popout panel on the official client. - - - ## TClient Record representing the RuneScape client ({ref}`Client`. - - - ## Client.GetClient ```pascal function TClient.GetClient(): EClient; ``` Returns the client type being used. Example: ```pascal WriteLn Client.GetClient(); ``` - - - ## Client._Bounds ```pascal function TClient._Bounds(img: TImage): TBox; function TClient._Bounds(): TBox; overload; ``` Internal helper methods to figure out the client bounds when we are on the `EClient.OFFICIAL` client. You should never have to use this directly. Example: ```pascal ShowOnTarget(Client._Bounds()); ``` - - - ## Client.GetPopoutPanelState ```pascal function TClient.GetPopoutPanelState(img: TImage): EPopoutPanel; function TClient.GetPopoutPanelState(): EPopoutPanel; overload; ``` Internal helper methods to figure out if the "Popout" panel is open or not when we are on the `EClient.OFFICIAL` client. You should never have to use this directly. Example: ```pascal WriteLn Client.GetPopoutPanelState(); ``` - - - ## Client.Bounds ```pascal property TClient.Bounds: TBox; ``` Dynamic client bounds to handle different client quirks. Example: ```pascal ShowOnTarget(Client.Bounds); ``` - - - ## Client.GetMode ```pascal function TClient.GetMode(): EMode; ``` Returns the client mode. Example: ```pascal WriteLn Client.GetMode(); ``` - - - ## Client.ModeChanged ```pascal function TClient.ModeChanged(): Boolean; ``` Returns true if the client mode changed. - - - ## Client.WaitModeChange ```pascal function TClient.WaitModeChange(time: Integer = 600; interval: Integer = -1): Boolean; ``` Waits `time` milliseconds for the client mode to change - - - ## Client.IsLoggedIn ```pascal function TClient.IsLoggedIn(): Boolean; ``` Returns true/false whether there's a player logged in or not. Example: ```pascal WriteLn Client.IsLoggedIn(); ``` - - - ## Client.WaitLoggedIn ```pascal function TClient.WaitLoggedIn(time: Integer = 2000; interval: Integer = -1): Boolean; ``` Waits `time` milliseconds for the players to be logged in. Example: ```pascal WriteLn Client.WaitLoggedIn(); ``` - - - ## Client.ReadTooltip ```pascal function TClient.ReadTooltip(): String; ``` Attempts to read the client tooltip if it's present. Example: ```pascal WriteLn Client.ReadTooltip(); ``` - - - ## Client variable Global {ref}`TClient` variable.