annotate Config.lua @ 2:91131c35a2c3

Added the ability for Trove of the Thunderking to be tracked while on Isle of Thunder. Config options have not been tested and these nodes will only show up if you haven't looted a trove this week and should disappear as soon as you do loot a trove.
author only1yzerman
date Fri, 10 May 2013 20:56:25 -0400
parents ff01eb61abab
children 75ca29b399e8
rev   line source
only1yzerman@0 1 -------- YOU'RE ON YOUR OWN HERE, THIS IS A FRIKKIN MESS - Osmium
only1yzerman@0 2 -------- Challenge Accepted - Whyzerman
only1yzerman@0 3
only1yzerman@0 4 local element;
only1yzerman@0 5 local frame;
only1yzerman@0 6
only1yzerman@0 7 Settings = {};
only1yzerman@0 8 Settings.MultiZoneMode = 0;
only1yzerman@0 9 Settings.HerbFilter = {};
only1yzerman@0 10 Settings.OreFilter = {};
only1yzerman@0 11 Settings.ZoneFilter = {{}, {}, {}, {}, {}};
only1yzerman@0 12 Settings.InspectionRadius = 60;
only1yzerman@0 13 local function Title(text)
only1yzerman@0 14 local str = frame:CreateFontString(nil, "ARTWORK", "GameFontNormalLarge");
only1yzerman@0 15 str:SetPoint("TOPLEFT", element, "TOPLEFT", 16, -16);
only1yzerman@0 16 str:SetJustifyH("LEFT");
only1yzerman@0 17 str:SetJustifyV("TOP");
only1yzerman@0 18 str:SetText(text);
only1yzerman@0 19 element = str;
only1yzerman@0 20 end
only1yzerman@0 21
only1yzerman@0 22 local function Column2(offset)
only1yzerman@0 23 local str = frame:CreateFontString(nil, "ARTWORK", "GameFontNormalLarge");
only1yzerman@0 24 str:SetPoint("TOPLEFT", element, "TOPRIGHT", -offset, -16);
only1yzerman@0 25 str:SetText(" ");
only1yzerman@0 26 element = str;
only1yzerman@0 27 end
only1yzerman@0 28
only1yzerman@0 29 local function Heading(text)
only1yzerman@0 30 local str = frame:CreateFontString(nil, "OVERLAY", "GameFontHighlight");
only1yzerman@0 31 str:SetPoint("TOPLEFT", element, "BOTTOMLEFT", 0, -8);
only1yzerman@0 32 str:SetText(text);
only1yzerman@0 33 element = str;
only1yzerman@0 34 end
only1yzerman@0 35
only1yzerman@0 36 local ddCount = 0;
only1yzerman@0 37
only1yzerman@0 38 local function DropDown(settings, key, width, init)
only1yzerman@0 39 ddCount = ddCount + 1;
only1yzerman@0 40 local dd = CreateFrame("Frame", "dropDown"..ddCount, frame, "UIDropDownMenuTemplate");
only1yzerman@0 41 dd:EnableMouse(true);
only1yzerman@0 42 dd:SetPoint("TOPLEFT", element, "BOTTOMLEFT", 0, -8);
only1yzerman@0 43 dd.State = {};
only1yzerman@0 44 UIDropDownMenu_Initialize(dd, init);
only1yzerman@0 45 UIDropDownMenu_SetWidth(dd, width);
only1yzerman@0 46 UIDropDownMenu_JustifyText(dd, "LEFT");
only1yzerman@0 47 UIDropDownMenu_SetSelectedValue(dd, settings[key]);
only1yzerman@0 48 element = dd;
only1yzerman@0 49 end
only1yzerman@0 50
only1yzerman@0 51 function AddButton(settings, key, menu, label, value)
only1yzerman@0 52 local info = UIDropDownMenu_CreateInfo();
only1yzerman@0 53 info.text = label;
only1yzerman@0 54 info.value = value;
only1yzerman@0 55 info.owner = menu;
only1yzerman@0 56 info.func = function()
only1yzerman@0 57 UIDropDownMenu_SetSelectedValue(menu, value);
only1yzerman@0 58 settings[key] = value;
only1yzerman@0 59 Bloodhound2.UpdateMinimap();
only1yzerman@0 60 end;
only1yzerman@0 61 UIDropDownMenu_AddButton(info);
only1yzerman@0 62 end
only1yzerman@0 63
only1yzerman@0 64 local cbCount = 0;
only1yzerman@0 65
only1yzerman@0 66 function CheckBox(label, value, relative, anchor, dx, dy, state)
only1yzerman@0 67 cbCount = cbCount + 1;
only1yzerman@0 68 local cb = CreateFrame("CheckButton", "checkBox"..cbCount, frame, "UICheckButtonTemplate");
only1yzerman@0 69 cb:SetWidth(16);
only1yzerman@0 70 cb:SetHeight(16);
only1yzerman@0 71 cb:SetPoint("TOPLEFT", relative, anchor, dx, dy);
only1yzerman@0 72 local text = getglobal(cb:GetName() .. "Text");
only1yzerman@0 73 text:SetText(label);
only1yzerman@0 74 cb:SetChecked(not state[value]);
only1yzerman@0 75 cb:SetScript("OnClick", function(self)
only1yzerman@0 76 if (self:GetChecked()) then
only1yzerman@0 77 state[value] = nil;
only1yzerman@0 78 else
only1yzerman@0 79 state[value] = 1;
only1yzerman@0 80 end
only1yzerman@0 81 Bloodhound2.UpdateMinimap();
only1yzerman@0 82 end);
only1yzerman@0 83 element = cb;
only1yzerman@0 84 return text:GetWidth();
only1yzerman@0 85 end
only1yzerman@0 86
only1yzerman@0 87 function ContinentName()
only1yzerman@0 88 return select(GetCurrentMapContinent(), GetMapContinents());
only1yzerman@0 89 end
only1yzerman@0 90
only1yzerman@0 91 function CheckBoxes(table, state)
only1yzerman@0 92 local relative;
only1yzerman@0 93 local bottom;
only1yzerman@0 94 local height = 1;
only1yzerman@0 95 local maxWidth = 0;
only1yzerman@0 96 local i = 0;
only1yzerman@0 97 local checkboxes = {};
only1yzerman@0 98
only1yzerman@0 99 for k, v in pairs(table) do
only1yzerman@0 100 height = height + 1;
only1yzerman@0 101 end
only1yzerman@0 102
only1yzerman@0 103 height = floor(height / 2);
only1yzerman@0 104 if height > 19 then height = 19; end;
only1yzerman@0 105
only1yzerman@0 106 for k, v in pairs(table) do
only1yzerman@0 107 i = i + 1;
only1yzerman@0 108 if (i > 1) and (mod(i, height) == 1) then
only1yzerman@0 109 width = CheckBox(v, k, relative, "TOPRIGHT", maxWidth + 6, 0, state);
only1yzerman@0 110 relative = element;
only1yzerman@0 111 maxWidth = width;
only1yzerman@0 112 else
only1yzerman@0 113 width = CheckBox(v, k, element, "BOTTOMLEFT", 0, 0, state);
only1yzerman@0 114 if (i == 1) then relative = element; end;
only1yzerman@0 115 maxWidth = max(width, maxWidth);
only1yzerman@0 116 end
only1yzerman@0 117 if (i == height) then bottom = element; end;
only1yzerman@0 118 checkboxes[k] = element;
only1yzerman@0 119 end
only1yzerman@0 120
only1yzerman@0 121 local button = CreateFrame("Button", nil, frame, "UIPanelButtonTemplate");
only1yzerman@0 122 button:SetText(L["All"]);
only1yzerman@0 123 local allWidth = button:GetTextWidth() + 30;
only1yzerman@0 124 button:SetWidth(allWidth);
only1yzerman@0 125 button:SetHeight(22);
only1yzerman@0 126 button:SetPoint("TOPLEFT", bottom, "TOPLEFT", 0, -20);
only1yzerman@0 127 button:SetScript("OnClick",
only1yzerman@0 128 function(self, button, down)
only1yzerman@0 129 for k, v in pairs(table) do
only1yzerman@0 130 checkboxes[k]:SetChecked(true);
only1yzerman@0 131 state[k] = nil;
only1yzerman@0 132 end
only1yzerman@0 133 end
only1yzerman@0 134 );
only1yzerman@0 135
only1yzerman@0 136 element = button;
only1yzerman@0 137
only1yzerman@0 138 local button = CreateFrame("Button", nil, frame, "UIPanelButtonTemplate");
only1yzerman@0 139 button:SetText(L["None"]);
only1yzerman@0 140 button:SetWidth(button:GetTextWidth() + 30);
only1yzerman@0 141 button:SetHeight(22);
only1yzerman@0 142 button:SetPoint("TOPLEFT", bottom, "TOPLEFT", allWidth + 20, -20);
only1yzerman@0 143 button:SetScript("OnClick",
only1yzerman@0 144 function(self, button, down)
only1yzerman@0 145 for k, v in pairs(table) do
only1yzerman@0 146 checkboxes[k]:SetChecked(false);
only1yzerman@0 147 state[k] = 1;
only1yzerman@0 148 end
only1yzerman@0 149 end
only1yzerman@0 150 );
only1yzerman@0 151 end
only1yzerman@0 152
only1yzerman@0 153 function AddZones(...)
only1yzerman@0 154 local table = {};
only1yzerman@0 155
only1yzerman@0 156 for i=1,select("#", ...),1 do
only1yzerman@0 157 table[i] = select(i, ...);
only1yzerman@0 158 end
only1yzerman@0 159
only1yzerman@0 160 if not Settings.ZoneFilter then
only1yzerman@0 161 Settings.ZoneFilter = {{},{},{},{},{}};
only1yzerman@0 162 end
only1yzerman@0 163
only1yzerman@0 164 local c = GetCurrentMapContinent()
only1yzerman@0 165
only1yzerman@0 166 if not Settings.ZoneFilter[c] then
only1yzerman@0 167 Settings.ZoneFilter[c] = {}
only1yzerman@0 168 end
only1yzerman@0 169
only1yzerman@0 170 CheckBoxes(table, Settings.ZoneFilter[c]);
only1yzerman@0 171 end
only1yzerman@0 172
only1yzerman@0 173 function AddHerbs()
only1yzerman@0 174 local table = {};
only1yzerman@0 175
only1yzerman@0 176 for h, v in pairs(Bloodhound2.ContinentHerbs) do
only1yzerman@0 177 local name = L[h];
only1yzerman@0 178 if not name then name="Herb "..h; end;
only1yzerman@0 179 table[h] = name;
only1yzerman@0 180 end
only1yzerman@0 181
only1yzerman@0 182 if not Settings.HerbFilter then
only1yzerman@0 183 Settings.HerbFilter = {};
only1yzerman@0 184 end
only1yzerman@0 185
only1yzerman@0 186 CheckBoxes(table, Settings.HerbFilter);
only1yzerman@0 187 end
only1yzerman@0 188
only1yzerman@0 189 function AddOre()
only1yzerman@0 190 local table = {};
only1yzerman@0 191
only1yzerman@0 192 for h, v in pairs(Bloodhound2.ContinentOre) do
only1yzerman@0 193 local name = L[h];
only1yzerman@0 194 if not name then name="Ore "..h; end;
only1yzerman@0 195 table[h] = name;
only1yzerman@0 196 end
only1yzerman@0 197
only1yzerman@0 198 if not Settings.OreFilter then
only1yzerman@0 199 Settings.OreFilter = {};
only1yzerman@0 200 end
only1yzerman@0 201
only1yzerman@0 202 CheckBoxes(table, Settings.OreFilter);
only1yzerman@0 203 end
only1yzerman@0 204
only1yzerman@0 205 local function CopyTable(table)
only1yzerman@0 206 local copy = {};
only1yzerman@0 207 for k,v in pairs(table) do
only1yzerman@0 208 if (type(v) == "table") then
only1yzerman@0 209 copy[k] = CopyTable(v);
only1yzerman@0 210 else
only1yzerman@0 211 copy[k] = v;
only1yzerman@0 212 end
only1yzerman@0 213 end
only1yzerman@0 214 return copy;
only1yzerman@0 215 end
only1yzerman@0 216
only1yzerman@0 217 local configFrame;
only1yzerman@0 218 local BackupSettings;
only1yzerman@0 219
only1yzerman@0 220 local function RefreshConfigFrame()
only1yzerman@0 221 if (configFrame) then
only1yzerman@0 222 configFrame:Hide();
only1yzerman@0 223 end
only1yzerman@0 224
only1yzerman@0 225 BackupSettings = CopyTable(Settings);
only1yzerman@0 226
only1yzerman@0 227 configFrame = CreateFrame("Frame", nil, Bloodhound2.panel);
only1yzerman@0 228 configFrame:SetAllPoints(Bloodhound2.panel);
only1yzerman@0 229 frame = configFrame;
only1yzerman@0 230 element = frame;
only1yzerman@0 231 Title(L["Bloodhound2 Options"]);
only1yzerman@0 232 Heading(L["Multi-Zone"]);
only1yzerman@0 233 DropDown(Settings, "MultiZoneMode", 120, function(menu)
only1yzerman@0 234 AddButton(Settings, "MultiZoneMode", menu, L["While flying"], 0);
only1yzerman@0 235 AddButton(Settings, "MultiZoneMode", menu, L["Always"], 1);
only1yzerman@0 236 AddButton(Settings, "MultiZoneMode", menu, L["Never"], 2);
only1yzerman@0 237 end);
only1yzerman@0 238 Heading(L["Zones"].." ("..ContinentName()..")");
only1yzerman@0 239 AddZones(GetMapZones(GetCurrentMapContinent()));
only1yzerman@0 240 element = frame;
only1yzerman@0 241 Column2(150);
only1yzerman@0 242 Heading(L["Inspection radius"]);
only1yzerman@0 243 DropDown(Settings, "InspectionRadius", 70, function(menu)
only1yzerman@0 244 AddButton(Settings, "InspectionRadius", menu, 30, 30);
only1yzerman@0 245 AddButton(Settings, "InspectionRadius", menu, 35, 35);
only1yzerman@0 246 AddButton(Settings, "InspectionRadius", menu, 40, 40);
only1yzerman@0 247 AddButton(Settings, "InspectionRadius", menu, 45, 45);
only1yzerman@0 248 AddButton(Settings, "InspectionRadius", menu, 50, 50);
only1yzerman@0 249 AddButton(Settings, "InspectionRadius", menu, 60, 60);
only1yzerman@0 250 AddButton(Settings, "InspectionRadius", menu, 70, 70);
only1yzerman@0 251 AddButton(Settings, "InspectionRadius", menu, 80, 80);
only1yzerman@0 252 AddButton(Settings, "InspectionRadius", menu, 90, 90);
only1yzerman@0 253 AddButton(Settings, "InspectionRadius", menu, 100, 100);
only1yzerman@0 254 AddButton(Settings, "InspectionRadius", menu, 120, 120);
only1yzerman@0 255 end);
only1yzerman@0 256 end
only1yzerman@0 257
only1yzerman@0 258 local herbFrame;
only1yzerman@0 259
only1yzerman@0 260 local function RefreshHerbs()
only1yzerman@0 261 if (herbFrame) then herbFrame:Hide(); end;
only1yzerman@0 262 herbFrame = CreateFrame("Frame", nil, Bloodhound2.herbPanel);
only1yzerman@0 263 herbFrame:SetAllPoints(Bloodhound2.herbPanel);
only1yzerman@0 264 frame = herbFrame;
only1yzerman@0 265 element = frame;
only1yzerman@0 266 Title(L["Bloodhound2 Options"]);
only1yzerman@0 267 Heading(L["Herbs"].." ("..ContinentName()..")");
only1yzerman@0 268 AddHerbs();
only1yzerman@0 269 end
only1yzerman@0 270
only1yzerman@0 271 local oreFrame;
only1yzerman@0 272
only1yzerman@0 273 local function RefreshOre()
only1yzerman@0 274 if (oreFrame) then oreFrame:Hide(); end;
only1yzerman@0 275 oreFrame= CreateFrame("Frame", nil, Bloodhound2.orePanel);
only1yzerman@0 276 oreFrame:SetAllPoints(Bloodhound2.orePanel);
only1yzerman@0 277 frame = oreFrame;
only1yzerman@0 278 element = frame;
only1yzerman@0 279 Title(L["Bloodhound2 Options"]);
only1yzerman@0 280 Heading(L["Minerals"].." ("..ContinentName()..")");
only1yzerman@0 281 AddOre();
only1yzerman@0 282 end
only1yzerman@0 283
only1yzerman@0 284 local function RestoreHerbDefaults()
only1yzerman@0 285 Settings.HerbFilter = {};
only1yzerman@0 286 end
only1yzerman@0 287
only1yzerman@0 288 local function RestoreOreDefaults()
only1yzerman@0 289 Settings.OreFilter = {};
only1yzerman@0 290 end
only1yzerman@0 291
only1yzerman@0 292 local function RestoreZoneDefaults()
only1yzerman@0 293 Settings.MultiZoneMode = 0;
only1yzerman@0 294 Settings.InspectionRadius = 60;
only1yzerman@0 295 Settings.ZoneFilter[GetCurrentMapContinent()] = {};
only1yzerman@0 296 end
only1yzerman@0 297
only1yzerman@0 298 Bloodhound2.panel = CreateFrame("FRAME", "Bloodhound2", Bloodhound2.Frame);
only1yzerman@0 299 Bloodhound2.panel.name = L["Bloodhound2"];
only1yzerman@0 300 Bloodhound2.panel.default = RestoreZoneDefaults;
only1yzerman@0 301 Bloodhound2.panel.okay = function() end;
only1yzerman@0 302 Bloodhound2.panel.cancel = function() Settings = BackupSettings; Bloodhound2.UpdateMinimap(); end;
only1yzerman@0 303 Bloodhound2.panel.refresh = RefreshConfigFrame;
only1yzerman@0 304 InterfaceOptions_AddCategory(Bloodhound2.panel);
only1yzerman@0 305
only1yzerman@0 306 Bloodhound2.herbPanel = CreateFrame("FRAME", "Bloodhound2_Herbs", Bloodhound2.Frame);
only1yzerman@0 307 Bloodhound2.herbPanel.name = L["Herbs"];
only1yzerman@0 308 Bloodhound2.herbPanel.parent = "Bloodhound2";
only1yzerman@0 309 Bloodhound2.herbPanel.default = RestoreHerbDefaults;
only1yzerman@0 310 Bloodhound2.herbPanel.okay = function() end;
only1yzerman@0 311 Bloodhound2.herbPanel.cancel = function() end;
only1yzerman@0 312 Bloodhound2.herbPanel.refresh = RefreshHerbs;
only1yzerman@0 313 InterfaceOptions_AddCategory(Bloodhound2.herbPanel);
only1yzerman@0 314
only1yzerman@0 315 Bloodhound2.orePanel = CreateFrame("FRAME", "Bloodhound2_Ore", Bloodhound2.Frame);
only1yzerman@0 316 Bloodhound2.orePanel.name = L["Minerals"];
only1yzerman@0 317 Bloodhound2.orePanel.parent = "Bloodhound2";
only1yzerman@0 318 Bloodhound2.orePanel.default = RestoreOreDefaults;
only1yzerman@0 319 Bloodhound2.orePanel.okay = function() end;
only1yzerman@0 320 Bloodhound2.orePanel.cancel = function() end;
only1yzerman@0 321 Bloodhound2.orePanel.refresh = RefreshOre;
only1yzerman@0 322 InterfaceOptions_AddCategory(Bloodhound2.orePanel);
only1yzerman@0 323