# WorldSwitcher WorldSwitcher is resposible for changing worlds with the logged in world switcher in the {ref}`Logout` gametab. ```{figure} ../../images/worldswitcher.png ``` - - - ## ERSWorldSwitcherButton enum ```pascal ERSWorldSwitcherButton = enum(CONFIGURE, CLOSE, LOGOUT); ``` Enum representing the world switcher buttons. - - - ## TRSWorld type Helper record for {ref}`TRSworldSwitcher`. - - - ## TRSWorldArray type Helper type for {ref}`TRSworldSwitcher`. - - - ## TRSWorldSwitcher type Main record that interacts with the {ref}`WorldSwitcher`. - - - ## TRSWorldSwitcher.Setup ```pascal procedure TRSWorldSwitcher.Setup(); ``` Interal method used to setup the {ref}`TRSWorldSwitcher` cooldown. This is automatically called for you on the {ref}`WorldSwitcher variable`. - - - ## TRSWorldSwitcher.SetupGameTab ```pascal procedure TRSWorldSwitcher.SetupGameTab(); ``` Interal method used to setup the {ref}`TRSWorldSwitcher` coordinates. This is automatically called for you on the {ref}`WorldSwitcher variable`. - - - ## WorldSwitcher.IsOpen ```pascal function TRSWorldSwitcher.IsOpen(): Boolean; ``` Returns true if the world switcher is open. Example: ```pascal WriteLn WorldSwitcher.IsOpen(); ``` - - - ## WorldSwitcher.IsLoading ```pascal function TRSWorldSwitcher.IsLoading(): Boolean; ``` Returns true if the world switcher is loading. The world switcher takes a few milliseconds to load. Example: ```pascal WriteLn WorldSwitcher.IsLoading(); ``` - - - ## WorldSwitcher.WaitLoading ```pascal function TRSWorldSwitcher.WaitLoading(time: Integer = 600; interval: Integer = -1): Boolean; ``` Waits for the world switcher to finish loading. For more information on loading read {ref}`WorldSwitcher.IsLoading`. Example: ```pascal WriteLn WorldSwitcher.WaitLoading(); ``` - - - ## WorldSwitcher.Open ```pascal function TRSWorldSwitcher.Open(waitLoad: Boolean = True): Boolean; ``` Attempts to open the world switcher. This method is overriden after {ref}`Logout`, for more information check {ref}`WorldSwitcher.Open override`. Example: ```pascal WriteLn WorldSwitcher.Open(); ``` - - - ## Logout.CloseWorldSwitcher ```pascal function TRSLogout.CloseWorldSwitcher(): Boolean; ``` Closes the world switcher. Example: ```pascal Logout.CloseWorldSwitcher(); ``` - - - ## WorldSwitcher.Logout ```pascal function TRSWorldSwitcher.Logout(attempts: UInt32 = 5; time: UInt32 = 20000): Boolean; ``` Clicks the logout button. Returns true if we succesfully logout of the game. Example: ```pascal WriteLn WorldSwitcher.Logout(); ``` - - - ## WorldSwitcher.GetWorlds ```pascal function TRSWorldSwitcher.GetWorlds(): TRSWorldArray; ``` Returns the currently visible {ref}`TRSWorldArray`. Example: ```pascal ShowOnTarget(WorldSwitcher.GetWorlds()); ``` - - - ## WorldSwitcher.FindWorld ```pascal function TRSWorldSwitcher.FindWorld(number: Integer; out world: TRSWorld): Boolean; ``` Returns true if the specified world `number` is found. The world data is returned through the `world` variable. Example: ```pascal if WorldSwitcher.FindWorld(311, world) then ShowOnTarget([world]); ``` - - - ## WorldSwitcher.IsSorted ```pascal function TRSWorldSwitcher.IsSorted(): Boolean; ``` Checks if the worlds in the world switcher are sorted. Example: ```pascal WriteLn WorldSwitcher.IsSorted(); ``` - - - ## WorldSwitcher.Sort ```pascal function TRSWorldSwitcher.Sort(): Boolean; ``` Sorts the worlds from lower to higher numbers. Example: ```pascal WriteLn WorldSwitcher.Sort(); ``` - - - ## WorldSwitcher.World property ```pascal property TRSWorldSwitcher.World: Integer; property TRSWorldSwitcher.World(next: Integer): Boolean; ``` Returns or sets the current world we are on. Setting a new world will only happen if `TRSWorldSwitcher.Cooldown` is finished, which is a cooldown that starts everytime you change worlds. Example: ```pascal WriteLn WorldSwitcher.World; WorldSwitcher.World := 311; WriteLn WorldSwitcher.World; ``` - - - ## WorldSwitcher.Next ```pascal function TRSWorldSwitcher.Next(): Boolean; ``` Hops to the world that follows our current world according to the contents of `Profiles[ProfileIndex].Worlds`. Example: ```pascal WriteLn WorldSwitcher.World; WorldSwitcher.Next(); WriteLn WorldSwitcher.World; ``` - - - ## WorldSwitcher.Previous ```pascal function TRSWorldSwitcher.Previous(): Boolean; ``` Hops to the world that comes before our current world according to the contents of `Profiles[ProfileIndex].Worlds`. Example: ```pascal WriteLn WorldSwitcher.World; WorldSwitcher.Previous(); WriteLn WorldSwitcher.World; ``` - - - ## WorldSwitcher.Random ```pascal function TRSWorldSwitcher.Random(): Boolean; ``` Hops to a random world that's in `Profiles[ProfileIndex].Worlds` and is not our current world. Example: ```pascal WriteLn WorldSwitcher.World; WorldSwitcher.Random(); WriteLn WorldSwitcher.World; ``` - - - ## WorldSwitcher.WaitSwitch ```pascal function TRSWorldSwitcher.WaitSwitch(world: Integer; failCooldown: Boolean = True): Boolean; ``` Exits false if "Please wait" not found, presumably due to combat. Returns true if we find "Please wait" and finish world hopping successfully to the specified `world` - - - ## WorldSwitcher variable Global {ref}`TRSWorldSwitcher` variable.