Back to Home

ESO Lua File v101044

libraries/zo_gamepad/zo_gamepadlayoutconstants.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
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
------------------
--Base Constants--
------------------
ZO_GAMEPAD_PANEL_WIDTH = 470
ZO_GAMEPAD_PANEL_WIDE_WIDTH = 683
ZO_GAMEPAD_UI_REFERENCE_WIDTH = 1920
ZO_GAMEPAD_SAFE_ZONE_INSET_X = 96
ZO_GAMEPAD_SAFE_ZONE_INSET_Y = 54
ZO_GAMEPAD_ALLEY_WIDTH = 10
ZO_GAMEPAD_LIST_LABEL_INSET_TO_LEFT = 100
ZO_GAMEPAD_LIST_ICON_INSET_TO_CENTER = 56
ZO_GAMEPAD_LIST_INDICATOR_INSET_TO_CENTER = 0
ZO_GAMEPAD_LIST_ICON_SIZE = 64
ZO_GAMEPAD_LIST_INDICATOR_SIZE = 32
ZO_GAMEPAD_CONTENT_INSET_X = 40
ZO_GAMEPAD_CONTENT_TITLE_HEIGHT = 96
ZO_GAMEPAD_CONTENT_TITLE_DIVIDER_PADDING_Y = 7
--Height of the keybinds that show next to the divider. This dictates the divider section size
ZO_GAMEPAD_CONTENT_DIVIDER_HEIGHT = 35
ZO_GAMEPAD_CONTENT_DIVIDER_INFO_PADDING_Y = 15
ZO_GAMEPAD_CONTENT_WIDTH = ZO_GAMEPAD_PANEL_WIDTH - 2 * ZO_GAMEPAD_CONTENT_INSET_X
ZO_GAMEPAD_PANEL_BG_HEIGHT = 1080
--The BG texture spans from left safezone less the content inset to right safezone less the content inset
ZO_GAMEPAD_PANEL_BG_WIDTH = ZO_GAMEPAD_UI_REFERENCE_WIDTH - (ZO_GAMEPAD_SAFE_ZONE_INSET_X - ZO_GAMEPAD_CONTENT_INSET_X) * 2
--The UI unit where the panel BG starts
ZO_GAMEPAD_PANEL_BG_LEFT = ZO_GAMEPAD_SAFE_ZONE_INSET_X - ZO_GAMEPAD_CONTENT_INSET_X
ZO_GAMEPAD_PANEL_BG_FILE_WIDTH = 512
ZO_GAMEPAD_PANEL_BG_FILE_HEIGHT = 512
ZO_GAMEPAD_PANEL_BG_VERTICAL_DIVIDER_WIDTH = 8
ZO_GAMEPAD_PANEL_BG_VERTICAL_DIVIDER_HALF_WIDTH = ZO_GAMEPAD_PANEL_BG_VERTICAL_DIVIDER_WIDTH / 2
--The arrow specifying screen center on some BG's interferes with default R Scroll indicator position, R Scroll will need to go below the arrow
ZO_GAMEPAD_PANEL_BG_SCROLL_INDICATOR_OFFSET_FOR_ARROW = 48
--This gives us the distance between the edge of a panel and the inside edge of the vertical dividers gold line
ZO_GAMEPAD_PANEL_BG_EDGE_VERTICAL_DIVIDER_INSIDE_PADDING_X = 5
ZO_GAMEPAD_QUADRANT_VERT_DIVIDER_PADDING = 8
ZO_GAMEPAD_PANEL_BACKGROUND_TOP_LEVEL_DRAW_LEVEL = 2
ZO_GAMEPAD_PANEL_BACKGROUND_TEXTURE_DRAW_LEVEL = 3
ZO_GAMEPAD_PANEL_BACKGROUND_HIGHLIGHT_DRAW_LEVEL = 10
ZO_GAMEPAD_KEYBIND_STRIP_BACKGROUND_HEIGHT = 128
---------------------
--Derived Constants--
---------------------
--QUADRANTS--
local function ComputeBGTextureCoord(horizontalPosition)
    return ((horizontalPosition - ZO_GAMEPAD_PANEL_BG_LEFT) / ZO_GAMEPAD_PANEL_BG_WIDTH) * (ZO_GAMEPAD_PANEL_BG_WIDTH / ZO_GAMEPAD_PANEL_BG_FILE_WIDTH)
end
--All quadrants adjoin the safezone on the top
ZO_GAMEPAD_QUADRANT_TOP_OFFSET = ZO_GAMEPAD_SAFE_ZONE_INSET_Y
--All quadrants adjoin the keybind strip on the bottom
ZO_GAMEPAD_QUADRANT_BOTTOM_OFFSET = -125
--Quadrant 1 aligns it's content section's left edge with the left safe zone boundary
ZO_GAMEPAD_QUADRANT_1_LEFT_OFFSET = ZO_GAMEPAD_SAFE_ZONE_INSET_X - ZO_GAMEPAD_CONTENT_INSET_X
ZO_GAMEPAD_QUADRANT_1_RIGHT_OFFSET = ZO_GAMEPAD_QUADRANT_1_LEFT_OFFSET + ZO_GAMEPAD_PANEL_WIDTH
ZO_GAMEPAD_QUADRANT_1_LEFT_COORD = ComputeBGTextureCoord(ZO_GAMEPAD_QUADRANT_1_LEFT_OFFSET)
ZO_GAMEPAD_QUADRANT_1_RIGHT_COORD = ComputeBGTextureCoord(ZO_GAMEPAD_QUADRANT_1_RIGHT_OFFSET)
--Quadrant 2 is an alley width to the right of Quadrant 1
ZO_GAMEPAD_QUADRANT_2_LEFT_OFFSET = ZO_GAMEPAD_QUADRANT_1_RIGHT_OFFSET + ZO_GAMEPAD_ALLEY_WIDTH
ZO_GAMEPAD_QUADRANT_2_RIGHT_OFFSET = ZO_GAMEPAD_QUADRANT_2_LEFT_OFFSET + ZO_GAMEPAD_PANEL_WIDTH
ZO_GAMEPAD_QUADRANT_2_LEFT_COORD = ComputeBGTextureCoord(ZO_GAMEPAD_QUADRANT_2_LEFT_OFFSET)
ZO_GAMEPAD_QUADRANT_2_RIGHT_COORD = ComputeBGTextureCoord(ZO_GAMEPAD_QUADRANT_2_RIGHT_OFFSET)
--Quadrant 4 aligns it's content section's right edge with the right safe zone boundary. It is anchored to the right side of the screen. These values
--reflect offsets from the right side of the screen
ZO_GAMEPAD_QUADRANT_4_RIGHT_OFFSET = -ZO_GAMEPAD_SAFE_ZONE_INSET_X + ZO_GAMEPAD_CONTENT_INSET_X
ZO_GAMEPAD_QUADRANT_4_LEFT_OFFSET = ZO_GAMEPAD_QUADRANT_4_RIGHT_OFFSET - ZO_GAMEPAD_PANEL_WIDTH
--While these offsets are from the left and are used only for texture coordinates
ZO_GAMEPAD_QUADRANT_4_RIGHT_REFERENCE_OFFSET = ZO_GAMEPAD_UI_REFERENCE_WIDTH - (ZO_GAMEPAD_SAFE_ZONE_INSET_X - ZO_GAMEPAD_CONTENT_INSET_X)
ZO_GAMEPAD_QUADRANT_4_LEFT_REFERENCE_OFFSET = ZO_GAMEPAD_QUADRANT_4_RIGHT_REFERENCE_OFFSET - ZO_GAMEPAD_PANEL_WIDTH
ZO_GAMEPAD_QUADRANT_4_WIDE_LEFT_REFERENCE_OFFSET = ZO_GAMEPAD_QUADRANT_4_RIGHT_REFERENCE_OFFSET - ZO_GAMEPAD_PANEL_WIDE_WIDTH
ZO_GAMEPAD_QUADRANT_4_LEFT_COORD = ComputeBGTextureCoord(ZO_GAMEPAD_QUADRANT_4_LEFT_REFERENCE_OFFSET)
ZO_GAMEPAD_QUADRANT_4_WIDE_LEFT_COORD = ComputeBGTextureCoord(ZO_GAMEPAD_QUADRANT_4_WIDE_LEFT_REFERENCE_OFFSET)
ZO_GAMEPAD_QUADRANT_4_RIGHT_COORD = ComputeBGTextureCoord(ZO_GAMEPAD_QUADRANT_4_RIGHT_REFERENCE_OFFSET)
--Quadrant 3 is an alley width to the left of Quadrant 4. It is anchored to the right side of the screen. These values
--reflect offsets from the right side of the screen.
ZO_GAMEPAD_QUADRANT_3_RIGHT_OFFSET = ZO_GAMEPAD_QUADRANT_4_LEFT_OFFSET - ZO_GAMEPAD_ALLEY_WIDTH
ZO_GAMEPAD_QUADRANT_3_LEFT_OFFSET = ZO_GAMEPAD_QUADRANT_3_RIGHT_OFFSET - ZO_GAMEPAD_PANEL_WIDTH
--While these offsets are from the left and are used only for texture coordinates
ZO_GAMEPAD_QUADRANT_3_RIGHT_REFERENCE_OFFSET = ZO_GAMEPAD_QUADRANT_4_LEFT_REFERENCE_OFFSET - ZO_GAMEPAD_ALLEY_WIDTH
ZO_GAMEPAD_QUADRANT_3_LEFT_REFERENCE_OFFSET = ZO_GAMEPAD_QUADRANT_3_RIGHT_REFERENCE_OFFSET - ZO_GAMEPAD_PANEL_WIDTH
ZO_GAMEPAD_QUADRANT_3_LEFT_COORD = ComputeBGTextureCoord(ZO_GAMEPAD_QUADRANT_3_LEFT_REFERENCE_OFFSET)
ZO_GAMEPAD_QUADRANT_3_RIGHT_COORD = ComputeBGTextureCoord(ZO_GAMEPAD_QUADRANT_3_RIGHT_REFERENCE_OFFSET)
--Quadrant 1 2
ZO_GAMEPAD_QUADRANT_1_2_WIDTH = ZO_GAMEPAD_QUADRANT_2_RIGHT_OFFSET - ZO_GAMEPAD_QUADRANT_1_LEFT_OFFSET
ZO_GAMEPAD_QUADRANT_1_2_CONTAINER_WIDTH = ZO_GAMEPAD_QUADRANT_1_2_WIDTH - 2 * ZO_GAMEPAD_CONTENT_INSET_X
--Quadrant 2 3
ZO_GAMEPAD_QUADRANT_2_3_WIDTH = ZO_GAMEPAD_QUADRANT_3_RIGHT_REFERENCE_OFFSET - ZO_GAMEPAD_QUADRANT_2_LEFT_OFFSET
ZO_GAMEPAD_QUADRANT_2_3_CONTAINER_WIDTH = ZO_GAMEPAD_QUADRANT_2_3_WIDTH - (2 * ZO_GAMEPAD_CONTENT_INSET_X)
ZO_GAMEPAD_QUADRANT_2_3_CONTENT_BACKGROUND_WIDTH = ZO_GAMEPAD_QUADRANT_2_3_WIDTH - 2 * ZO_GAMEPAD_QUADRANT_VERT_DIVIDER_PADDING
--Quadrant 2 3 4
ZO_GAMEPAD_QUADRANT_2_3_4_WIDTH = ZO_GAMEPAD_QUADRANT_4_RIGHT_REFERENCE_OFFSET - ZO_GAMEPAD_QUADRANT_2_LEFT_OFFSET
--Quadrant 1 2 3
ZO_GAMEPAD_QUADRANT_1_2_3_WIDTH = ZO_GAMEPAD_QUADRANT_3_RIGHT_REFERENCE_OFFSET - ZO_GAMEPAD_QUADRANT_1_LEFT_OFFSET
ZO_GAMEPAD_QUADRANT_1_2_3_CONTAINER_WIDTH = ZO_GAMEPAD_QUADRANT_1_2_3_WIDTH - (2 * ZO_GAMEPAD_CONTENT_INSET_X)
--Quadrant 1 2 3 4
ZO_GAMEPAD_QUADRANT_1_2_3_4_WIDTH = ZO_GAMEPAD_QUADRANT_4_RIGHT_REFERENCE_OFFSET - ZO_GAMEPAD_QUADRANT_1_LEFT_OFFSET
ZO_GAMEPAD_PANEL_BG_BOTTOM_COORD = ZO_GAMEPAD_PANEL_BG_HEIGHT / ZO_GAMEPAD_PANEL_BG_FILE_HEIGHT
ZO_GAMEPAD_DEFAULT_PANEL_SUB_CONTAINER_WIDTH = ZO_GAMEPAD_PANEL_WIDTH - (2 * ZO_GAMEPAD_PANEL_BG_EDGE_VERTICAL_DIVIDER_INSIDE_PADDING_X)
--Quadrant Floating Areas
ZO_GAMEPAD_PANEL_FLOATING_WIDTH_QUADRANT_1_SHOWN = ZO_GAMEPAD_UI_REFERENCE_WIDTH - ZO_GAMEPAD_SAFE_ZONE_INSET_X - ZO_GAMEPAD_QUADRANT_1_RIGHT_OFFSET
ZO_GAMEPAD_PANEL_FLOATING_CENTER_QUADRANT_1_SHOWN = ZO_GAMEPAD_QUADRANT_1_RIGHT_OFFSET + (ZO_GAMEPAD_PANEL_FLOATING_WIDTH_QUADRANT_1_SHOWN / 2)
ZO_GAMEPAD_PANEL_FLOATING_WIDTH_QUADRANT_1_2_SHOWN = ZO_GAMEPAD_UI_REFERENCE_WIDTH - ZO_GAMEPAD_SAFE_ZONE_INSET_X - ZO_GAMEPAD_QUADRANT_2_RIGHT_OFFSET
ZO_GAMEPAD_PANEL_FLOATING_CENTER_QUADRANT_1_2_SHOWN = ZO_GAMEPAD_QUADRANT_2_RIGHT_OFFSET + (ZO_GAMEPAD_PANEL_FLOATING_WIDTH_QUADRANT_1_2_SHOWN / 2)
--This is the value of units off of GuiRoot's LEFT anchor that accounts for the bottom offset and the top title safe zone
ZO_GAMEPAD_PANEL_FLOATING_CENTER_OFFSET_Y = (ZO_GAMEPAD_QUADRANT_BOTTOM_OFFSET / 2) + (ZO_GAMEPAD_SAFE_ZONE_INSET_Y / 2)
--This is the area that can be disregarded when counting eligible vertical range in the floating area
ZO_GAMEPAD_PANEL_FLOATING_HEIGHT_DISCOUNT = -ZO_GAMEPAD_QUADRANT_BOTTOM_OFFSET + ZO_GAMEPAD_SAFE_ZONE_INSET_Y
--The distance between a nav panel's content edge and the center of the closest vertical divider
ZO_GAMEPAD_PANEL_BG_CONTENT_DIVIDER_CENTER_OFFSET_X = ZO_GAMEPAD_CONTENT_INSET_X - ZO_GAMEPAD_PANEL_BG_VERTICAL_DIVIDER_WIDTH / 2
--HEADER AREA--
--Divider offset is the distance from title safe to the top of the divider
ZO_GAMEPAD_CONTENT_HEADER_DIVIDER_OFFSET_Y = ZO_GAMEPAD_CONTENT_TITLE_HEIGHT + ZO_GAMEPAD_CONTENT_TITLE_DIVIDER_PADDING_Y
--Info offset is the distance from title safe to the top of the info fields
ZO_GAMEPAD_CONTENT_HEADER_INFO_OFFSET_Y = ZO_GAMEPAD_CONTENT_HEADER_DIVIDER_OFFSET_Y + ZO_GAMEPAD_CONTENT_DIVIDER_HEIGHT + ZO_GAMEPAD_CONTENT_DIVIDER_INFO_PADDING_Y
--Title/Info offset is the distance from header title bottom to the top of the info fields
ZO_GAMEPAD_CONTENT_HEADER_TITLE_INFO_PADDING_Y = ZO_GAMEPAD_CONTENT_TITLE_DIVIDER_PADDING_Y + ZO_GAMEPAD_CONTENT_DIVIDER_HEIGHT + ZO_GAMEPAD_CONTENT_DIVIDER_INFO_PADDING_Y
-----------------
--Old Constants--
-----------------
ZO_GAMEPAD_SCREEN_PADDING = 56
ZO_GAMEPAD_CONTENT_VERT_OFFSET_PADDING = 20
ZO_GAMEPAD_CONTENT_VERT_OFFSET_PADDING_WIDE = 40
ZO_GAMEPAD_DEFAULT_HEADER_DATA_PADDING = 10
ZO_GAMEPAD_DEFAULT_SELECTION_ICON_SIZE = 64
ZO_GAMEPAD_DEFAULT_SELECTION_ICON_HIGHLIGHT_SIZE = 75
-- List Constants
ZO_GAMEPAD_DEFAULT_LIST_MAX_CONTROL_SCALE = 1.375
ZO_GAMEPAD_DEFAULT_LIST_MIN_CONTROL_SCALE = 1.0
local GAMEPAD_LIST_SCREEN_X_OFFSET = 197 -- x offset to the left limit of the entry text.
ZO_GAMEPAD_DEFAULT_LIST_ENTRY_INDENT = GAMEPAD_LIST_SCREEN_X_OFFSET - ZO_GAMEPAD_SAFE_ZONE_INSET_X
ZO_GAMEPAD_DEFAULT_LIST_ENTRY_WIDTH_AFTER_INDENT = ZO_GAMEPAD_CONTENT_WIDTH - ZO_GAMEPAD_DEFAULT_LIST_ENTRY_INDENT
ZO_GAMEPAD_DEFAULT_LIST_ENTRY_HEIGHT = 40
ZO_GAMEPAD_DEFAULT_LIST_ENTRY_SELECTED_HEIGHT = 50
ZO_GAMEPAD_DEFAULT_LIST_ENTRY_ICON_X_OFFSET = -38
ZO_GAMEPAD_DEFAULT_LIST_ENTRY_ICON_DIMENSION = 40
ZO_GAMEPAD_DEFAULT_LIST_ENTRY_ICON_FULL_SIZE_DIMENSION = ZO_GAMEPAD_DEFAULT_LIST_ENTRY_ICON_DIMENSION * ZO_GAMEPAD_DEFAULT_LIST_MAX_CONTROL_SCALE
ZO_GAMEPAD_DEFAULT_LIST_ENTRY_SECOND_ICON_X_OFFSET = -85
local ICON_TEXT_GAP = math.abs(ZO_GAMEPAD_DEFAULT_LIST_ENTRY_ICON_X_OFFSET) - ZO_GAMEPAD_DEFAULT_LIST_ENTRY_ICON_FULL_SIZE_DIMENSION / 2 --assumes icon is centered on the left of the text
ZO_GAMEPAD_DEFAULT_LIST_ENTRY_MINIMUM_INDENT = ZO_GAMEPAD_DEFAULT_LIST_ENTRY_ICON_FULL_SIZE_DIMENSION + ICON_TEXT_GAP --the minimum indentation of a list entry so that an icon arbitrarily anchored off the label is not indented
local GAMEPAD_LIST_ICON_WIDTH = 64
local GAMEPAD_LIST_ICON_SCREEN_X_OFFSET = 120 + (GAMEPAD_LIST_ICON_WIDTH / 2)
ZO_GAMEPAD_DEFAULT_LIST_ICON_INDENT_CENTER = GAMEPAD_LIST_ICON_SCREEN_X_OFFSET - ZO_GAMEPAD_SAFE_ZONE_INSET_X
--Special cases for VOIP since we have the icons to the right of the entries
ZO_GAMEPAD_DEFAULT_LIST_ENTRY_ICON_X_OFFSET_VOICECHAT = GAMEPAD_LIST_ICON_WIDTH / 2
ZO_GAMEPAD_DEFAULT_LIST_ENTRY_SECOND_ICON_X_OFFSET_VOICECHAT = ZO_GAMEPAD_DEFAULT_LIST_ENTRY_ICON_X_OFFSET_VOICECHAT + ZO_GAMEPAD_DEFAULT_LIST_ENTRY_ICON_DIMENSION
ZO_GAMEPAD_DEFAULT_LIST_ENTRY_WIDTH_VOICECHAT = ZO_GAMEPAD_DEFAULT_LIST_ENTRY_WIDTH_AFTER_INDENT - ZO_GAMEPAD_DEFAULT_LIST_ENTRY_ICON_DIMENSION * 2
ZO_GAMEPAD_DEFAULT_LIST_ENTRY_WIDTH_VOICECHAT_HISTORY = ZO_GAMEPAD_DEFAULT_LIST_ENTRY_WIDTH_AFTER_INDENT - ZO_GAMEPAD_DEFAULT_LIST_ENTRY_ICON_DIMENSION