annotate Config.lua @ 21:2b1eb8dc1525 Release tip

Changed the file encoding type so that it is recognized as Russian.
author only1yzerman
date Thu, 10 Oct 2013 05:36:19 -0400
parents 61b30721d4cf
children
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@8 11 Settings.MiscFilter = {};
only1yzerman@0 12 Settings.ZoneFilter = {{}, {}, {}, {}, {}};
only1yzerman@0 13 Settings.InspectionRadius = 60;
only1yzerman@8 14
only1yzerman@0 15 local function Title(text)
only1yzerman@0 16 local str = frame:CreateFontString(nil, "ARTWORK", "GameFontNormalLarge");
only1yzerman@0 17 str:SetPoint("TOPLEFT", element, "TOPLEFT", 16, -16);
only1yzerman@0 18 str:SetJustifyH("LEFT");
only1yzerman@0 19 str:SetJustifyV("TOP");
only1yzerman@0 20 str:SetText(text);
only1yzerman@0 21 element = str;
only1yzerman@0 22 end
only1yzerman@0 23
only1yzerman@0 24 local function Column2(offset)
only1yzerman@0 25 local str = frame:CreateFontString(nil, "ARTWORK", "GameFontNormalLarge");
only1yzerman@0 26 str:SetPoint("TOPLEFT", element, "TOPRIGHT", -offset, -16);
only1yzerman@0 27 str:SetText(" ");
only1yzerman@0 28 element = str;
only1yzerman@0 29 end
only1yzerman@0 30
only1yzerman@0 31 local function Heading(text)
only1yzerman@0 32 local str = frame:CreateFontString(nil, "OVERLAY", "GameFontHighlight");
only1yzerman@0 33 str:SetPoint("TOPLEFT", element, "BOTTOMLEFT", 0, -8);
only1yzerman@0 34 str:SetText(text);
only1yzerman@0 35 element = str;
only1yzerman@0 36 end
only1yzerman@0 37
only1yzerman@0 38 local ddCount = 0;
only1yzerman@0 39
only1yzerman@0 40 local function DropDown(settings, key, width, init)
only1yzerman@0 41 ddCount = ddCount + 1;
only1yzerman@0 42 local dd = CreateFrame("Frame", "dropDown"..ddCount, frame, "UIDropDownMenuTemplate");
only1yzerman@0 43 dd:EnableMouse(true);
only1yzerman@0 44 dd:SetPoint("TOPLEFT", element, "BOTTOMLEFT", 0, -8);
only1yzerman@0 45 dd.State = {};
only1yzerman@0 46 UIDropDownMenu_Initialize(dd, init);
only1yzerman@0 47 UIDropDownMenu_SetWidth(dd, width);
only1yzerman@0 48 UIDropDownMenu_JustifyText(dd, "LEFT");
only1yzerman@0 49 UIDropDownMenu_SetSelectedValue(dd, settings[key]);
only1yzerman@0 50 element = dd;
only1yzerman@0 51 end
only1yzerman@0 52
only1yzerman@0 53 function AddButton(settings, key, menu, label, value)
only1yzerman@0 54 local info = UIDropDownMenu_CreateInfo();
only1yzerman@0 55 info.text = label;
only1yzerman@0 56 info.value = value;
only1yzerman@0 57 info.owner = menu;
only1yzerman@0 58 info.func = function()
only1yzerman@0 59 UIDropDownMenu_SetSelectedValue(menu, value);
only1yzerman@0 60 settings[key] = value;
only1yzerman@0 61 Bloodhound2.UpdateMinimap();
only1yzerman@0 62 end;
only1yzerman@0 63 UIDropDownMenu_AddButton(info);
only1yzerman@0 64 end
only1yzerman@0 65
only1yzerman@0 66 local cbCount = 0;
only1yzerman@0 67
only1yzerman@0 68 function CheckBox(label, value, relative, anchor, dx, dy, state)
only1yzerman@0 69 cbCount = cbCount + 1;
only1yzerman@0 70 local cb = CreateFrame("CheckButton", "checkBox"..cbCount, frame, "UICheckButtonTemplate");
only1yzerman@0 71 cb:SetWidth(16);
only1yzerman@0 72 cb:SetHeight(16);
only1yzerman@0 73 cb:SetPoint("TOPLEFT", relative, anchor, dx, dy);
only1yzerman@0 74 local text = getglobal(cb:GetName() .. "Text");
only1yzerman@0 75 text:SetText(label);
only1yzerman@0 76 cb:SetChecked(not state[value]);
only1yzerman@0 77 cb:SetScript("OnClick", function(self)
only1yzerman@0 78 if (self:GetChecked()) then
only1yzerman@0 79 state[value] = nil;
only1yzerman@0 80 else
only1yzerman@0 81 state[value] = 1;
only1yzerman@0 82 end
only1yzerman@0 83 Bloodhound2.UpdateMinimap();
only1yzerman@0 84 end);
only1yzerman@0 85 element = cb;
only1yzerman@0 86 return text:GetWidth();
only1yzerman@0 87 end
only1yzerman@0 88
only1yzerman@0 89 function ContinentName()
only1yzerman@0 90 return select(GetCurrentMapContinent(), GetMapContinents());
only1yzerman@0 91 end
only1yzerman@0 92
only1yzerman@0 93 function CheckBoxes(table, state)
only1yzerman@0 94 local relative;
only1yzerman@0 95 local bottom;
only1yzerman@0 96 local height = 1;
only1yzerman@0 97 local maxWidth = 0;
only1yzerman@0 98 local i = 0;
only1yzerman@0 99 local checkboxes = {};
only1yzerman@0 100
only1yzerman@0 101 for k, v in pairs(table) do
only1yzerman@0 102 height = height + 1;
only1yzerman@0 103 end
only1yzerman@0 104
only1yzerman@0 105 height = floor(height / 2);
only1yzerman@0 106 if height > 19 then height = 19; end;
only1yzerman@0 107
only1yzerman@0 108 for k, v in pairs(table) do
only1yzerman@0 109 i = i + 1;
only1yzerman@0 110 if (i > 1) and (mod(i, height) == 1) then
only1yzerman@0 111 width = CheckBox(v, k, relative, "TOPRIGHT", maxWidth + 6, 0, state);
only1yzerman@0 112 relative = element;
only1yzerman@0 113 maxWidth = width;
only1yzerman@0 114 else
only1yzerman@0 115 width = CheckBox(v, k, element, "BOTTOMLEFT", 0, 0, state);
only1yzerman@0 116 if (i == 1) then relative = element; end;
only1yzerman@0 117 maxWidth = max(width, maxWidth);
only1yzerman@0 118 end
only1yzerman@0 119 if (i == height) then bottom = element; end;
only1yzerman@0 120 checkboxes[k] = element;
only1yzerman@0 121 end
only1yzerman@0 122
only1yzerman@0 123 local button = CreateFrame("Button", nil, frame, "UIPanelButtonTemplate");
only1yzerman@0 124 button:SetText(L["All"]);
only1yzerman@0 125 local allWidth = button:GetTextWidth() + 30;
only1yzerman@0 126 button:SetWidth(allWidth);
only1yzerman@0 127 button:SetHeight(22);
only1yzerman@0 128 button:SetPoint("TOPLEFT", bottom, "TOPLEFT", 0, -20);
only1yzerman@0 129 button:SetScript("OnClick",
only1yzerman@0 130 function(self, button, down)
only1yzerman@0 131 for k, v in pairs(table) do
only1yzerman@0 132 checkboxes[k]:SetChecked(true);
only1yzerman@0 133 state[k] = nil;
only1yzerman@0 134 end
only1yzerman@0 135 end
only1yzerman@0 136 );
only1yzerman@0 137
only1yzerman@0 138 element = button;
only1yzerman@0 139
only1yzerman@0 140 local button = CreateFrame("Button", nil, frame, "UIPanelButtonTemplate");
only1yzerman@0 141 button:SetText(L["None"]);
only1yzerman@0 142 button:SetWidth(button:GetTextWidth() + 30);
only1yzerman@0 143 button:SetHeight(22);
only1yzerman@0 144 button:SetPoint("TOPLEFT", bottom, "TOPLEFT", allWidth + 20, -20);
only1yzerman@0 145 button:SetScript("OnClick",
only1yzerman@0 146 function(self, button, down)
only1yzerman@0 147 for k, v in pairs(table) do
only1yzerman@0 148 checkboxes[k]:SetChecked(false);
only1yzerman@0 149 state[k] = 1;
only1yzerman@0 150 end
only1yzerman@0 151 end
only1yzerman@0 152 );
only1yzerman@0 153 end
only1yzerman@0 154
only1yzerman@0 155 function AddZones(...)
only1yzerman@0 156 local table = {};
only1yzerman@0 157
only1yzerman@0 158 for i=1,select("#", ...),1 do
only1yzerman@0 159 table[i] = select(i, ...);
only1yzerman@0 160 end
only1yzerman@0 161
only1yzerman@0 162 if not Settings.ZoneFilter then
only1yzerman@0 163 Settings.ZoneFilter = {{},{},{},{},{}};
only1yzerman@0 164 end
only1yzerman@0 165
only1yzerman@0 166 local c = GetCurrentMapContinent()
only1yzerman@0 167
only1yzerman@0 168 if not Settings.ZoneFilter[c] then
only1yzerman@0 169 Settings.ZoneFilter[c] = {}
only1yzerman@0 170 end
only1yzerman@0 171
only1yzerman@0 172 CheckBoxes(table, Settings.ZoneFilter[c]);
only1yzerman@0 173 end
only1yzerman@0 174
only1yzerman@0 175 function AddHerbs()
only1yzerman@0 176 local table = {};
only1yzerman@0 177
only1yzerman@0 178 for h, v in pairs(Bloodhound2.ContinentHerbs) do
only1yzerman@0 179 local name = L[h];
only1yzerman@0 180 if not name then name="Herb "..h; end;
only1yzerman@0 181 table[h] = name;
only1yzerman@0 182 end
only1yzerman@0 183
only1yzerman@0 184 if not Settings.HerbFilter then
only1yzerman@0 185 Settings.HerbFilter = {};
only1yzerman@0 186 end
only1yzerman@0 187
only1yzerman@0 188 CheckBoxes(table, Settings.HerbFilter);
only1yzerman@0 189 end
only1yzerman@0 190
only1yzerman@0 191 function AddOre()
only1yzerman@0 192 local table = {};
only1yzerman@0 193
only1yzerman@0 194 for h, v in pairs(Bloodhound2.ContinentOre) do
only1yzerman@0 195 local name = L[h];
only1yzerman@0 196 if not name then name="Ore "..h; end;
only1yzerman@0 197 table[h] = name;
only1yzerman@0 198 end
only1yzerman@0 199
only1yzerman@0 200 if not Settings.OreFilter then
only1yzerman@0 201 Settings.OreFilter = {};
only1yzerman@0 202 end
only1yzerman@0 203
only1yzerman@0 204 CheckBoxes(table, Settings.OreFilter);
only1yzerman@0 205 end
only1yzerman@0 206
only1yzerman@8 207 function AddMisc()
only1yzerman@8 208 local table = {};
only1yzerman@8 209
only1yzerman@11 210 for h, v in pairs(Bloodhound2.ContinentNode) do
only1yzerman@8 211 local name = L[h];
only1yzerman@8 212 if not name then name="Misc "..h; end;
only1yzerman@8 213 table[h] = name;
only1yzerman@8 214 end
only1yzerman@8 215
only1yzerman@8 216 if not Settings.MiscFilter then
only1yzerman@8 217 Settings.MiscFilter = {};
only1yzerman@8 218 end
only1yzerman@8 219
only1yzerman@8 220 CheckBoxes(table, Settings.MiscFilter);
only1yzerman@8 221 end
only1yzerman@8 222
only1yzerman@0 223 local function CopyTable(table)
only1yzerman@0 224 local copy = {};
only1yzerman@0 225 for k,v in pairs(table) do
only1yzerman@0 226 if (type(v) == "table") then
only1yzerman@0 227 copy[k] = CopyTable(v);
only1yzerman@0 228 else
only1yzerman@0 229 copy[k] = v;
only1yzerman@0 230 end
only1yzerman@0 231 end
only1yzerman@0 232 return copy;
only1yzerman@0 233 end
only1yzerman@0 234
only1yzerman@0 235 local configFrame;
only1yzerman@0 236 local BackupSettings;
only1yzerman@0 237
only1yzerman@0 238 local function RefreshConfigFrame()
only1yzerman@0 239 if (configFrame) then
only1yzerman@0 240 configFrame:Hide();
only1yzerman@0 241 end
only1yzerman@0 242
only1yzerman@0 243 BackupSettings = CopyTable(Settings);
only1yzerman@0 244
only1yzerman@0 245 configFrame = CreateFrame("Frame", nil, Bloodhound2.panel);
only1yzerman@0 246 configFrame:SetAllPoints(Bloodhound2.panel);
only1yzerman@0 247 frame = configFrame;
only1yzerman@0 248 element = frame;
only1yzerman@0 249 Title(L["Bloodhound2 Options"]);
only1yzerman@0 250 Heading(L["Multi-Zone"]);
only1yzerman@0 251 DropDown(Settings, "MultiZoneMode", 120, function(menu)
only1yzerman@0 252 AddButton(Settings, "MultiZoneMode", menu, L["While flying"], 0);
only1yzerman@0 253 AddButton(Settings, "MultiZoneMode", menu, L["Always"], 1);
only1yzerman@0 254 AddButton(Settings, "MultiZoneMode", menu, L["Never"], 2);
only1yzerman@0 255 end);
only1yzerman@0 256 Heading(L["Zones"].." ("..ContinentName()..")");
only1yzerman@0 257 AddZones(GetMapZones(GetCurrentMapContinent()));
only1yzerman@0 258 element = frame;
only1yzerman@0 259 Column2(150);
only1yzerman@0 260 Heading(L["Inspection radius"]);
only1yzerman@0 261 DropDown(Settings, "InspectionRadius", 70, function(menu)
only1yzerman@0 262 AddButton(Settings, "InspectionRadius", menu, 30, 30);
only1yzerman@0 263 AddButton(Settings, "InspectionRadius", menu, 35, 35);
only1yzerman@0 264 AddButton(Settings, "InspectionRadius", menu, 40, 40);
only1yzerman@0 265 AddButton(Settings, "InspectionRadius", menu, 45, 45);
only1yzerman@0 266 AddButton(Settings, "InspectionRadius", menu, 50, 50);
only1yzerman@0 267 AddButton(Settings, "InspectionRadius", menu, 60, 60);
only1yzerman@0 268 AddButton(Settings, "InspectionRadius", menu, 70, 70);
only1yzerman@0 269 AddButton(Settings, "InspectionRadius", menu, 80, 80);
only1yzerman@0 270 AddButton(Settings, "InspectionRadius", menu, 90, 90);
only1yzerman@0 271 AddButton(Settings, "InspectionRadius", menu, 100, 100);
only1yzerman@0 272 AddButton(Settings, "InspectionRadius", menu, 120, 120);
only1yzerman@0 273 end);
only1yzerman@0 274 end
only1yzerman@0 275
only1yzerman@0 276 local herbFrame;
only1yzerman@0 277
only1yzerman@0 278 local function RefreshHerbs()
only1yzerman@0 279 if (herbFrame) then herbFrame:Hide(); end;
only1yzerman@0 280 herbFrame = CreateFrame("Frame", nil, Bloodhound2.herbPanel);
only1yzerman@0 281 herbFrame:SetAllPoints(Bloodhound2.herbPanel);
only1yzerman@0 282 frame = herbFrame;
only1yzerman@0 283 element = frame;
only1yzerman@0 284 Title(L["Bloodhound2 Options"]);
only1yzerman@0 285 Heading(L["Herbs"].." ("..ContinentName()..")");
only1yzerman@0 286 AddHerbs();
only1yzerman@0 287 end
only1yzerman@0 288
only1yzerman@0 289 local oreFrame;
only1yzerman@0 290
only1yzerman@0 291 local function RefreshOre()
only1yzerman@0 292 if (oreFrame) then oreFrame:Hide(); end;
only1yzerman@0 293 oreFrame= CreateFrame("Frame", nil, Bloodhound2.orePanel);
only1yzerman@0 294 oreFrame:SetAllPoints(Bloodhound2.orePanel);
only1yzerman@0 295 frame = oreFrame;
only1yzerman@0 296 element = frame;
only1yzerman@0 297 Title(L["Bloodhound2 Options"]);
only1yzerman@0 298 Heading(L["Minerals"].." ("..ContinentName()..")");
only1yzerman@0 299 AddOre();
only1yzerman@0 300 end
only1yzerman@0 301
only1yzerman@8 302 local miscFrame;
only1yzerman@8 303
only1yzerman@8 304 local function RefreshMisc()
only1yzerman@8 305 if (miscFrame) then miscFrame:Hide(); end;
only1yzerman@8 306 miscFrame= CreateFrame("Frame", nil, Bloodhound2.miscPanel);
only1yzerman@8 307 miscFrame:SetAllPoints(Bloodhound2.miscPanel);
only1yzerman@8 308 frame = miscFrame;
only1yzerman@8 309 element = frame;
only1yzerman@8 310 Title(L["Bloodhound2 Options"]);
only1yzerman@8 311 Heading(L["Misc"].." ("..ContinentName()..")");
only1yzerman@8 312 AddMisc();
only1yzerman@8 313 end
only1yzerman@8 314
only1yzerman@0 315 local function RestoreHerbDefaults()
only1yzerman@0 316 Settings.HerbFilter = {};
only1yzerman@0 317 end
only1yzerman@0 318
only1yzerman@0 319 local function RestoreOreDefaults()
only1yzerman@0 320 Settings.OreFilter = {};
only1yzerman@0 321 end
only1yzerman@0 322
only1yzerman@8 323 local function RestoreMiscDefaults()
only1yzerman@8 324 Settings.MiscFilter = {};
only1yzerman@8 325 end
only1yzerman@8 326
only1yzerman@0 327 local function RestoreZoneDefaults()
only1yzerman@0 328 Settings.MultiZoneMode = 0;
only1yzerman@0 329 Settings.InspectionRadius = 60;
only1yzerman@0 330 Settings.ZoneFilter[GetCurrentMapContinent()] = {};
only1yzerman@0 331 end
only1yzerman@0 332
only1yzerman@0 333 Bloodhound2.panel = CreateFrame("FRAME", "Bloodhound2", Bloodhound2.Frame);
only1yzerman@0 334 Bloodhound2.panel.name = L["Bloodhound2"];
only1yzerman@0 335 Bloodhound2.panel.default = RestoreZoneDefaults;
only1yzerman@0 336 Bloodhound2.panel.okay = function() end;
only1yzerman@0 337 Bloodhound2.panel.cancel = function() Settings = BackupSettings; Bloodhound2.UpdateMinimap(); end;
only1yzerman@0 338 Bloodhound2.panel.refresh = RefreshConfigFrame;
only1yzerman@0 339 InterfaceOptions_AddCategory(Bloodhound2.panel);
only1yzerman@0 340
only1yzerman@0 341 Bloodhound2.herbPanel = CreateFrame("FRAME", "Bloodhound2_Herbs", Bloodhound2.Frame);
only1yzerman@0 342 Bloodhound2.herbPanel.name = L["Herbs"];
only1yzerman@0 343 Bloodhound2.herbPanel.parent = "Bloodhound2";
only1yzerman@0 344 Bloodhound2.herbPanel.default = RestoreHerbDefaults;
only1yzerman@0 345 Bloodhound2.herbPanel.okay = function() end;
only1yzerman@0 346 Bloodhound2.herbPanel.cancel = function() end;
only1yzerman@0 347 Bloodhound2.herbPanel.refresh = RefreshHerbs;
only1yzerman@0 348 InterfaceOptions_AddCategory(Bloodhound2.herbPanel);
only1yzerman@0 349
only1yzerman@0 350 Bloodhound2.orePanel = CreateFrame("FRAME", "Bloodhound2_Ore", Bloodhound2.Frame);
only1yzerman@0 351 Bloodhound2.orePanel.name = L["Minerals"];
only1yzerman@0 352 Bloodhound2.orePanel.parent = "Bloodhound2";
only1yzerman@0 353 Bloodhound2.orePanel.default = RestoreOreDefaults;
only1yzerman@0 354 Bloodhound2.orePanel.okay = function() end;
only1yzerman@0 355 Bloodhound2.orePanel.cancel = function() end;
only1yzerman@0 356 Bloodhound2.orePanel.refresh = RefreshOre;
only1yzerman@0 357 InterfaceOptions_AddCategory(Bloodhound2.orePanel);
only1yzerman@0 358
only1yzerman@8 359 Bloodhound2.miscPanel = CreateFrame("FRAME", "Bloodhound2_Misc", Bloodhound2.Frame);
only1yzerman@8 360 Bloodhound2.miscPanel.name = L["Misc"];
only1yzerman@8 361 Bloodhound2.miscPanel.parent = "Bloodhound2";
only1yzerman@8 362 Bloodhound2.miscPanel.default = RestoreMiscDefaults;
only1yzerman@8 363 Bloodhound2.miscPanel.okay = function() end;
only1yzerman@8 364 Bloodhound2.miscPanel.cancel = function() end;
only1yzerman@8 365 Bloodhound2.miscPanel.refresh = RefreshMisc;
only1yzerman@8 366 InterfaceOptions_AddCategory(Bloodhound2.miscPanel);