Keybindings

Methods to interact with gametabs via FKeys.

Use or uncomment {$DEFINE SRL_KEYBINDINGS_DEBUG} to debug already setup FKeys.


type TRSKeyTabPair

TRSKeyTabPair is a record to represent a single pair of gametab/FKey.


type TRSKeybindings

TRSKeybindings is a record used to:
  • enable/disable the use of keybinds.

  • store our already setup KeyTabPair.

  • figure out which keybinds we have setup if we don’t preset them.

  • manage keys we don’t know their match yet.


KeyTabPair.Setup

procedure TRSKeyTabPair.Setup(Gametab: ERSGameTab);

Sets up a single FKey/Gametab pair.

Example

var
  KeyTabPair: TRSKeyTabPair;

begin
  KeyTabPair.Setup(ERSGameTab.COMBAT);
end;

Keybindings.Setup

procedure TRSKeybindings.Setup(Keys: TIntegerArray = DEFAULT_FKEYS);

Keybindings.Setup is a procedure that is used to setup it’s internal variables so it’s ready to use. By default it’s called with SRL.Setup but can be called again with a TIntegerArray argument as a FKeys preset.

Note: This array of ints should be the VK_ constants built into Simba that represent FKeys.

Example

Keybindings.Setup([
  VK_F1, VK_ESCAPE, VK_F2, VK_F10, VK_F4, VK_F9, VK_F6,
  VK_F7, VK_F8, VK_F5, VK_F3
]);

Keybindings.GetKeyIndex

function TRSKeybindings.GetKeyIndex(Key: Int32): Int32;
function TRSKeybindings.GetKeyIndex(Gametab: ERSGameTab): Int32; overload;

Internal function used to find the index of a Key or Gametab of an already setup KeyTabPair if it already exists otherwise we return -1 to know the pair does not exist yet.


var Keybindings

Global Keybindings variable.


GameTabs.FKeyOpen

function TRSGameTabs.FKeyOpen(Tab: ERSGameTab): Boolean;

Attempts to open the Tab gametab with FKeys. If the Gametab is already stored in Keybindings.KeyTabPairs the corresponding Fkey will simply be pressed. Otherwise we will fetch a random yet unchecked key from Keybindings.UncheckedKeyArray and press it. The following then happens:

  • If a gametab opens we store it this pair in Keybindings.KeyTabPairs and then: - If the gametab that was open was the one we wanted the result of the function will be true, otherwise false.

  • If a gametab doesn’t open:

TODO…..


GameTabs.FKeyOpen

function TRSGameTabs.FKeyOpen(Tab: ERSGameTab): Boolean;

This function attempts to open a gametab with the help of Keybindings global variable. When called the following happens:

  • Keybindings.KeyTabPairs is checked for a match of the gametab Tab we passed in as an argument. - If a match is found, the FKey is pressed and we Exit the function returning True if Tab was opened. - If no match is found we then check if there’s still FKeys available in Keybindings.UncheckedKeyArray (There’s 13 Fkeys for 14 tabs and some might even be disabled).

    • If there’s no FKeys we exit.

    • If there’s FKeys available: - We pick a Key from Keybindings.UncheckedKeyArray, which key will depend on Keybindings.RandomizeChecks. - We check if our Key is in Keybindings.KeyTabPairs: - If not we Exit. This meants this Key is either not an FKey or the user didn’t pass it in in Keybindings.Setup. (This might not be needed? Not 100% sure…) - Now we press the key and monitor gametab changes: - Wether we opened the tab we wanted or not, if the the current gametab switched that the new Tab will be added to Keybindings.KeyTabPairs as a new pair to the key pressed and removed from Keybindings.UncheckedKeyArray.

      • If the tab switched to the one we wanted the function results true, otherwise false.

      • If the gametab didn’t switch: - We check if the currenttab has a pair in Keybindings.KeyTabPairs and is setup.

        • If it’s not we don’t do anything, we can’t assume the FKey is a pair to the current tab without being 100% sure.

        • If it exists and is setup, then we set the FKey we pressed in Keybindings.KeyTabPairs as a pair to ERSGameTab.UNKNOWN so we know we check it again while also deleting it from Keybindings.UncheckedKeyArray.

Note: {$DEFINE WL_KEYBINDINGS_DEBUG} can be used to debug already setup Keybindings.KeyTabPairs.

Example

Gametabs.FKeyOpen(ERSGameTab.COMBAT);

GameTabs.Open

function TRSGameTabs.Open(Tab: ERSGameTab): Boolean; override;

Override to open gametabs with GameTabs.FKeyOpen if Keybindings.UseKeybinds is true.

Example

Gametabs.Open(ERSGameTab.COMBAT);