ESO Lua File v100010

libraries/utility/zo_gamepadutils.lua

[◄ back to folders ]
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
GAMEPAD_INCLUDE_DEADZONE = true
GAMEPAD_EXCLUDE_DEADZONE = false
    return g_defaultEaseFunction(GetGamepadLeftStickX(GAMEPAD_INCLUDE_DEADZONE))
end
    return g_defaultEaseFunction(GetGamepadLeftStickY(GAMEPAD_INCLUDE_DEADZONE))
end
    return g_defaultEaseFunction(GetGamepadRightStickX(GAMEPAD_INCLUDE_DEADZONE))
end
    return g_defaultEaseFunction(GetGamepadRightStickY(GAMEPAD_INCLUDE_DEADZONE))
end
local function DefaultIsDataHeader(data)
    return data.isHeader or data.header
end
function ZO_Gamepad_CreateListTriggerKeybindDescriptors(list, optionalHeaderComparator)
    local leftTrigger = {
        keybind = "UI_SHORTCUT_LEFT_TRIGGER",
        ethereal = true,
        callback = function()
            if type(list) == "function" then
                list = list()
            end
            if not list:IsEmpty() and not list:SetPreviousSelectedDataByEval(optionalHeaderComparator or DefaultIsDataHeader, ZO_PARAMETRIC_MOVEMENT_TYPES.JUMP_PREVIOUS) then
                list:SetFirstIndexSelected(ZO_PARAMETRIC_MOVEMENT_TYPES.JUMP_PREVIOUS)
            end
        end,
    }
    local rightTrigger = {
        keybind = "UI_SHORTCUT_RIGHT_TRIGGER",
        ethereal = true,
        callback = function()
            if type(list) == "function" then
                list = list()
            end
            if not list:IsEmpty() and not list:SetNextSelectedDataByEval(optionalHeaderComparator or DefaultIsDataHeader, ZO_PARAMETRIC_MOVEMENT_TYPES.JUMP_NEXT) then
                list:SetLastIndexSelected(ZO_PARAMETRIC_MOVEMENT_TYPES.JUMP_NEXT)
            end
        end,
    }
    return leftTrigger, rightTrigger
end
function ZO_Gamepad_AddListTriggerKeybindDescriptors(descriptor, list, optionalHeaderComparator)
    local leftTrigger, rightTrigger = ZO_Gamepad_CreateListTriggerKeybindDescriptors(list, optionalHeaderComparator)
    table.insert(descriptor, leftTrigger)
     table.insert(descriptor, rightTrigger)
end
GAME_NAVIGATION_TYPE_STICK = 1
GAME_NAVIGATION_TYPE_BUTTON = 2
GAME_NAVIGATION_TYPE_BOTH = 3
function ZO_Gamepad_AddForwardNavigationKeybindDescriptors(descriptor, navigationType, callback, name, visible, enabled, sound)
    if navigationType == GAME_NAVIGATION_TYPE_STICK or navigationType == GAME_NAVIGATION_TYPE_BOTH then
        descriptor[#descriptor + 1] = {
            keybind = "UI_SHORTCUT_INPUT_RIGHT",
            ethereal = true,
            visible = visible,
            callback = callback,
            sound = sound,
               enabled = enabled,
        }
    end
    if navigationType == GAME_NAVIGATION_TYPE_BUTTON or navigationType == GAME_NAVIGATION_TYPE_BOTH then
        descriptor[#descriptor + 1] = {
            alignment = KEYBIND_STRIP_ALIGN_LEFT,
            name = name or GetString(SI_GAMEPAD_SELECT_OPTION),
            keybind = "UI_SHORTCUT_PRIMARY",
            order = -500,
            callback = callback,
            visible = visible,
            sound = sound,
               enabled = enabled,
        }
    end
end
    ZO_Gamepad_AddForwardNavigationKeybindDescriptors(descriptor, navigationType, callback, name, visible, enabled, SOUNDS.GAMEPAD_MENU_FORWARD)
end
local function DefaultBack()
    SCENE_MANAGER:HideCurrentScene()
end
function ZO_Gamepad_AddBackNavigationKeybindDescriptors(descriptor, navigationType, callback, name, sound)
    if navigationType == GAME_NAVIGATION_TYPE_STICK or navigationType == GAME_NAVIGATION_TYPE_BOTH then
        descriptor[#descriptor + 1] = {
            keybind = "UI_SHORTCUT_INPUT_LEFT",
            ethereal = true,
            sound = sound,
            callback = callback or DefaultBack,
        }
    end
    if navigationType == GAME_NAVIGATION_TYPE_BUTTON or navigationType == GAME_NAVIGATION_TYPE_BOTH then
        descriptor[#descriptor + 1] = {
            alignment = KEYBIND_STRIP_ALIGN_LEFT,
            name = name or GetString(SI_GAMEPAD_BACK_OPTION),
            keybind = "UI_SHORTCUT_NEGATIVE",
            visible = IsInGamepadPreferredMode,
            order = -1500,
            sound = sound,
            callback = callback or DefaultBack,
        }
    end
end
function ZO_Gamepad_AddBackNavigationKeybindDescriptorsWithSound(descriptor, navigationType, callback, name)
    ZO_Gamepad_AddBackNavigationKeybindDescriptors(descriptor, navigationType, callback, name, SOUNDS.GAMEPAD_MENU_BACK)
end
local ALPHABET_TABLE = { "a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z" }
function ZO_Gamepad_TempVirtualKeyboardGenRandomString(prefix, totalLength)
    totalLength = totalLength or (string.len(prefix) + 7)
    local result = prefix .. "-"
    local prevChar = nil
    while(string.len(result) < totalLength) do
        local char = ALPHABET_TABLE[math.random(1, #ALPHABET_TABLE)]
        if(char ~= prevChar) then -- prevent the violation state of multiple instances of the same char.
            result = result .. char
            prevChar = char
        end
    end
    return result
end