vanilla-wow-addons – Blame information for rev 1

Subversion Repositories:
Rev:
Rev Author Line No. Line
1 office 1 function XPerl_Message(msg)
2 DEFAULT_CHAT_FRAME:AddMessage(XPERL_MSG_PREFIX.."- "..msg)
3 end
4  
5 function XPerl_SetupFrames()
6  
7 local function ValidAlpha(alpha)
8 alpha = tonumber(alpha)
9 if (alpha < 0 or alpha > 1) then
10 alpha = 1
11 end
12 return alpha
13 end
14  
15 local function ValidScale(scale)
16 scale = tonumber(scale)
17 if (scale < 0.5) then
18 scale = 0.5
19 elseif (scale > (XPerlConfig.MaximumScale or 1.5)) then
20 scale = (XPerlConfig.MaximumScale or 1.5)
21 end
22 return scale
23 end
24  
25 XPerlConfigHelper.AssistsFrame_Transparency = ValidAlpha(XPerlConfigHelper.AssistsFrame_Transparency)
26 XPerl_Assists_Frame:SetAlpha(XPerlConfigHelper.AssistsFrame_Transparency)
27  
28 XPerlConfigHelper.Targets_Transparency = ValidAlpha(XPerlConfigHelper.Targets_Transparency)
29 XPerl_Frame:SetAlpha(XPerlConfigHelper.Targets_Transparency)
30  
31 XPerlConfigHelper.Scale_AssistsFrame = ValidScale(XPerlConfigHelper.Scale_AssistsFrame)
32 XPerl_Assists_Frame:SetScale(XPerlConfigHelper.Scale_AssistsFrame)
33  
34 XPerlConfigHelper.Targets_Scale = ValidScale(XPerlConfigHelper.Targets_Scale)
35 XPerl_Frame:SetScale(XPerlConfigHelper.Targets_Scale)
36  
37 -- Assist Counters
38  
39 XPerl_SetupFrameSimple(XPerl_Frame, XPerlConfigHelper.Background_Transparency)
40 XPerl_SetupFrameSimple(XPerl_MTTargets)
41 XPerl_SetupFrameSimple(XPerl_OtherTargets)
42 XPerl_SetupFrameSimple(XPerl_Stats, XPerlConfigHelper.Background_Transparency)
43 XPerl_SetupFrameSimple(XPerl_Stats_List, XPerlConfigHelper.Background_Transparency)
44 XPerl_SetupFrameSimple(XPerl_Assists_Frame, XPerlConfigHelper.Assists_BackTransparency)
45 XPerlScrollSeperator:SetAlpha(XPerlConfigHelper.Assists_BackTransparency)
46 XPerl_SetupFrameSimple(XPerl_Threat)
47  
48 XPerl_Frame_ToggleMTTargets:SetButtonTex()
49 XPerl_Frame_ToggleTargets:SetButtonTex()
50 XPerl_Frame_ExpandLock:SetButtonTex()
51 XPerl_Frame_ToggleLabels:SetButtonTex()
52 XPerl_Frame_ToggleShowMT:SetButtonTex()
53 XPerl_Frame_Pin:SetButtonTex()
54  
55 if (XPerl_Player_TargettingFrame) then XPerl_Player_TargettingFrame:Show(); end
56 if (XPerl_Target_AssistFrame) then XPerl_Target_AssistFrame:Show(); end
57  
58 if (XPerl_RegisterHighlight) then
59 XPerl_RegisterHighlight(XPerl_Player_TargettingFrame, 4)
60 XPerl_RegisterHighlight(XPerl_Target_AssistFrame, 4)
61 XPerl_RegisterPerlFrames(XPerl_Player_TargettingFrame)
62 XPerl_RegisterPerlFrames(XPerl_Target_AssistFrame)
63 end
64 end
65  
66 -- XPerl_Slash
67 function XPerl_Slash(msg)
68  
69 local commands = {}
70 for x in string.gfind(msg, "[^ ]+") do
71 tinsert(commands, string.lower(x))
72 end
73  
74 local function SubCommandMatch(cmd, match)
75 return strsub(match, 1, strlen(cmd)) == cmd
76 end
77  
78 local function setAlpha()
79 if (commands[2] and commands[3]) then
80 if (SubCommandMatch(commands[2], "raid")) then
81 XPerlConfigHelper.Targets_Transparency = commands[3]
82 return true
83 elseif (SubCommandMatch(commands[2], "assists")) then
84 XPerlConfigHelper.AssistsFrame_Transparency = commands[3]
85 return true
86 end
87 end
88 end
89  
90 local function setScale()
91 if (commands[2] and commands[3]) then
92 if (SubCommandMatch(commands[2], "raid")) then
93 XPerlConfigHelper.Targets_Scale = commands[3]
94 return true
95 elseif (SubCommandMatch(commands[2], "assists")) then
96 XPerlConfigHelper.Scale_AssistsFrame = commands[3]
97 return true
98 elseif (SubCommandMatch(commands[2], "other")) then
99 XPerlConfigHelper.OtherTargets_Scale = commands[3]
100 return true
101 end
102 end
103 end
104  
105 local options = {
106 {"ma", XPerl_SetMainAssist},
107 {"assists", XPerl_AssistsView_Open, "Open Assists View"},
108 {"raid", XPerl_RaidHelp_Show, "Open Raid Helper"},
109 {"alpha", setAlpha, "Set Alpha Level"},
110 {"scale", setScale, "Set Frame Scale"},
111 {"labels", XPerl_Toggle_ToggleLabels, "Toggle Tank Labels"},
112 {"ctra", XPerl_Toggle_UseCTRATargets, "Toggle Use of CTRA MT Targets"},
113 {"othertargets",XPerl_Toggle_OtherTargets, "Toggle display of other mob's targets"},
114 {"find", XPerl_SetFind},
115 }
116  
117 local foundFunc
118 local foundDesc
119 if (commands[1]) then
120 local smallest = 100
121 local len = strlen(commands[1])
122 if (len) then
123 for i,entry in options do
124 if (strsub(entry[1], 1, len) == commands[1]) then
125 if (foundFunc) then
126 XPerl_Message("Ambiguous command, failed.")
127 foundFunc = nil
128 break
129 end
130 foundFunc = entry[2]
131 foundDesc = entry[3]
132 end
133 end
134 end
135 end
136  
137 if (foundFunc) then
138 if (foundFunc(msg, commands[2], commands[3], commands[4])) then
139 XPerl_SetupFrames()
140 if (foundDesc) then
141 XPerl_Message(foundDesc.." - |c0000C020done!|r")
142 end
143 return
144 end
145 end
146  
147 XPerl_Message("Options: /xp [|c00FFFF00find|r] [|c00FFFF00assists|r] [|c00FFFF00raid|r] [|c00FFFF00labels|r] [|c00FFFF00alpha|r raid|assists] [|c00FFFF00scale|r raid|assists|other] [|c00FFFF00ctra|r] [|c00FFFF00othertargets|r]")
148 end
149  
150 function XPerl_OnLoad()
151  
152 XPerl_Frame:RegisterEvent("VARIABLES_LOADED")
153 XPerl_Frame:RegisterEvent("RAID_ROSTER_UPDATE")
154  
155 SlashCmdList["XPERLHELPER"] = XPerl_Slash
156 SLASH_XPERLHELPER1 = "/xp"
157 end
158  
159 local function DefaultVar(name, value)
160 if (XPerlConfigHelper[name] == nil or (type(value) ~= type(XPerlConfigHelper[name]))) then
161 XPerlConfigHelper[name] = value
162 end
163 end
164  
165 local function XPerl_Defaults()
166 DefaultVar("RaidHelper", 1)
167 DefaultVar("UnitWidth", 100)
168 DefaultVar("UnitHeight", 26)
169 DefaultVar("UseCTRATargets", 1)
170 DefaultVar("ExpandLock", 0)
171 DefaultVar("ShowMT", 1)
172 DefaultVar("MTLabels", 0)
173 DefaultVar("MTTargetTargets", 1)
174 DefaultVar("CollectOtherTargets", 1)
175 DefaultVar("OtherTargetTargets", 1)
176 DefaultVar("Targets_Scale", 1)
177 DefaultVar("OtherTargets_Scale", 1)
178 DefaultVar("Targets_Transparency", 0.8)
179 DefaultVar("Background_Transparency", 1)
180 DefaultVar("ThreatBar", 1)
181 DefaultVar("Tooltips", 0)
182 DefaultVar("MaxMainTanks", 10)
183  
184 DefaultVar("TargetCounters", 1)
185 DefaultVar("TargetCountersSelf", 1)
186 DefaultVar("TargetCountersEnemy", 1)
187 DefaultVar("AssistsFrame", 1)
188 DefaultVar("TargettingFrame", 1)
189 DefaultVar("Scale_AssistsFrame", 1)
190 DefaultVar("AssistsFrame_Transparency", 0.8)
191 DefaultVar("Assists_BackTransparency", 1)
192  
193 DefaultVar("BorderColour", {r = 0.5, g = 0.5, b = 0.5, a = 1})
194 DefaultVar("BackgroundColour", {r = 0, g = 0, b = 0, a = 1})
195 end
196  
197 local XPerl_Old_KLHTM_Redraw = nil
198 function XPerl_KLHTM_Redraw(forceRedraw)
199 XPerl_Old_KLHTM_Redraw(forceRedraw)
200 if (XPerlConfigHelper.ThreatBar == 1) then
201 XPerl_UpdateThreat()
202 end
203 end
204  
205 -- XPerl_Startup
206 -- Called after VARIABLES_LOADED
207 function XPerl_Startup()
208  
209 if (not XPerlConfigHelper) then
210 XPerlConfigHelper = {}
211 end
212 XPerl_Defaults()
213 XPerl_StartAssists()
214  
215 if (KLHTM_Redraw and KLHTM_GetRaidData) then
216 if (KLHTM_Redraw ~= XPerl_KLHTM_Redraw) then
217 XPerl_Old_KLHTM_Redraw = KLHTM_Redraw
218 KLHTM_Redraw = XPerl_KLHTM_Redraw
219 end
220 else
221 XPerl_UpdateThreat = nil
222 end
223  
224 XPerl_SetupFrames()
225  
226 XPerlAssistPin:SetButtonTex()
227 XPerl_Frame_Pin:SetButtonTex()
228 end
229  
230 if (not XPerl_SetSmoothBarColor) then
231 XPerl_SetSmoothBarColor = function(bar, percentage)
232 if (bar) then
233 local r, g, b
234 if (XPerlConfig.ClassicHealthBar == 1) then
235 if (percentage < 0.5) then
236 r = 1
237 g = 2*percentage
238 b = 0
239 else
240 g = 1
241 r = 2*(1 - percentage)
242 b = 0
243 end
244 else
245 r = XPerlConfig.ColourHealthEmpty.r + ((XPerlConfig.ColourHealthFull.r - XPerlConfig.ColourHealthEmpty.r) * percentage)
246 g = XPerlConfig.ColourHealthEmpty.g + ((XPerlConfig.ColourHealthFull.g - XPerlConfig.ColourHealthEmpty.g) * percentage)
247 b = XPerlConfig.ColourHealthEmpty.b + ((XPerlConfig.ColourHealthFull.b - XPerlConfig.ColourHealthEmpty.b) * percentage)
248 end
249  
250 if (r >= 0 and g >= 0 and b >= 0 and r <= 1 and g <= 1 and b <= 1) then
251 bar:SetStatusBarColor(r, g, b)
252  
253 local backBar = getglobal(bar:GetName().."BG")
254 if (backBar) then
255 backBar:SetVertexColor(r, g, b, 0.25)
256 end
257 end
258 end
259 end
260 end
261  
262 if (not XPerl_SetUnitNameColor) then
263 XPerl_SetUnitNameColor = function(argUnit,argFrame)
264  
265 local r, g, b = 0.5, 0.5, 1
266  
267 if (UnitPlayerControlled(argUnit) or not UnitIsVisible(argUnit)) then
268 local _, class = UnitClass(argUnit)
269 r, g, b = XPerl_GetClassColour(class)
270 else
271 if (UnitIsTapped(argUnit) and not UnitIsTappedByPlayer(argUnit)) then
272 r, g, b = 0.5, 0.5, 0.5
273 else
274 local reaction = UnitReaction(argUnit, "player")
275  
276 if (reaction) then
277 if (reaction >= 5) then
278 r, g, b = 0, 1, 0
279 elseif (reaction <= 2) then
280 r, g, b = 1, 0, 0
281 elseif (reaction == 3) then
282 r, g, b = 1, 0.5, 0
283 else
284 r, g, b = 1, 1, 0
285 end
286 else
287 if (UnitFactionGroup("player") == UnitFactionGroup(argUnit)) then
288 r, g, b = 0, 1, 0
289 elseif (UnitIsEnemy("player", argUnit)) then
290 r, g, b = 1, 0, 0
291 else
292 r, g, b = 1, 1, 0
293 end
294 end
295 end
296 end
297  
298 argFrame:SetTextColor(r, g, b)
299 end
300 end
301  
302 -- Perl UnitFrame function copies:
303 if (not XPerl_ColourFriendlyUnit) then
304 XPerl_ColourFriendlyUnit = function(frame, partyid)
305 if (UnitCanAttack("player", partyid) and UnitIsEnemy("player", partyid)) then -- For dueling
306 frame:SetTextColor(1, 0, 0)
307 else
308 if (not XPerlConfig or XPerlConfig.ClassColouredNames == 1) then
309 local _, engClass = UnitClass(partyid)
310 local color = XPerl_GetClassColour(engClass)
311 frame:SetTextColor(color.r, color.g, color.b)
312 else
313 if (UnitIsPVP(partyid)) then
314 frame:SetTextColor(0, 1, 0)
315 else
316 frame:SetTextColor(0.5, 0.5, 1)
317 end
318 end
319 end
320 end
321 end
322  
323 if (not XPerl_GetClassColour) then
324 XPerl_GetClassColour = function(class)
325 if (class) then
326 local color = RAID_CLASS_COLORS[class]; -- Now using the WoW class color table
327 if (color) then
328 return color
329 end
330 end
331 return {r = 0.5, g = 0.5, b = 1}
332 end
333 end