annotate Modules/AuctionHouse.lua @ 90:fab2c4341602

Added options when using Auctioneer to use the market price instead of the lowest price on the AH.
author Asa Ayers <Asa.Ayers@Gmail.com>
date Wed, 11 Aug 2010 00:09:16 -0700
parents 54b917340283
children 693f664aad2b
rev   line source
Asa@89 1 local ItemAuditor = select(2, ...)
Asa@89 2 local AuctionHouse = ItemAuditor:NewModule("AuctionHouse")
Asa@89 3
Asa@89 4 local addon_options
Asa@89 5 local function getAddons()
Asa@89 6 -- this will ensure that the addons are only scanned once per session.
Asa@89 7 if not addon_options then
Asa@89 8 addon_options = {}
Asa@89 9 local total = 0
Asa@89 10 local lastKey
Asa@89 11 if AucAdvanced and AucAdvanced.Version then
Asa@89 12 addon_options['auctioneer'] = 'Auctioneer'
Asa@89 13 total = total + 1
Asa@89 14 lastKey = 'auctioneer'
Asa@89 15 end
Asa@89 16 if GetAuctionBuyout ~= nil then
Asa@89 17 addon_options['other'] = 'Other (GetAuctionBuyout compatibile)'
Asa@89 18 total = total + 1
Asa@89 19 lastKey = 'other'
Asa@89 20 end
Asa@89 21
Asa@89 22 if total == 1 or not ItemAuditor.db.profile.auction_addon then
Asa@89 23 ItemAuditor.db.profile.auction_addon = lastKey
Asa@89 24 end
Asa@89 25 end
Asa@89 26
Asa@89 27 return addon_options
Asa@89 28 end
Asa@89 29
Asa@89 30 local function getSelected()
Asa@89 31 -- just making sure ItemAuditor.db.profile.auction_addon is set if there is only one addon
Asa@89 32 if not addon_options then
Asa@89 33 getAddons()
Asa@89 34 end
Asa@89 35
Asa@89 36 return ItemAuditor.db.profile.auction_addon
Asa@89 37 end
Asa@89 38
Asa@90 39 local function setAddon(info, value)
Asa@90 40 ItemAuditor.db.profile.auction_addon = value
Asa@90 41 end
Asa@90 42
Asa@90 43 local function getPricingMethods()
Asa@90 44 if ItemAuditor.db.profile.auction_addon == 'other' then
Asa@90 45 return {
Asa@90 46 low = 'Lowest Price',
Asa@90 47 }
Asa@90 48 else
Asa@90 49 return {
Asa@90 50 low = 'Lowest Price',
Asa@90 51 market = 'Market Price',
Asa@90 52 }
Asa@90 53 end
Asa@90 54 end
Asa@90 55
Asa@89 56 ItemAuditor.Options.args.auction_house = {
Asa@89 57 name = "Auction House",
Asa@89 58 type = 'group',
Asa@89 59 args = {
Asa@89 60 ah_addon = {
Asa@89 61 type = "select",
Asa@89 62 name = "Addon",
Asa@89 63 desc = "",
Asa@89 64 values = getAddons,
Asa@89 65 get = getSelected,
Asa@90 66 set = setAddon,
Asa@89 67 order = 0,
Asa@89 68 },
Asa@90 69 pricingMethod = {
Asa@90 70 type = "select",
Asa@90 71 name = "Pricing Method",
Asa@90 72 desc = "",
Asa@90 73 values = getPricingMethods,
Asa@90 74 get = function() return ItemAuditor.db.profile.pricing_method end,
Asa@90 75 set = function(info, value) ItemAuditor.db.profile.pricing_method = value end,
Asa@90 76 order = 1,
Asa@90 77 }
Asa@89 78 },
Asa@89 79 }
Asa@89 80
Asa@89 81 function AuctionHouse:GetAuctionPrice(itemLink)
Asa@89 82 local link = select(2, GetItemInfo(itemLink))
Asa@89 83 assert(link, 'Invalid item link: '..itemLink)
Asa@89 84 local addon = getSelected()
Asa@90 85 local prices = ItemAuditor.db.profile.pricing_method or 'low'
Asa@89 86 if GetAuctionBuyout ~= nil and addon == 'other' then
Asa@89 87 return GetAuctionBuyout(link)
Asa@89 88 elseif AucAdvanced and AucAdvanced.Version and addon == 'auctioneer' then
Asa@90 89 if prices == 'low' then
Asa@90 90 local _, _, _, _, _, lowBuy= AucAdvanced.Modules.Util.SimpleAuction.Private.GetItems(link)
Asa@90 91 return lowBuy
Asa@90 92 else
Asa@90 93 return AucAdvanced.API.GetMarketValue(link)
Asa@90 94 end
Asa@89 95 end
Asa@89 96 return nil
Asa@89 97 end