-
Notifications
You must be signed in to change notification settings - Fork 5
/
DASUserSettingsAdapter.lua
315 lines (309 loc) · 9.3 KB
/
DASUserSettingsAdapter.lua
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
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
local DAS = DailyAutoShare
local groupTagPlayer = UNITTAG_PLAYER
local p = DAS.DebugOut
local typeString = "string"
-- called from settings
function DAS.GetUseGlobalSettings()
return DAS.settings.useGlobalSettings
end
function DAS.SetUseGlobalSettings(value)
DAS.settings.useGlobalSettings = value
end
-- called internally a lot
local function GetSettings()
if DAS.GetUseGlobalSettings() then
return DAS.globalSettings
else
return DAS.settings
end
end
DAS.GetSettings = GetSettings
local function CanInvite(unitTag, unitName)
if (nil == unitTag) and (nil == unitName) then
return ((not IsUnitGrouped(groupTagPlayer) or (IsUnitGroupLeader(groupTagPlayer) and GetGroupSize() < GROUP_SIZE_MAX)))
elseif(unitTag and (not IsUnitPlayer(unitTag) or IsUnitGrouped(unitTag))) then
return false
elseif(unitName and IsPlayerInGroup(unitName)) then
return false
end
return true
end
function DAS.GetDebugMode()
return GetSettings().debugging
end
function DAS.SetDebugMode(value)
GetSettings().debugging = value
end
-- called from settings: GUI
function DAS.GetShutUp()
return GetSettings().shutUp
end
function DAS.SetShutUp(value)
GetSettings().shutUp = value
end
function DAS.GetLocked()
return GetSettings().locked
end
function DAS.SetLocked(value)
GetSettings().locked = value
DAS.RefreshGui()
end
function DAS.GetHiddenByUser()
return GetSettings().hiddenByUser or false
end
function DAS.SetHiddenByUser(value)
GetSettings().hiddenByUser = value
end
function DAS.GetHidden()
return GetSettings().hidden
end
function DAS.SetHidden(hidden, override)
if (not hidden and not override and DAS.GetHiddenByUser()) then
return
end
if override then
DAS.SetHiddenByUser(hidden)
end
GetSettings().hidden = hidden
DasControl:SetHidden(hidden)
if hidden then
SCENE_MANAGER:GetScene("hud" ):RemoveFragment(DAS.Fragment)
SCENE_MANAGER:GetScene("hudui"):RemoveFragment(DAS.Fragment)
else
SCENE_MANAGER:GetScene("hud" ):AddFragment(DAS.Fragment)
SCENE_MANAGER:GetScene("hudui"):AddFragment(DAS.Fragment)
DAS.questCacheNeedsRefresh = true
DAS.RefreshControl(true)
zo_callLater(function()
DAS.RefreshLabels(true, true)
end, 500)
end
end
function DAS.GetQuestShareDelay()
return GetSettings().questShareDelay
end
function DAS.SetQuestShareDelay(value)
GetSettings().questShareDelay = value
end
function DAS.GetGroupInviteDelay()
return GetSettings().groupInviteDelay
end
function DAS.SetGroupInviteDelay(value)
GetSettings().groupInviteDelay = value
end
function DAS.GetAutoAcceptInvite()
return DAS.GetSettings().autoAcceptInvite
end
function DAS.SetAutoAcceptInvite(value)
DAS.GetSettings().autoAcceptInvite = value
if value then
EVENT_MANAGER:RegisterForEvent("DailyAutoshare", EVENT_GROUP_INVITE_RECEIVED, AcceptGroupInvite)
else
EVENT_MANAGER:UnregisterForEvent("DailyAutoshare", EVENT_GROUP_INVITE_RECEIVED, AcceptGroupInvite)
end
end
function DAS.GetWhisperOnly()
return GetSettings().whisperOnly
end
function DAS.GetMinimised()
return DAS.GetSettings().minimised
end
function DAS.SetMinimised(value)
DAS.GetSettings().minimised = value
end
function DAS.GetAutoAcceptShared()
return DAS.GetSettings().autoAcceptShared
end
function DAS.SetAutoAcceptShared(value)
DAS.GetSettings().autoAcceptShared = value
DAS.SetButtonStates()
end
function DAS.GetStopInviteOnDegroup()
return GetSettings().keepInviteUpOnDegroup
end
function DAS.SetStopInviteOnDegroup(value)
GetSettings().keepInviteUpOnDegroup = value
end
function DAS.GetAutoAcceptInviteInterval()
return GetSettings().autoAcceptInviteInterval or 0
end
function DAS.SetAutoAcceptInviteInterval(value)
GetSettings().autoAcceptInviteInterval = value
end
function DAS.GetAutoInvite()
return GetSettings().autoInvite
end
function DAS.SetAutoInvite(value)
value = value and IsUnitSoloOrGroupLeader(UNITTAG_PLAYER) and DAS.HasActiveDaily()
GetSettings().autoInvite = value
DAS.autoInviting = value
DAS.SetButtonStates()
DAS.SetChatListenerStatus(value)
end
-- called from settings and from internal helper
function DAS.GetActiveIn(zoneIndex)
zoneIndex = zoneIndex or DAS.GetZoneId()
if not zoneIndex then return end
zoneIndex = DAS.subzones[zoneIndex] or zoneIndex
if type(zoneIndex) == typeString then
return GetSettings().trackedLists[zoneIndex]
end
return GetSettings().tracked[zoneIndex] or DAS.trackedListZones[zoneIndex]
end
DAS.IsActiveIn = DAS.GetActiveIn -- have alias because I keep fucking this up
function DAS.SetActiveIn(zoneIndex, value)
zoneIndex = zoneIndex or DAS.GetZoneId()
if not zoneIndex then return end
GetSettings().tracked[zoneIndex] = value
zo_callLater(function() DAS.RefreshGui(not DAS.GetActiveIn()) end, 200)
end
function DAS.SetActiveFor(listName, value)
if not listName then return end
GetSettings().trackedLists[listName] = value
DAS.CacheTrackedQuestLists()
zo_callLater(function() DAS.RefreshGui(not DAS.GetActiveIn()) end, 200)
end
function DAS.GetAutoShare()
return DAS.GetSettings().autoShare
end
function DAS.SetAutoShare(value)
DAS.GetSettings().autoShare = value
DAS.SetButtonStates()
end
function DAS.GetAutoLeave()
return GetSettings().autoLeave
end
function DAS.SetAutoLeave(value)
GetSettings().autoLeave = value
end
function DAS.GetResetAutoShareOnNewGroup()
return GetSettings().resetAutoShareOnNewGroup
end
function DAS.SetResetAutoShareOnNewGroup(value)
GetSettings().resetAutoShareOnNewGroup = value
end
function DAS.GetUpsideDown()
return GetSettings().upsideDown
end
function DAS.SetUpsideDown(value)
GetSettings().upsideDown = value
DAS.AnchorList()
end
function DAS.GetAutoHide()
return GetSettings().autoHide
end
function DAS.SetAutoHide(value)
GetSettings().autoHide = value
DAS.RefreshGui()
end
function DAS.GetAutoMinimize()
return GetSettings().autoMinimize
end
function DAS.SetAutoMinimize(value)
GetSettings().autoMinimize = value
DAS.RefreshGui()
end
function DAS.GetHiddenInInactiveZones()
return GetSettings().inactiveZones.hide
end
function DAS.SetHiddenInInactiveZones(value)
GetSettings().inactiveZones.hide = value
DasControl:SetHidden(value and DAS.GetActiveIn())
end
function DAS.GetFontSize()
return GetSettings().fontScale or 1.0
end
function DAS.SetFontSize(value)
GetSettings().fontScale = value
DAS.SetLabelFontSize()
DAS.RefreshLabelsWithDelay()
end
-- called from GUI
function DAS.GetX(controlname)
controlname = controlname or "DasControl"
return GetSettings()[controlname].x
end
function DAS.SetX(controlname, value)
controlname = controlname or "DasControl"
GetSettings()[controlname]["x"] = value
end
function DAS.GetY(controlname)
controlname = controlname or "DasControl"
return GetSettings()[controlname]["y"]
end
function DAS.SetY(controlname, value)
controlname = controlname or "DasControl"
GetSettings()[controlname]["y"] = value
end
function DAS.GetGuildInviteNumber()
return (tonumber(GetSettings().guildInviteNumber) or 0)
end
function DAS.SetGuildInviteNumber(value)
GetSettings().guildInviteNumber = tonumber(value) or 0
if value ~= nil and value > 0 then
DAS.channelTypes[_G["CHAT_CHANNEL_GUILD_" .. value]] = true
end
end
function DAS.GetListenInGuilds()
return GetSettings().listenInGuilds
end
function DAS.SetListenInGuilds(value)
GetSettings().listenInGuilds = value
DAS.channelTypes[CHAT_CHANNEL_GUILD_1] = value
DAS.channelTypes[CHAT_CHANNEL_GUILD_2] = value
DAS.channelTypes[CHAT_CHANNEL_GUILD_3] = value
DAS.channelTypes[CHAT_CHANNEL_GUILD_4] = value
DAS.channelTypes[CHAT_CHANNEL_GUILD_5] = value
end
function DAS.GetGuildInviteText()
local ret = GetSettings().guildInviteText or ""
if #ret == 0 then return end
return ret
end
function DAS.SetGuildInviteText(value)
GetSettings().guildInviteText = value
DAS.guildInviteText = value
end
function DAS.SaveControlLocation(control)
local controlName = control:GetName()
DAS.SetX(controlName, control:GetLeft())
DAS.SetY(controlName, control:GetTop())
end
function DAS.LoadControlLocation(control)
local controlName = control:GetName()
local x = DAS.GetX(controlName) or 0
local y = DAS.GetY(controlName) or 0
control:ClearAnchors()
control:SetAnchor(TOPLEFT, GuiRoot, TOPLEFT, x, y)
DAS.GetSettings().tooltipRight = DAS.GetSettings().tooltipRight or x < 200
end
function DAS.GetHideCompleted()
return GetSettings().hideCompleted
end
function DAS.SetHideCompleted(value)
GetSettings().hideCompleted = value
end
function DAS.GetQuestListItem(zoneId, listName, listKey)
if nil == zoneId or nil == listName or nil == listKey then return false end
if nil == DAS.GetSettings()[zoneId] or nil == DAS.GetSettings()[zoneId][listName] then return false end
return DAS.GetSettings()[zoneId][listName][listKey]
end
function DAS.SetQuestListItem(zoneId, listName, listKey, value)
if nil == zoneId or nil == listName or nil == listKey then return end
if nil == DAS.GetSettings()[zoneId] or nil == DAS.GetSettings()[zoneId][listName] then return end
DAS.GetSettings()[zoneId][listName][listKey] = value
zo_callLater(function() DAS.RefreshControl(true) end, 500)
end
function DAS.GetMarkerVisibility()
return GetSettings().mapMarkersVisible
end
function DAS.SetMarkerVisibility(value)
GetSettings().mapMarkersVisible = value
end
function DAS.GetQuestShareEitherOfString()
return GetSettings().questShareEitherOfString
end
function DAS.SetQuestShareEitherOfString(value)
if '' == value then value = nil end
GetSettings().questShareEitherOfString = value
end