vanilla-wow-addons – Blame information for rev 1

Subversion Repositories:
Rev:
Rev Author Line No. Line
1 office 1 --
2 -- LevelRange :: Main Lua File
3 -- Copyright (c) 2006 Philip Hughes (Bull3t)
4 --
5 -- Shows the zone level range on the World Map.
6 --
7 -- Thanks to Dhask for allowing the use of his FlightMap.
8 --
9 -- An unlimited license to use, reproduce and copy this work is granted, on
10 -- the condition that the licensee accepts all responsibility and liability
11 -- for any damage that may arise from the use of this AddOn.
12 --
13  
14  
15 --------------------------------------------------------------------------------------------------
16 -- Global Variables
17 --------------------------------------------------------------------------------------------------
18  
19 -- Name
20 LEVELRANGE_NAME = "LevelRange"
21  
22 -- Version Number
23 LEVELRANGE_VERSION = "1.2.0";
24  
25 -- Details
26 Details = {
27 name = LEVELRANGE_NAME,
28 version = LEVELRANGE_VERSION,
29 releaseDate = "September 05, 2006",
30 author = "Bull3t",
31 email = "bull3t@ntlworld.com",
32 website = "http://www.levelrange.co.nr",
33 category = MYADDONS_CATEGORY_MAP,
34 optionsframe = "LevelRangeOptionsFrame"
35 };
36  
37 -- Help
38 Help = {
39 [1] = LEVELRANGE_HELP0 .. "\n" .. LEVELRANGE_HELP1 .. "\n" .. LEVELRANGE_HELP2 .. "\n" .. LEVELRANGE_HELP3 .. "\n" .. LEVELRANGE_HELP4 .. "\n" .. LEVELRANGE_HELP5,
40 };
41  
42 -- Player Info
43 playerName = UnitName("player");
44 realmName = GetRealmName();
45  
46 -- Default Variables
47 LevelRangeSettings = {};
48 DEFAULT_LEVELRANGE_SHOW = true;
49 DEFAULT_LEVELRANGE_SHOWINSTANCE = true;
50 DEFAULT_LEVELRANGE_SHOWRAIDS = true;
51 DEFAULT_LEVELRANGE_SHOWPVP = true;
52  
53 -- Realm|PlayerName
54 LEVELRANGE_REALMPLAYERNAME = realmName .. "|" .. playerName
55  
56 -- Slash Commands
57 LEVELRANGE_SLASH1 = "lr"
58 LEVELRANGE_SLASH2 = "levelrange"
59  
60 -- Faction Types
61 local lTYPE_HORDE = LEVELRANGE_HORDE;
62 local lTYPE_ALLIANCE = LEVELRANGE_ALLIANCE;
63 local lTYPE_CONTESTED = LEVELRANGE_CONTESTED;
64  
65 -- Level Ranges
66 LEVELRANGE_RANGES = {
67 [LEVELRANGE_ELWYNN] = { 1, 10, lTYPE_ALLIANCE},
68 [LEVELRANGE_DUNMOROGH] = { 1, 10, lTYPE_ALLIANCE},
69 [LEVELRANGE_TIRISFAL] = { 1, 10, lTYPE_HORDE},
70 [LEVELRANGE_LOCHMODAN] = {10, 20, lTYPE_ALLIANCE},
71 [LEVELRANGE_SILVERPINE] = {10, 20, lTYPE_HORDE},
72 [LEVELRANGE_WESTFALL] = {10, 20, lTYPE_ALLIANCE},
73 [LEVELRANGE_REDRIDGE] = {15, 25, lTYPE_CONTESTED},
74 [LEVELRANGE_DUSKWOOD] = {18, 30, lTYPE_CONTESTED},
75 [LEVELRANGE_HILLSBRAD] = {20, 30, lTYPE_CONTESTED},
76 [LEVELRANGE_WETLANDS] = {20, 30, lTYPE_CONTESTED},
77 [LEVELRANGE_ALTERAC] = {30, 40, lTYPE_CONTESTED},
78 [LEVELRANGE_ARATHI] = {30, 40, lTYPE_CONTESTED},
79 [LEVELRANGE_STRANGLETHORN] = {30, 45, lTYPE_CONTESTED},
80 [LEVELRANGE_BADLANDS] = {35, 45, lTYPE_CONTESTED},
81 [LEVELRANGE_SORROWS] = {35, 45, lTYPE_CONTESTED},
82 [LEVELRANGE_HINTERLANDS] = {40, 50, lTYPE_CONTESTED},
83 [LEVELRANGE_SEARINGGORGE] = {43, 50, lTYPE_CONTESTED},
84 [LEVELRANGE_BLASTEDLANDS] = {45, 55, lTYPE_CONTESTED},
85 [LEVELRANGE_BURNINGSTEPPE] = {50, 58, lTYPE_CONTESTED},
86 [LEVELRANGE_WESTERNPLAGUE] = {51, 58, lTYPE_CONTESTED},
87 [LEVELRANGE_EASTERNPLAGUE] = {53, 60, lTYPE_CONTESTED},
88 [LEVELRANGE_DEADWINDPASS] = {55, 60, lTYPE_CONTESTED},
89  
90 [LEVELRANGE_DUROTAR] = { 1, 10, lTYPE_HORDE},
91 [LEVELRANGE_MULGORE] = { 1, 10, lTYPE_HORDE},
92 [LEVELRANGE_DARKSHORE] = {10, 20, lTYPE_ALLIANCE},
93 [LEVELRANGE_BARRENS] = {10, 25, lTYPE_HORDE},
94 [LEVELRANGE_STONETALON] = {15, 27, lTYPE_CONTESTED},
95 [LEVELRANGE_ASHENVALE] = {18, 30, lTYPE_CONTESTED},
96 [LEVELRANGE_1KNEEDLES] = {25, 35, lTYPE_CONTESTED},
97 [LEVELRANGE_DESOLACE] = {30, 40, lTYPE_CONTESTED},
98 [LEVELRANGE_DUSTWALLOW] = {35, 45, lTYPE_CONTESTED},
99 [LEVELRANGE_FERALAS] = {40, 50, lTYPE_CONTESTED},
100 [LEVELRANGE_TANARIS] = {40, 50, lTYPE_CONTESTED},
101 [LEVELRANGE_AZSHARA] = {45, 55, lTYPE_CONTESTED},
102 [LEVELRANGE_FELWOOD] = {48, 55, lTYPE_CONTESTED},
103 [LEVELRANGE_UNGOROCRATER] = {48, 55, lTYPE_CONTESTED},
104 [LEVELRANGE_SILITHUS] = {55, 60, lTYPE_CONTESTED},
105 [LEVELRANGE_WINTERSPRING] = {55, 60, lTYPE_CONTESTED},
106  
107 [LEVELRANGE_MOONGLADE] = { 1, 60, lTYPE_CONTESTED},
108  
109 [LEVELRANGE_TELDRASSIL] = { 1, 10, lTYPE_ALLIANCE},
110  
111 };
112  
113 -- Instances
114 LEVELRANGE_INSTANCES = {
115 [LEVELRANGE_WESTFALL] = {LEVELRANGE_DEADMINES, " (17-26)"},
116 [LEVELRANGE_BARRENS] = {LEVELRANGE_WAILINGCAVERNS, " (17-24)", LEVELRANGE_RAZORFENKRAUL, " (25-30)", LEVELRANGE_RAZORFENDOWNS, " (33-45)"},
117 [LEVELRANGE_SILVERPINE] = {LEVELRANGE_SHADOWFANGKEEP, " (22-30)"},
118 [LEVELRANGE_ASHENVALE] = {LEVELRANGE_BLACKFATHOMDEEPS, " (24-32)"},
119 [LEVELRANGE_DUNMOROGH] = {LEVELRANGE_GNOMEREGAN, " (29-38)"},
120 [LEVELRANGE_TIRISFAL] = {LEVELRANGE_SCARLETMONASTERY, " (34-45)"},
121 [LEVELRANGE_BADLANDS] = {LEVELRANGE_ULDAMAN, " (35-47)"},
122 [LEVELRANGE_DESOLACE] = {LEVELRANGE_MARAUDON, " (46-55)"},
123 [LEVELRANGE_SORROWS] = {LEVELRANGE_SUNKENTEMPLE, " (45-55)"},
124 [LEVELRANGE_SEARINGGORGE] = {LEVELRANGE_BLACKROCKDEPTH, " (52-60)", LEVELRANGE_BLACKROCKSPIRE, " (58-60)"},
125 [LEVELRANGE_BURNINGSTEPPE] = {LEVELRANGE_BLACKROCKDEPTH, " (52-60)", LEVELRANGE_BLACKROCKSPIRE, " (58-60)"},
126 [LEVELRANGE_EASTERNPLAGUE] = {LEVELRANGE_STRATHOLME, " (58-60)"},
127 [LEVELRANGE_FERALAS] = {LEVELRANGE_DIREMAUL, " (55-60)"},
128 [LEVELRANGE_WESTERNPLAGUE] = {LEVELRANGE_SCHOLOMANCE, " (57-60)"},
129 [LEVELRANGE_DUROTAR] = {LEVELRANGE_RAGEFIRECHASM, " (13-18)"},
130 [LEVELRANGE_ELWYNN] = {LEVELRANGE_STOCKADES, " (24-32)"},
131 [LEVELRANGE_TANARIS] = {LEVELRANGE_ZULFARRAK, " (44-54)"},
132 };
133  
134 -- Raids
135 LEVELRANGE_RAIDS = {
136 [LEVELRANGE_EASTERNPLAGUE] = {LEVELRANGE_NAXXRAMAS, " (60+)"},
137 [LEVELRANGE_DUSTWALLOW] = {LEVELRANGE_ONYXIASLAIR, " (60+)"},
138 [LEVELRANGE_SILITHUS] = {LEVELRANGE_RUINSAHNQIRAJ, " (60+)", LEVELRANGE_TEMPLEAHNQIRAJ, " (60+)"},
139 [LEVELRANGE_STRANGLETHORN] = {LEVELRANGE_ZULGURUB, " (60+)"},
140 };
141  
142 -- Sub-zones
143 LEVELRANGE_SUBZONES = {
144 [LEVELRANGE_ORGRIMMAR] = LEVELRANGE_DUROTAR,
145 [LEVELRANGE_THUNDERBLUFF] = LEVELRANGE_MULGORE,
146 [LEVELRANGE_UNDERCITY] = LEVELRANGE_TIRISFAL,
147 [LEVELRANGE_IRONFORGE] = LEVELRANGE_DUNMOROGH,
148 [LEVELRANGE_STORMWIND] = LEVELRANGE_ELWYNN,
149 };
150  
151 -- Colours
152 LEVELRANGE_COLORS = {
153 Unknown = { r = 0.8, g = 0.8, b = 0.8 },
154 Hostile = { r = 0.9, g = 0.2, b = 0.2 },
155 Friendly = { r = 0.2, g = 0.9, b = 0.2 },
156 Contested = { r = 0.8, g = 0.6, b = 0.4 },
157  
158 None = { r = 1.0, g = 1.0, b = 1.0 },
159 Levels = { r = 0.8, g = 0.6, b = 0.0 },
160 };
161  
162 -- Options
163 LevelRange = {
164 ["Opts"] = LEVELRANGE_DEFAULT_OPTS,
165 };
166  
167  
168 --------------------------------------------------------------------------------------------------
169 -- Map Drawing Functions
170 --------------------------------------------------------------------------------------------------
171  
172 -- Update the tooltip for a zone
173 local function lUpdateTooltip(zoneName)
174  
175 -- Check Toggle
176 if (LevelRangeSettings[LEVELRANGE_REALMPLAYERNAME].showLevelRange == false) then
177 LevelRangeTooltip:Hide();
178 return;
179 end
180  
181 -- No zone name, no tooltip!
182 if not zoneName or zoneName == "" then
183 LevelRangeTooltip:Hide();
184 return;
185 end
186  
187 -- Unused anchor point
188 LevelRangeTooltip:SetOwner(this, "ANCHOR_LEFT");
189  
190 -- Determine colour and level range
191 local title = LEVELRANGE_COLORS.Unknown;
192 local normalcol = LEVELRANGE_COLORS.None;
193 local levelscol = LEVELRANGE_COLORS.Levels;
194  
195 local levels = nil;
196 local actualside = nil;
197  
198 if (LEVELRANGE_RANGES[zoneName]) then
199 local _, faction = UnitFactionGroup("player");
200 local min = LEVELRANGE_RANGES[zoneName][1];
201 local max = LEVELRANGE_RANGES[zoneName][2];
202 local side = LEVELRANGE_RANGES[zoneName][3];
203  
204 if (side == lTYPE_CONTESTED) then
205 title = LEVELRANGE_COLORS.Contested;
206 actualside = "Contested";
207 else
208 if (faction == side) then
209 title = LEVELRANGE_COLORS.Friendly;
210 actualside = "Friendly";
211 else
212 title = LEVELRANGE_COLORS.Hostile;
213 actualside = "Hostile";
214 end
215 end
216 levels = string.format(LEVELRANGE_LEVELS, min, max);
217 end
218  
219 -- Start making the Tooltip
220  
221 -- Show the zone title and add level range if known
222 LevelRangeTooltip:SetText(zoneName, normalcol.r, normalcol.g, normalcol.b);
223 if levels then
224 LevelRangeTooltip:AddLine(levels, levelscol.r, levelscol.g, levelscol.b);
225 end
226  
227 -- Show diplomacy if known and if wanted
228 if (LevelRangeSettings[LEVELRANGE_REALMPLAYERNAME].showPvP == true) then
229 if actualside then
230 LevelRangeTooltip:AddLine(actualside, title.r, title.g, title.b);
231 end
232 end
233  
234 -- Add instance info if wanted
235 if (LevelRangeSettings[LEVELRANGE_REALMPLAYERNAME].showInstances == true) then
236 if (LEVELRANGE_INSTANCES[zoneName]) then
237 LevelRangeTooltip:AddLine(" ");
238 LevelRangeTooltip:AddLine(LEVELRANGE_INSTANCESTEXT);
239 getInstanceLevels(zoneName, LevelRangeTooltip);
240 end
241 end
242 if (LevelRangeSettings[LEVELRANGE_REALMPLAYERNAME].showRaids == true) then
243 if (LEVELRANGE_RAIDS[zoneName]) then
244 LevelRangeTooltip:AddLine(" ");
245 LevelRangeTooltip:AddLine(LEVELRANGE_RAIDSTEXT);
246 getRaidLevels(zoneName, LevelRangeTooltip);
247 end
248 end
249  
250 -- This stuff seems to get reset each time
251 --LevelRangeTooltip:SetBackdropColor(0, 0, 0, 0.8);
252 LevelRangeTooltip:SetBackdropBorderColor(1, 1, 1, 1);
253 LevelRangeTooltip:ClearAllPoints();
254 LevelRangeTooltip:SetPoint("BOTTOMLEFT", "WorldMapDetailFrame", "BOTTOMLEFT", 0, 0);
255  
256 -- Only show if there is level information
257 if levels then
258 LevelRangeTooltip:Show();
259 else
260 LevelRangeTooltip:Hide();
261 end
262  
263 -- Now go ahead and put the tooltip into the right location
264 LevelRangeTooltip:ClearAllPoints();
265 LevelRangeTooltip:SetPoint("BOTTOMLEFT", WorldMapDetailFrame);
266  
267 if (FlightMapFrame) then
268 LevelRangeTooltip:ClearAllPoints();
269 LevelRangeTooltip:SetPoint("BOTTOMRIGHT", "WorldMapDetailFrame",
270 "BOTTOMRIGHT", 0, 0);
271 end
272  
273 end
274  
275 -- Last drawn info for tooltip
276 lLR_CurrentZone = nil;
277 lLR_CurrentArea = nil;
278 local lLR_OldUpdate = function() end;
279  
280 -- Replacement function to draw all the extra goodies of LevelRange
281 function LevelRange_WorldMapButton_OnUpdate(arg1)
282 lLR_OldUpdate(arg1);
283 local areaName = WorldMapFrame.areaName;
284 local zoneNum = GetCurrentMapZone();
285  
286 -- Zone name equivalence map
287 if LEVELRANGE_SUBZONES[areaName] then
288 areaName = LEVELRANGE_SUBZONES[areaName];
289 end
290  
291 -- Bail out if nothing has changed
292 if zoneNum == lLR_CurrentZone and areaName == lLR_CurrentArea then
293 return;
294 end
295  
296 -- Continent or zone map?
297 if zoneNum == 0 then
298 lUpdateTooltip(areaName);
299 else
300 lUpdateTooltip(nil); -- hide it
301 end
302 end
303  
304  
305 --------------------------------------------------------------------------------------------------
306 -- Print Message Functions
307 --------------------------------------------------------------------------------------------------
308  
309 function printMSG(msg)
310 DEFAULT_CHAT_FRAME:AddMessage("|CF4FFFF4FLevelRange|r: " .. msg, 1, 1, 1);
311 end
312  
313 function printHELPMSG(msg)
314 DEFAULT_CHAT_FRAME:AddMessage("|CF4FF4F4FLevelRange Help|r: " .. msg, 1, 1, 1);
315 end
316  
317 function printOPTION(msg, status)
318 DEFAULT_CHAT_FRAME:AddMessage("|CF4FFFF4F" .. msg .. "|r" .. ": " .. status, 1 ,1 ,1);
319 end
320  
321  
322 --------------------------------------------------------------------------------------------------
323 -- Slash Command Functions
324 --------------------------------------------------------------------------------------------------
325  
326 -- Command
327 function LevelRange_GetCmd(msg)
328 if msg then
329 local a,b,c=strfind(msg, "(%S+)"); -- contiguous string of non-space characters
330 if a then
331 return c, strsub(msg, b+2);
332 else
333 return "";
334 end
335 end
336 end
337  
338 -- Handler
339 function LevelRange_SlashHandler(msg)
340 local Cmd, SubCmd = LevelRange_GetCmd(msg); -- call to above function
341 if (Cmd == "help") then
342 showHelp();
343  
344 elseif (Cmd == "list") then
345 printInstances();
346  
347 -- Toggle LevelRange tooltip
348 elseif (Cmd == "toggle") then
349 toggleLevelRange();
350  
351 -- Toggle LevelRange showing instances
352 elseif (Cmd == "instances") then
353 toggleInstances();
354  
355 elseif (Cmd == "") then
356 if (LevelRangeOptionsFrame:IsVisible()) then
357 HideUIPanel(LevelRangeOptionsFrame);
358 else
359 ShowUIPanel(LevelRangeOptionsFrame);
360 end
361  
362 -- Wrong command so show help
363 else
364 showHelp();
365 end
366 end
367  
368 function printInstances()
369 return;
370 end
371  
372 function showHelp()
373 printHELPMSG(LEVELRANGE_HELP0);
374 printHELPMSG(LEVELRANGE_HELP1);
375 printHELPMSG(LEVELRANGE_HELP2);
376 printHELPMSG(LEVELRANGE_HELP3);
377 printHELPMSG(LEVELRANGE_HELP4);
378 printHELPMSG(LEVELRANGE_HELP5);
379 end
380  
381  
382 --------------------------------------------------------------------------------------------------
383 -- Toggles
384 --------------------------------------------------------------------------------------------------
385  
386 function toggleLevelRange()
387 if (LevelRangeSettings[LEVELRANGE_REALMPLAYERNAME].showLevelRange == false) then
388 LevelRangeSettings[LEVELRANGE_REALMPLAYERNAME].showLevelRange = true;
389 printOPTION(LEVELRANGE_TOGGLESHOW, LEVELRANGE_ENABLED);
390 else
391 LevelRangeSettings[LEVELRANGE_REALMPLAYERNAME].showLevelRange = false;
392 printOPTION(LEVELRANGE_TOGGLESHOW, LEVELRANGE_DISABLED);
393 end
394 end
395  
396 function toggleInstances()
397 if (LevelRangeSettings[LEVELRANGE_REALMPLAYERNAME].showInstances == false) then
398 LevelRangeSettings[LEVELRANGE_REALMPLAYERNAME].showInstances = true;
399 printOPTION(LEVELRANGE_TOGGLEINSTANCES, LEVELRANGE_ON);
400 else
401 LevelRangeSettings[LEVELRANGE_REALMPLAYERNAME].showInstances = false;
402 printOPTION(LEVELRANGE_TOGGLEINSTANCES, LEVELRANGE_OFF);
403 end
404 end
405  
406 function toggleRaids()
407 if (LevelRangeSettings[LEVELRANGE_REALMPLAYERNAME].showRaids == false) then
408 LevelRangeSettings[LEVELRANGE_REALMPLAYERNAME].showRaids = true;
409 printOPTION(LEVELRANGE_TOGGLERAIDS, LEVELRANGE_ON);
410 else
411 LevelRangeSettings[LEVELRANGE_REALMPLAYERNAME].showRaids = false;
412 printOPTION(LEVELRANGE_TOGGLERAIDS, LEVELRANGE_OFF);
413 end
414 end
415  
416 function togglePvP()
417 if (LevelRangeSettings[LEVELRANGE_REALMPLAYERNAME].showPvP == false) then
418 LevelRangeSettings[LEVELRANGE_REALMPLAYERNAME].showPvP = true;
419 printOPTION(LEVELRANGE_TOGGLEPVP, LEVELRANGE_ON);
420 else
421 LevelRangeSettings[LEVELRANGE_REALMPLAYERNAME].showPvP = false;
422 printOPTION(LEVELRANGE_TOGGLEPVP, LEVELRANGE_OFF);
423 end
424 end
425  
426  
427 --------------------------------------------------------------------------------------------------
428 -- Instance and Raid Information
429 --------------------------------------------------------------------------------------------------
430  
431 function getInstanceLevels(zoneName, theTooltip)
432 if (LEVELRANGE_INSTANCES[zoneName]) then
433 if (LEVELRANGE_INSTANCES[zoneName][1]) then
434 theTooltip:AddDoubleLine("|CFFcFcFcF" .. LEVELRANGE_INSTANCES[zoneName][1] .. "|r", "|CFFcFcFcF" .. LEVELRANGE_INSTANCES[zoneName][2] .. "|r");
435 end
436 if (LEVELRANGE_INSTANCES[zoneName][3]) then
437 theTooltip:AddDoubleLine("|CFFcFcFcF" .. LEVELRANGE_INSTANCES[zoneName][3] .. "|r", "|CFFcFcFcF" .. LEVELRANGE_INSTANCES[zoneName][4] .. "|r");
438 end
439 if (LEVELRANGE_INSTANCES[zoneName][5]) then
440 theTooltip:AddDoubleLine("|CFFcFcFcF" .. LEVELRANGE_INSTANCES[zoneName][5] .. "|r", "|CFFcFcFcF" .. LEVELRANGE_INSTANCES[zoneName][6] .. "|r");
441 end
442 end
443 end
444  
445 function getRaidLevels(zoneName, theTooltip)
446 if (LEVELRANGE_RAIDS[zoneName]) then
447 if (LEVELRANGE_RAIDS[zoneName][1]) then
448 theTooltip:AddDoubleLine("|CFFcFcFcF" .. LEVELRANGE_RAIDS[zoneName][1] .. "|r", "|CFFcFcFcF" .. LEVELRANGE_RAIDS[zoneName][2] .. "|r");
449 end
450 if (LEVELRANGE_RAIDS[zoneName][3]) then
451 theTooltip:AddDoubleLine("|CFFcFcFcF" .. LEVELRANGE_RAIDS[zoneName][3] .. "|r", "|CFFcFcFcF" .. LEVELRANGE_RAIDS[zoneName][4] .. "|r");
452 end
453 end
454 end
455  
456  
457 --------------------------------------------------------------------------------------------------
458 -- Options Frame
459 --------------------------------------------------------------------------------------------------
460  
461 -- OnShow of options frame
462 function LevelRangeOptionsFrame_OnShow()
463 -- Set localised strings
464 LevelRangeOptionsFrameClose:SetText(LEVELRANGE_OPTIONS_CLOSE);
465 LevelRangeOptionsFrameTitle:SetText(LEVELRANGE_OPTIONS_TITLE);
466  
467 -- Set up options from localised data
468 local base = "LevelRangeOptionsFrame"
469 for optid, option in pairs(LEVELRANGE_OPTIONS) do
470 local name = base .. "Opt" .. optid;
471 local button = getglobal(name);
472 local label = getglobal(name .. "Text");
473 OptionsFrame_EnableCheckBox(button, 1, LevelRange.Opts[option.option]);
474  
475 -- Simple stuff
476 label:SetText(option.label);
477 button.tooltipText = option.tooltip;
478 button.option = option.option;
479 button.children = option.children or {};
480 end
481  
482 for optid, option in pairs(LEVELRANGE_OPTIONS) do
483 -- Enable/disable any children
484 for _, child in option.children or {} do
485 local other = getglobal(base .. "Opt" .. child);
486 if other then
487 if LevelRange.Opts[option.option] then
488 OptionsFrame_EnableCheckBox(other, 1,
489 LevelRange.Opts[LEVELRANGE_OPTIONS[child].option]);
490 else
491 OptionsFrame_DisableCheckBox(other);
492 end
493 end
494 end
495 end
496 loadSettings();
497 end
498  
499 -- OnHide of options frame
500 function LevelRangeOptionsFrame_OnHide()
501 return;
502 end
503  
504 -- OnClick of options button
505 function LevelRangeOptionsCheckButton_OnClick()
506  
507 if (this.option == "showLevelRange") then
508 toggleLevelRange(this);
509 elseif (this.option == "showInstances") then
510 toggleInstances();
511 elseif (this.option == "showRaids") then
512 toggleRaids();
513 elseif (this.option == "showPvP") then
514 togglePvP();
515 end
516  
517 if (this:GetChecked()) then
518 LevelRange.Opts[this.option] = true;
519 else
520 LevelRange.Opts[this.option] = false;
521 end
522  
523 local base = "LevelRangeOptionsFrame";
524 for _, child in this.children do
525 local other = getglobal(base .. "Opt" .. child);
526 if other then
527 if LevelRange.Opts[this.option] then
528 OptionsFrame_EnableCheckBox(other, 1,
529 LevelRange.Opts[LEVELRANGE_OPTIONS[child].option]);
530 else
531 OptionsFrame_DisableCheckBox(other);
532 end
533 end
534 end
535 end
536  
537 -- Load Settings
538 function loadSettings()
539 if (LevelRangeSettings[LEVELRANGE_REALMPLAYERNAME].showLevelRange == true) then
540 local optionButton = getglobal("LevelRangeOptionsFrame" .. "Opt1");
541  
542 optionButton:SetChecked(true);
543 LevelRange.Opts["showLevelRange"] = true;
544  
545 elseif (LevelRangeSettings[LEVELRANGE_REALMPLAYERNAME].showLevelRange == false) then
546 local optionButton = getglobal("LevelRangeOptionsFrame" .. "Opt1");
547  
548 optionButton:SetChecked(false);
549 LevelRange.Opts["showLevelRange"] = false;
550 end
551  
552 if (LevelRangeSettings[LEVELRANGE_REALMPLAYERNAME].showInstances == true) then
553 local optionButton = getglobal("LevelRangeOptionsFrame" .. "Opt2");
554  
555 optionButton:SetChecked(true);
556 LevelRange.Opts["showInstances"] = true;
557  
558 elseif (LevelRangeSettings[LEVELRANGE_REALMPLAYERNAME].showInstances == false) then
559 local optionButton = getglobal("LevelRangeOptionsFrame" .. "Opt2");
560  
561 optionButton:SetChecked(false);
562 LevelRange.Opts["showInstances"] = false;
563 end
564  
565 if (LevelRangeSettings[LEVELRANGE_REALMPLAYERNAME].showRaids == true) then
566 local optionButton = getglobal("LevelRangeOptionsFrame" .. "Opt3");
567  
568 optionButton:SetChecked(true);
569 LevelRange.Opts["showRaids"] = true;
570  
571 elseif (LevelRangeSettings[LEVELRANGE_REALMPLAYERNAME].showRaids == false) then
572 local optionButton = getglobal("LevelRangeOptionsFrame" .. "Opt3");
573  
574 optionButton:SetChecked(false);
575 LevelRange.Opts["showRaids"] = false;
576 end
577  
578 if (LevelRangeSettings[LEVELRANGE_REALMPLAYERNAME].showPvP == true) then
579 local optionButton = getglobal("LevelRangeOptionsFrame" .. "Opt4");
580  
581 optionButton:SetChecked(true);
582 LevelRange.Opts["showPvP"] = true;
583  
584 elseif (LevelRangeSettings[LEVELRANGE_REALMPLAYERNAME].showPvP == false) then
585 local optionButton = getglobal("LevelRangeOptionsFrame" .. "Opt4");
586  
587 optionButton:SetChecked(false);
588 LevelRange.Opts["showPvP"] = false;
589 end
590 end
591  
592  
593 --------------------------------------------------------------------------------------------------
594 -- Initialize Functions
595 --------------------------------------------------------------------------------------------------
596  
597 function LevelRange_OnLoad()
598 -- Override the world map function
599 lLR_OldUpdate = WorldMapButton_OnUpdate;
600 WorldMapButton_OnUpdate = LevelRange_WorldMapButton_OnUpdate;
601  
602 -- Setup slash commands
603 SlashCmdList["LEVELRANGE"] = LevelRange_SlashHandler;
604 SLASH_LEVELRANGE1 = "/" .. LEVELRANGE_SLASH1;
605 SLASH_LEVELRANGE2 = "/" .. LEVELRANGE_SLASH2;
606  
607 -- Reload UI Commands
608 SlashCmdList["RELOADUI"] = ReloadUI;
609 SLASH_RELOADUI1 = "/rui";
610 SLASH_RELOADUI2 = "/reloadui";
611  
612 -- LevelRange is loaded
613 printMSG(LEVELRANGE_LOADEDPREFIX .. LEVELRANGE_VERSION .. LEVELRANGE_LOADEDSUFFIX)
614 this:RegisterEvent("ADDON_LOADED");
615 this:RegisterEvent("VARIABLES_LOADED");
616 this:RegisterEvent("PLAYER_ENTERING_WORLD");
617 end
618  
619 function LevelRange_Initialize()
620 -- Make sure LevelRangeSettings is ready
621 if (not LevelRangeSettings) then
622 LevelRangeSettings = { };
623 end
624  
625 if (not LevelRangeSettings[LEVELRANGE_REALMPLAYERNAME]) then
626 LevelRangeSettings[LEVELRANGE_REALMPLAYERNAME] = { };
627 end
628  
629  
630 -- LevelRange Toggle
631 if (LevelRangeSettings[LEVELRANGE_REALMPLAYERNAME].showLevelRange == nil) then
632 LevelRangeSettings[LEVELRANGE_REALMPLAYERNAME].showLevelRange = DEFAULT_LEVELRANGE_SHOW;
633 end
634  
635 -- Instances Toggle
636 if (LevelRangeSettings[LEVELRANGE_REALMPLAYERNAME].showInstances == nil) then
637 LevelRangeSettings[LEVELRANGE_REALMPLAYERNAME].showInstances = DEFAULT_LEVELRANGE_SHOWINSTANCE;
638 end
639  
640 -- Raids Toggle
641 if (LevelRangeSettings[LEVELRANGE_REALMPLAYERNAME].showRaids == nil) then
642 LevelRangeSettings[LEVELRANGE_REALMPLAYERNAME].showRaids = DEFAULT_LEVELRANGE_SHOWRAIDS;
643 end
644  
645 -- PvP Toggle
646 if (LevelRangeSettings[LEVELRANGE_REALMPLAYERNAME].showPvP == nil) then
647 LevelRangeSettings[LEVELRANGE_REALMPLAYERNAME].showPvP = DEFAULT_LEVELRANGE_SHOWPVP;
648 end
649 end
650  
651 function LevelRange_OnEvent(event)
652 if (event == "VARIABLES_LOADED") then
653 LevelRange_Initialize();
654  
655 -- Register LevelRange with myAddons
656 if (myAddOnsFrame_Register) then
657 myAddOnsFrame_Register(Details, Help);
658 end
659 end
660 end