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;
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 SRL_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);