annotate Modules/AuctionHouse.lua @ 94:4ec8611d9466

Fixed Enchanting. I was not getting the ItemID correctly, so enchants could not be mapped to the scrolls they were to created Changed snatch to only add each item once and to only add a snatch for items you don't have API: Added haveMaterials to the item and need to the reagents that get passed to queue destinations. This is in preparation for building a shopping list module.
author Asa Ayers <Asa.Ayers@Gmail.com>
date Wed, 11 Aug 2010 23:48:23 -0700
parents 693f664aad2b
children 4f26dc55455d
rev   line source
Asa@89 1 local ItemAuditor = select(2, ...)
Asa@89 2 local AuctionHouse = ItemAuditor:NewModule("AuctionHouse")
Asa@89 3
Asa@93 4 local Utils = ItemAuditor:GetModule("Utils")
Asa@93 5
Asa@89 6 local addon_options
Asa@89 7 local function getAddons()
Asa@89 8 -- this will ensure that the addons are only scanned once per session.
Asa@89 9 if not addon_options then
Asa@89 10 addon_options = {}
Asa@89 11 local total = 0
Asa@89 12 local lastKey
Asa@89 13 if AucAdvanced and AucAdvanced.Version then
Asa@89 14 addon_options['auctioneer'] = 'Auctioneer'
Asa@89 15 total = total + 1
Asa@89 16 lastKey = 'auctioneer'
Asa@89 17 end
Asa@89 18 if GetAuctionBuyout ~= nil then
Asa@89 19 addon_options['other'] = 'Other (GetAuctionBuyout compatibile)'
Asa@89 20 total = total + 1
Asa@89 21 lastKey = 'other'
Asa@89 22 end
Asa@89 23
Asa@89 24 if total == 1 or not ItemAuditor.db.profile.auction_addon then
Asa@89 25 ItemAuditor.db.profile.auction_addon = lastKey
Asa@89 26 end
Asa@89 27 end
Asa@89 28
Asa@89 29 return addon_options
Asa@89 30 end
Asa@89 31
Asa@89 32 local function getSelected()
Asa@89 33 -- just making sure ItemAuditor.db.profile.auction_addon is set if there is only one addon
Asa@89 34 if not addon_options then
Asa@89 35 getAddons()
Asa@89 36 end
Asa@89 37
Asa@89 38 return ItemAuditor.db.profile.auction_addon
Asa@89 39 end
Asa@89 40
Asa@90 41 local function setAddon(info, value)
Asa@90 42 ItemAuditor.db.profile.auction_addon = value
Asa@90 43 end
Asa@90 44
Asa@90 45 local function getPricingMethods()
Asa@90 46 if ItemAuditor.db.profile.auction_addon == 'other' then
Asa@90 47 return {
Asa@90 48 low = 'Lowest Price',
Asa@90 49 }
Asa@90 50 else
Asa@90 51 return {
Asa@90 52 low = 'Lowest Price',
Asa@90 53 market = 'Market Price',
Asa@90 54 }
Asa@90 55 end
Asa@90 56 end
Asa@90 57
Asa@89 58 ItemAuditor.Options.args.auction_house = {
Asa@89 59 name = "Auction House",
Asa@89 60 type = 'group',
Asa@89 61 args = {
Asa@89 62 ah_addon = {
Asa@89 63 type = "select",
Asa@89 64 name = "Addon",
Asa@89 65 desc = "",
Asa@89 66 values = getAddons,
Asa@89 67 get = getSelected,
Asa@90 68 set = setAddon,
Asa@89 69 order = 0,
Asa@89 70 },
Asa@90 71 pricingMethod = {
Asa@90 72 type = "select",
Asa@90 73 name = "Pricing Method",
Asa@90 74 desc = "",
Asa@90 75 values = getPricingMethods,
Asa@90 76 get = function() return ItemAuditor.db.profile.pricing_method end,
Asa@90 77 set = function(info, value) ItemAuditor.db.profile.pricing_method = value end,
Asa@90 78 order = 1,
Asa@90 79 }
Asa@93 80
Asa@89 81 },
Asa@89 82 }
Asa@89 83
Asa@93 84 local function clearSnatch()
Asa@93 85 ItemAuditor:Print('clearing snatch')
Asa@93 86 local Snatch = AucAdvanced.Modules.Util.SearchUI.Searchers.Snatch
Asa@93 87 local snatchList = Snatch.Private.snatchList
Asa@93 88
Asa@93 89 for itemLink in pairs(snatchList) do
Asa@93 90 local link = select(2, GetItemInfo('item:'..itemLink))
Asa@93 91 Snatch.RemoveSnatch(link)
Asa@93 92 end
Asa@93 93 end
Asa@93 94
Asa@93 95 function AuctionHouse.Snatch()
Asa@93 96 if not AucAdvanced or not AucAdvanced.Version then
Asa@93 97 ItemAuditor:Print("The snatch command requires Auctioneer.")
Asa@93 98 return
Asa@93 99 end
Asa@93 100
Asa@93 101 local Snatch = AucAdvanced.Modules.Util.SearchUI.Searchers.Snatch
Asa@93 102 if not Snatch.Private.frame then
Asa@93 103 ItemAuditor:Print("You must visit the Auction House before you can update Auctioneer's snatch list.")
Asa@93 104 return
Asa@93 105 end
Asa@93 106 clearSnatch()
Asa@93 107
Asa@94 108 local snatchList = {}
Asa@93 109 local function Export(data)
Asa@94 110 if not data.haveMaterials then
Asa@94 111 for id, reagent in pairs(data.reagents) do
Asa@94 112 if reagent.need > 0 and not snatchList[reagent.link] then
Asa@94 113 snatchList[reagent.link] = true
Asa@94 114 ItemAuditor:Print("Adding %s for %s", reagent.link, Utils.FormatMoney(reagent.price))
Asa@94 115 Snatch.AddSnatch(reagent.link, reagent.price)
Asa@94 116 end
Asa@94 117 end
Asa@93 118 end
Asa@93 119 end
Asa@93 120 ItemAuditor:UpdateCraftingTable()
Asa@93 121 ItemAuditor:GetModule("Crafting").Export(Export)
Asa@93 122 end
Asa@93 123
Asa@93 124 ItemAuditor.Options.args.snatch = {
Asa@93 125 type = "execute",
Asa@93 126 handler = AuctionHouse,
Asa@93 127 name = "snatch",
Asa@93 128 desc = "Replace Auctioner's snatch list with all the reagents you need for crafting.",
Asa@93 129 func = "Snatch",
Asa@93 130 guiHidden = true,
Asa@93 131 }
Asa@93 132
Asa@89 133 function AuctionHouse:GetAuctionPrice(itemLink)
Asa@89 134 local link = select(2, GetItemInfo(itemLink))
Asa@89 135 assert(link, 'Invalid item link: '..itemLink)
Asa@89 136 local addon = getSelected()
Asa@90 137 local prices = ItemAuditor.db.profile.pricing_method or 'low'
Asa@89 138 if GetAuctionBuyout ~= nil and addon == 'other' then
Asa@89 139 return GetAuctionBuyout(link)
Asa@89 140 elseif AucAdvanced and AucAdvanced.Version and addon == 'auctioneer' then
Asa@90 141 if prices == 'low' then
Asa@90 142 local _, _, _, _, _, lowBuy= AucAdvanced.Modules.Util.SimpleAuction.Private.GetItems(link)
Asa@90 143 return lowBuy
Asa@90 144 else
Asa@90 145 return AucAdvanced.API.GetMarketValue(link)
Asa@90 146 end
Asa@89 147 end
Asa@89 148 return nil
Asa@89 149 end