# GameClient Methods relating to targeting the RS client and detecting client states. if `SRL_DISABLE_REMOTEINPUT` is defined. RemoteInput plugin will not be loaded. if `SRL_USE_REMOTEINPUT` is defined. RemoteInput will be automatically setup. if `SRL_USE_REMOTEINPUT_DEBUG` is defined. Debug() calls will drawn on the RS client. - - - ## EClientMode ```pascal EClientMode = ( UNKNOWN, // Unable to detect mode (likely not logged in yet) FIXED, // Fixed mode RESIZABLE_CLASSIC, // Resizable with "classic" gametabs or "fixed mode gametabs" RESIZABLE_MODERN // Resizable with gametabs being grouped together at the bottom ); ``` The modes of the client. - - - ## GameClient.DetectClientMode() ```pascal function TGameClient.DetectClientMode(Update: Boolean): EClientMode; ``` Detects the client mode. If **Update** is True ClientModeChanged will be called. Uses the music tab so will return CLIENT_UNKNOWN when not logged in. Are there any other cases where music tab won't be visible? - - - ## GameClient.ClientModeChanged() ```pascal procedure TGameClient.ClientModeChanged(); ``` Anything that needs an alert when the client mode changes should override this. - - - ## GameClient.IsLoggedIn() ```pascal function TGameClient.IsLoggedIn(): Boolean; function TGameClient.IsLoggedIn(waitTime: Int32; interval: Int32 = -1): Boolean; overload; ``` Returns true/false whether there's a player logged in or not. Example: ```pascal WriteLn GameClient.IsLoggedIn(); ``` - - - ## GameClient.LoseFocus() ```pascal procedure TGameClient.LoseFocus(); procedure TGameClient.LoseFocus(delay: Int32); ``` Loses focus if available. Maybe useful for antiban. You can optionally delay losing focus by passing in a `delay`. - - - ## GameClient.Setup() ```pascal procedure TGameClient.Setup(); ``` GameClient setup method. ```{note} This is automatically called on the **GameClient** variable. ```