Asa@28: local addonName, addonTable = ...; Asa@3: local addon = _G[addonName] Asa@3: Asa@3: local utils = addonTable.utils Asa@3: Asa@13: local currentFaction = UnitFactionGroup("player") Asa@13: local AHFactions = { currentFaction, 'Neutral' } Asa@13: Asa@20: local craftingThresholds = {5000, 10000, 50000} Asa@20: local craftingThresholdsDisplay = {} Asa@20: Asa@20: for key, value in pairs(craftingThresholds) do Asa@20: craftingThresholdsDisplay[key] = addon:FormatMoney(value, '', true) Asa@20: -- craftingThresholdsDisplay[key] = value Asa@20: end Asa@20: Asa@3: local options = { Asa@13: handler = addon, Asa@3: name = "ItemAuditor", Asa@3: type = 'group', Asa@3: args = { Asa@13: prices = { Asa@13: name = "Prices", Asa@13: desc = "Control how your minimum price is calculated.", Asa@13: type = 'group', Asa@13: args = { Asa@13: auction_house = { Asa@13: type = "select", Asa@13: name = "Auction House", Asa@13: desc = "", Asa@13: values = { currentFaction, 'Neutral' }, Asa@13: get = 'GetAH', Asa@13: set = 'SetAH', Asa@13: }, Asa@13: }, Asa@3: }, Asa@13: Asa@13: Asa@13: messages = { Asa@13: name = "Messages", Asa@13: desc = "Control which messages display in your chat window.", Asa@13: type = 'group', Asa@13: args = { Asa@20: Asa@20: item_cost = { Asa@20: type = "toggle", Asa@20: name = "Item Cost", Asa@20: desc = "Shows a message every time an item's cost changes", Asa@20: get = function() return ItemAuditor.db.profile.messages.cost_updates end, Asa@20: set = function(info, value) ItemAuditor.db.profile.messages.cost_updates = value end, Asa@20: order = 0, Asa@20: }, Asa@20: queue_skip = { Asa@20: type = "toggle", Asa@20: name = "Queue Skip", Asa@20: desc = "Displays a message when an item is excluded from the queue.", Asa@20: get = function() return ItemAuditor.db.profile.messages.queue_skip end, Asa@20: set = function(info, value) ItemAuditor.db.profile.messages.queue_skip = value end, Asa@20: disabled = 'IsQADisabled', Asa@20: order = 1, Asa@20: }, Asa@13: }, Asa@3: }, Asa@13: Asa@13: qa_options = { Asa@13: name = "QA Options", Asa@13: desc = "Control how ItemAuditor integrates with QuickAuctions", Asa@13: type = 'group', Asa@13: -- disabled = (not addon.QA_compatibile), Asa@13: disabled = function() return not ItemAuditor:IsQACompatible() end, Asa@13: args = { Asa@13: toggle_qa = { Asa@13: type = "toggle", Asa@13: name = "Enable Quick Auctions", Asa@13: desc = "This will enable or disable Quick Auctions integration", Asa@13: get = "IsQAEnabled", Asa@13: set = "SetQAEnabled", Asa@13: order = 0, Asa@13: }, Asa@13: --[[ Asa@13: add_mail = { Asa@13: type = "toggle", Asa@13: name = "Add mail cost to QA Threshold", Asa@13: get = "IsQAEnabled", Asa@13: set = "SetQAEnabled", Asa@13: order = 1, Asa@13: }, Asa@13: ]] Asa@20: auction_threshold = { Asa@20: type = "range", Asa@20: name = "Auction Threshold", Asa@20: desc = "Don't create items that will make less than this amount of profit", Asa@20: min = 0.0, Asa@20: max = 1.0, Asa@20: isPercent = true, Asa@20: get = function() return ItemAuditor.db.char.auction_threshold end, Asa@21: set = function(info, value) Asa@21: ItemAuditor.db.char.auction_threshold = value Asa@21: ItemAuditor:RefreshQAGroups() Asa@21: end, Asa@20: disabled = 'IsQADisabled', Asa@20: order = 1, Asa@20: }, Asa@13: refresh_qa = { Asa@13: type = "execute", Asa@13: name = "Refresh QA Thresholds", Asa@13: desc = "Resets all Quick Auctions thresholds", Asa@13: func = "RefreshQAGroups", Asa@13: disabled = 'IsQADisabled', Asa@20: order = 9, Asa@13: }, Asa@21: } Asa@21: }, Asa@21: crafting_options = { Asa@21: name = "Crafting with Skillet", Asa@21: desc = "/ia queue", Asa@21: type = 'group', Asa@21: disabled = function() return Skillet == nil end, Asa@21: args = { Asa@20: crafting_threshold = { Asa@20: type = "select", Asa@20: name = "Crafting Threshold", Asa@20: desc = "Don't create items that will make less than this amount of profit", Asa@20: values = craftingThresholdsDisplay, Asa@20: get = function() return ItemAuditor.db.char.crafting_threshold end, Asa@20: set = function(info, value) ItemAuditor.db.char.crafting_threshold = value end, Asa@20: order = 11, Asa@20: }, Asa@21: }, Asa@12: }, Asa@3: options = { Asa@3: type = "execute", Asa@3: name = "options", Asa@3: desc = "Show Blizzard's options GUI", Asa@3: func = "ShowOptionsGUI", Asa@3: guiHidden = true, Asa@3: }, Asa@18: queue = { Asa@18: type = "execute", Asa@18: name = "queue", Asa@18: desc = "Queue", Asa@18: func = "Queue", Asa@18: guiHidden = true, Asa@18: }, Asa@22: debug = { Asa@22: type = "execute", Asa@22: name = "debug", Asa@22: desc = "Shows the debug frame", Asa@22: func = function() ItemAuditor_DebugFrame:Show() end, Asa@22: guiHidden = true, Asa@28: }, Asa@28: invested = { Asa@28: type = "execute", Asa@28: name = "invested", Asa@28: desc = "Shows what you have invested in", Asa@28: func = "CreateFrames", Asa@28: guiHidden = false, Asa@28: }, Asa@3: }, Asa@3: } Asa@3: Asa@3: function addon:RegisterOptions() Asa@3: self.optionsFrame = LibStub("AceConfigDialog-3.0"):AddToBlizOptions("ItemAuditor", "ItemAuditor") Asa@3: LibStub("AceConfig-3.0"):RegisterOptionsTable("ItemAuditor", options, {"ia"}) Asa@3: end Asa@3: Asa@7: local function pairsByKeys (t, f) Asa@7: local a = {} Asa@7: for n in pairs(t) do table.insert(a, n) end Asa@7: table.sort(a, f) Asa@7: local i = 0 -- iterator variable Asa@7: local iter = function () -- iterator function Asa@7: i = i + 1 Asa@7: if a[i] == nil then return nil Asa@7: else return a[i], t[a[i]] Asa@7: end Asa@7: end Asa@7: return iter Asa@7: end Asa@7: Asa@20: function addon:GetCraftingThreshold() Asa@20: local key = ItemAuditor.db.char.crafting_threshold Asa@20: return craftingThresholds[key] Asa@20: end Asa@20: Asa@20: function addon:GetAuctionThreshold() Asa@20: return ItemAuditor.db.char.auction_threshold Asa@20: end Asa@20: Asa@13: function addon:GetAH() Asa@13: return ItemAuditor.db.char.ah Asa@13: end Asa@13: Asa@13: function addon:SetAH(info, value) Asa@13: ItemAuditor.db.char.ah = value Asa@13: end Asa@13: Asa@13: function addon:GetAHCut() Asa@13: if ItemAuditor.db.char.ah == 1 then Asa@13: return 0.05 Asa@13: end Asa@13: return 0.15 Asa@13: end Asa@13: Asa@13: function addon:GetAHFaction() Asa@13: return AHFactions[ItemAuditor.db.char.ah] Asa@13: end Asa@13: Asa@3: function addon:DumpInfo() Asa@7: for itemName, value in pairsByKeys(self.db.factionrealm.item_account) do Asa@15: self:Print(itemName .. ": " .. self:FormatMoney(value)) Asa@7: end Asa@3: end Asa@3: Asa@7: Asa@3: function addon:ShowOptionsGUI() Asa@3: InterfaceOptionsFrame_OpenToCategory(self.optionsFrame) Asa@3: end Asa@3: Asa@3: