-
Notifications
You must be signed in to change notification settings - Fork 1
/
panel.lua
249 lines (220 loc) · 8.4 KB
/
panel.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
--// orderhallbar // --
local _, ns = ...
local L = ns.L
local LSM = LibStub("LibSharedMedia-3.0")
ns.RegisterModule("orderhallbar", L["desc_orderhallbar"], true)
local MapRects = {}
local TempVec2D = CreateVector2D(0, 0)
function getCoordinates()
local inInstance, instanceType = IsInInstance()
if inInstance and (instanceType == "party" or "raid") then
return ""
else
local MapID = C_Map.GetBestMapForUnit("player")
local vector = C_Map.GetPlayerMapPosition(MapID, "player")
if vector then
local x, y = vector:GetXY()
return format(" [%.1f/%.1f]", x*100, y*100)
else
return ""
end
end
end
local function getAreaText()
if GetRealZoneText() == GetMinimapZoneText() then
OrderHallCommandBar.AreaName:SetText(GetZoneText()..getCoordinates())
else
OrderHallCommandBar.AreaName:SetText(GetZoneText().." ("..GetMinimapZoneText()..")"..getCoordinates())
end
end
local currency = {}
local function getCurrencies()
if not OrderHallCommandBar then return end
for i=1, MAX_WATCHED_TOKENS do
if not currency[i] then
currency[i] = OrderHallCommandBar:CreateTexture("currencyTexture"..i)
currency[i]:SetSize(LolzenUIcfg.orderhallbar["ohb_currency_icon_size"], LolzenUIcfg.orderhallbar["ohb_currency_icon_size"])
currency[i]:SetTexCoord(.04, .94, .04, .94)
if not currency[i].text then
currency[i].text = OrderHallCommandBar:CreateFontString(nil, "OVERLAY")
currency[i].text:SetFont(LSM:Fetch("font", LolzenUIcfg.orderhallbar["ohb_currency_font"]), LolzenUIcfg.orderhallbar["ohb_currency_font_size"], LolzenUIcfg.orderhallbar["ohb_currency_font_flag"])
currency[i].text:SetTextColor(1, 1, 1)
currency[i].text:SetPoint("LEFT", currency[i], "RIGHT", 5, 0)
end
if not currency[i].frame then
currency[i].frame = CreateFrame("Frame", nil, OrderHallCommandBar)
currency[i].frame:SetAllPoints(currency[i])
currency[i].frame:SetScript("OnEnter", function(self)
GameTooltip:SetOwner(currency[i], "ANCHOR_BOTTOMRIGHT")
if currency[i].id ~= nil then
GameTooltip:SetCurrencyByID(currency[i].id)
GameTooltip:Show()
end
end)
currency[i].frame:SetScript("OnLeave", function(self)
GameTooltip:Hide()
end)
end
if i == 1 then
currency[i]:SetPoint("LEFT", OrderHallCommandBar.ClassIcon, "RIGHT", 10, 0)
else
currency[i]:SetPoint("LEFT", currency[i-1].text, "RIGHT", 10, 0)
end
end
end
local counter = 1
for i=1, C_CurrencyInfo.GetCurrencyListSize() do
if C_CurrencyInfo.GetCurrencyListInfo(i).isShowInBackpack then
local link = C_CurrencyInfo.GetCurrencyListLink(i)
local id = tonumber(strmatch(link, "currency:(%d+)"))
if currency[counter] then
currency[counter]:SetTexture(C_CurrencyInfo.GetCurrencyListInfo(i).iconFileID)
currency[counter].text:SetText(C_CurrencyInfo.GetCurrencyListInfo(i).quantity)
if not currency[counter].name then
currency[counter].name = C_CurrencyInfo.GetCurrencyListInfo(i).name
end
-- make the currency id available
if not currency[counter].id then
currency[counter].id = id
end
currency[counter]:Show()
currency[counter].text:Show()
counter = counter + 1
end
else
for int=counter, #currency do
if currency[int] then
currency[int].text:SetText(nil)
currency[int].id = nil
currency[int]:Hide()
end
end
end
end
end
hooksecurefunc("TokenFrame_Update", getCurrencies)
local function modifyOHB()
if OrderHallCommandBar.modded == true then return end
OrderHallCommandBar.AreaName:SetTextColor(unpack(LolzenUIcfg.orderhallbar["ohb_zone_color"]))
OrderHallCommandBar.AreaName:SetFont(LSM:Fetch("font", LolzenUIcfg.orderhallbar["ohb_zone_font"]), LolzenUIcfg.orderhallbar["ohb_zone_font_size"], LolzenUIcfg.orderhallbar["ohb_zone_font_flag"])
-- Create an AG based timer to update Area text and coordinates
local timer = OrderHallCommandBar:CreateAnimationGroup()
local timerAnim = timer:CreateAnimation()
timerAnim:SetDuration(0.5)
timer:SetScript("OnFinished", function(self, requested)
getAreaText()
self:Play()
end)
-- hide troop info
OrderHallCommandBar.RefreshCategories = function() end
OrderHallCommandBar.RequestCategoryInfo = function() end
OrderHallCommandBar.Background:SetTexture(LSM:Fetch("background", LolzenUIcfg.orderhallbar["ohb_background"]))
OrderHallCommandBar.Background:SetVertexColor(unpack(LolzenUIcfg.orderhallbar["ohb_background_color"]))
OrderHallCommandBar.Background:SetAlpha(LolzenUIcfg.orderhallbar["ohb_background_alpha"])
OrderHallCommandBar.WorldMapButton:Hide()
OrderHallCommandBar.CurrencyIcon:Hide()
OrderHallCommandBar.CurrencyHitTest:Hide() -- the area which popups the order resource info tooltip
OrderHallCommandBar.Currency:Hide()
OrderHallCommandBar:RegisterEvent("CHAT_MSG_CURRENCY")
OrderHallCommandBar:RegisterEvent("CURRENCY_DISPLAY_UPDATE")
OrderHallCommandBar:RegisterEvent("PLAYER_STARTED_MOVING")
OrderHallCommandBar:RegisterEvent("PLAYER_STOPPED_MOVING")
OrderHallCommandBar:RegisterEvent("UNIT_FLAGS")
OrderHallCommandBar:SetScript("OnEvent", function(self, event)
if event == "CHAT_MSG_CURRENCY" or event == "CURRENCY_DISPLAY_UPDATE" then
getCurrencies()
elseif event == "PLAYER_STOPPED_MOVING" then
timer:Stop()
elseif event == "PLAYER_STARTED_MOVING" then
timer:Play()
elseif event == "UNIT_FLAGS" then
if UnitOnTaxi("player") then
timer:Play()
else
timer:Stop()
end
end
end)
local covenantID = C_Covenants.GetActiveCovenantID()
local ohbframe = CreateFrame("Frame")
ohbframe:SetAllPoints(OrderHallCommandBar.ClassIcon)
ohbframe:EnableMouse(true)
ohbframe:SetFrameStrata("HIGH")
if covenantID and covenantID ~= 0 then
ohbframe:SetScript("OnMouseDown", GarrisonLandingPage_Toggle)
end
--reposition BG display
UIWidgetTopCenterContainerFrame:SetPoint("TOP", OrderHallCommandBar, "BOTTOM", 0, -10)
OrderHallCommandBar.modded = true
end
local f = CreateFrame("Frame")
f:RegisterEvent("ADDON_LOADED")
f:RegisterEvent("CINEMATIC_STOP")
f:RegisterEvent("PLAYER_ENTERING_WORLD")
f:RegisterEvent("COVENANT_CHOSEN")
f:SetScript("OnEvent", function(self, event, addon)
if event == "ADDON_LOADED" then
if addon == "LolzenUI" then
if LolzenUIcfg.modules["orderhallbar"] == false then return end
if LolzenUIcfg.orderhallbar["ohb_always_show"] == true then
LoadAddOn("Blizzard_OrderHallUI")
end
elseif addon == "Blizzard_OrderHallUI" then
if LolzenUIcfg.modules["orderhallbar"] == false then return end
if OrderHallCommandBar then
modifyOHB()
end
end
elseif event == "CINEMATIC_STOP" or event == "PLAYER_ENTERING_WORLD" then
if LolzenUIcfg.modules["orderhallbar"] == false then return end
if LolzenUIcfg.orderhallbar["ohb_always_show"] == true then
if not OrderHallCommandBar:IsShown() then
OrderHallCommandBar:Show()
getAreaText()
end
if OrderHallCommandBar then
modifyOHB()
end
end
elseif event == "COVENANT_CHOSEN" then
if OrderHallCommandBar then
modifyOHB()
end
end
end)
ns.setOHBVisibility = function()
if LolzenUIcfg.orderhallbar["ohb_always_show"] == true then
LoadAddOn("Blizzard_OrderHallUI")
OrderHallCommandBar:Show()
getAreaText()
getCurrencies()
else
OrderHallCommandBar:Hide()
end
end
ns.setOHBBGTexture = function()
OrderHallCommandBar.Background:SetTexture(LSM:Fetch("background", LolzenUIcfg.orderhallbar["ohb_background"]))
end
ns.setOHBBGColor = function()
OrderHallCommandBar.Background:SetVertexColor(unpack(LolzenUIcfg.orderhallbar["ohb_background_color"]))
OrderHallCommandBar.Background:SetAlpha(LolzenUIcfg.orderhallbar["ohb_background_alpha"])
end
ns.setOHBBGAlpha = function()
OrderHallCommandBar.Background:SetAlpha(LolzenUIcfg.orderhallbar["ohb_background_alpha"])
end
ns.setOHBZoneFontColor = function()
OrderHallCommandBar.AreaName:SetTextColor(unpack(LolzenUIcfg.orderhallbar["ohb_zone_color"]))
end
ns.setOHBZoneFont = function()
OrderHallCommandBar.AreaName:SetFont(LSM:Fetch("font", LolzenUIcfg.orderhallbar["ohb_zone_font"]), LolzenUIcfg.orderhallbar["ohb_zone_font_size"], LolzenUIcfg.orderhallbar["ohb_zone_font_flag"])
end
ns.setOHBCurrencyFont = function()
for i=1, #currency do
currency[i].text:SetFont(LSM:Fetch("font", LolzenUIcfg.orderhallbar["ohb_currency_font"]), LolzenUIcfg.orderhallbar["ohb_currency_font_size"], LolzenUIcfg.orderhallbar["ohb_currency_font_flag"])
end
end
ns.setOHBCurrenyIconSize = function()
for i=1, #currency do
currency[i]:SetSize(LolzenUIcfg.orderhallbar["ohb_currency_icon_size"], LolzenUIcfg.orderhallbar["ohb_currency_icon_size"])
end
end