diff --git a/buy.lua b/buy.lua index f6e57b2..78c8c1d 100644 --- a/buy.lua +++ b/buy.lua @@ -27,7 +27,7 @@ end function Aux.buy.dialog_cancel() Aux.scan.abort() - AuxBuyDialog:Hide() + AuxBuyConfirmation:Hide() AuxBuyList:Show() AuxBuySearchButton:Enable() end @@ -59,6 +59,8 @@ function Aux.buy.SearchButton_onclick() search_query = { name = AuxBuyNameInputBox:GetText(), + min_level = AuxBuyMinLevel:GetText(), + max_level = AuxBuyMaxLevel:GetText(), slot = category and category.slot, class = category and category.class, subclass = category and category.subclass, @@ -70,8 +72,10 @@ function Aux.buy.SearchButton_onclick() Aux.scan.start{ query = search_query, page = 0, - on_start_page = function(ok, page, total_pages) + on_page_update = function(page) current_page = page + end, + on_start_page = function(ok, page, total_pages) set_message('Scanning auctions: page ' .. page + 1 .. (total_pages and ' out of ' .. total_pages or '') .. ' ...') return ok() end, @@ -124,34 +128,34 @@ end ----------------------------------------- -function show_dialog(buyout_mode, hyperlink, stack_size, amount) - AuxBuyDialogActionButton:Disable() - AuxBuyDialogHTML:SetFontObject('h1', GameFontWhite) - AuxBuyDialogHTML:SetScript('OnHyperlinkClick', function() SetItemRef(arg1) end) - AuxBuyDialogHTML:SetText(string.format( - [[ - - -

%s x %i

- - - ]], - hyperlink, - stack_size - )) - if buyout_mode then - AuxBuyDialogActionButton:SetText('Buy') - MoneyFrame_Update('AuxBuyDialogBuyoutPrice', amount) - AuxBuyDialogBid:Hide() - AuxBuyDialogBuyoutPrice:Show() +function show_dialog(buyout_mode, name, texture, quality, tooltip, stack_size, amount) + AuxBuyConfirmation.tooltip = tooltip + + AuxBuyConfirmationActionButton:Disable() + AuxBuyConfirmationItem:SetNormalTexture(texture) + AuxBuyConfirmationItemName:SetText(name) + local color = ITEM_QUALITY_COLORS[quality] + AuxBuyConfirmationItemName:SetTextColor(color.r, color.g, color.b) + + if stack_size > 1 then + AuxBuyConfirmationItemCount:SetText(stack_size); + AuxBuyConfirmationItemCount:Show() else - AuxBuyDialogActionButton:SetText('Bid') - MoneyInputFrame_SetCopper(AuxBuyDialogBid, amount) - AuxBuyDialogBuyoutPrice:Hide() - AuxBuyDialogBid:Show() + AuxBuyConfirmationItemCount:Hide() + end + if buyout_mode then + AuxBuyConfirmationActionButton:SetText('Buy') + MoneyFrame_Update('AuxBuyConfirmationBuyoutPrice', amount) + AuxBuyConfirmationBid:Hide() + AuxBuyConfirmationBuyoutPrice:Show() + else + AuxBuyConfirmationActionButton:SetText('Bid') + MoneyInputFrame_SetCopper(AuxBuyConfirmationBid, amount) + AuxBuyConfirmationBuyoutPrice:Hide() + AuxBuyConfirmationBid:Show() end AuxBuyList:Hide() - AuxBuyDialog:Show() + AuxBuyConfirmation:Show() end ----------------------------------------- @@ -182,7 +186,7 @@ function AuxBuyEntry_OnClick(entry_index) end if not express_mode then - show_dialog(buyout_mode, entry.hyperlink, entry.stack_size, amount) + show_dialog(buyout_mode, entry.name, entry.texture, entry.quality, entry.tooltip, entry.stack_size, amount) end PlaySound("igMainMenuOptionCheckBoxOn") @@ -193,9 +197,8 @@ function AuxBuyEntry_OnClick(entry_index) Aux.scan.start{ query = search_query, page = entry.page ~= current_page and entry.page, - on_start_page = function(ok, page) + on_page_update = function(page) current_page = page - return ok() end, on_read_auction = function(ok, i) local auction_item = Aux.info.auction_item(i) @@ -239,9 +242,10 @@ function AuxBuyEntry_OnClick(entry_index) Aux.scan.abort() AuxBuySearchButton:Enable() - AuxBuyDialog:Hide() + AuxBuyConfirmation:Hide() + AuxBuyList:Show() end - AuxBuyDialogActionButton:Enable() + AuxBuyConfirmationActionButton:Enable() end else return ok() @@ -275,7 +279,7 @@ function Aux.buy.icon_on_enter() local index = this:GetParent():GetID() + FauxScrollFrame_GetOffset(scroll_frame) local entry = entries[index] - Aux.info.set_game_tooltip(this, entry.tooltip) + Aux.info.set_game_tooltip(this, entry.tooltip, 'ANCHOR_RIGHT') if(EnhTooltip ~= nil) then EnhTooltip.TooltipCall(GameTooltip, entry.name, entry.hyperlink, entry.quality, entry.stack_size) @@ -309,6 +313,7 @@ function process_auction(auction_item, current_page) bid_per_unit = Aux_Round(bid/stack_size), owner = auction_item.owner, duration = auction_item.duration, + usable = auction_item.usable, }) end end diff --git a/buy.xml b/buy.xml index e6c6256..e0da812 100644 --- a/buy.xml +++ b/buy.xml @@ -49,8 +49,19 @@ - - + + + + + + + + + + + + + @@ -74,14 +85,8 @@ - - - - - - - - + + @@ -108,14 +113,8 @@ - - - - - - - - + + @@ -125,14 +124,8 @@ - - - - - - - - + + @@ -146,20 +139,67 @@ - - - - + + + + + + UIDropDownMenu_Initialize(this, AuxBuyQualityDropDown_Initialize) + + + UIDropDownMenu_Initialize(this, AuxBuyQualityDropDown_Initialize) + + - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + this:ClearFocus(); + + + + + + + + + + + this:ClearFocus(); + + + + + + + + + + @@ -167,17 +207,11 @@ - + - - - - - - - - + + @@ -223,35 +257,20 @@ - - - - - UIDropDownMenu_Initialize(this, AuxBuyQualityDropDown_Initialize) - - - UIDropDownMenu_Initialize(this, AuxBuyQualityDropDown_Initialize) - - - - - - + + + + + - - - - - + - + + + + + + + + - - + + - SmallMoneyFrame_OnLoad() + MoneyFrame_OnLoad() MoneyFrame_SetType("STATIC") - + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - GameTooltip:SetOwner(self, "ANCHOR_RIGHT"); - GameTooltip:SetText(TOKEN_BUYOUT_PRICE_UPDATES, nil, nil, nil, nil, true); - GameTooltip:Show(); - - - - - - - - - - -function BrowseWowTokenResults_Update() - BrowseWowTokenResults:Show(); - FauxScrollFrame_Update(BrowseScrollFrame, 0, NUM_BROWSE_TO_DISPLAY, AUCTIONS_BUTTON_HEIGHT); - local marketPrice; - if (WowToken_IsWowTokenAuctionDialogShown()) then - marketPrice = C_WowTokenPublic.GetGuaranteedPrice(); - else - marketPrice = C_WowTokenPublic.GetCurrentMarketPrice(); - end - BrowseWowTokenResults:Show(); - local itemName, _, itemQuality, _, _, _, _, _, _, itemTexture = GetItemInfo(WOW_TOKEN_ITEM_ID); - if itemName then - BrowseWowTokenResults.Token.Icon:SetTexture(itemTexture) - BrowseWowTokenResults.Token.Name:SetText(itemName); - BrowseWowTokenResults.Token.Name:SetTextColor(ITEM_QUALITY_COLORS[itemQuality].r, ITEM_QUALITY_COLORS[itemQuality].g, ITEM_QUALITY_COLORS[itemQuality].b); - BrowseWowTokenResults.BuyoutPrice:SetText(GetMoneyString(marketPrice, true)); - if (GetMoney() < marketPrice) then - BrowseWowTokenResults.Buyout:SetEnabled(false); - else - BrowseWowTokenResults.Buyout:SetEnabled(true); - end - end -end diff --git a/info.lua b/info.lua index cbbf9f5..13632b4 100644 --- a/info.lua +++ b/info.lua @@ -74,6 +74,7 @@ function Aux.info.auction_item(index) auction_item.id = id auction_item.has_all_info = has_all_info auction_item.duration = duration + auction_item.usable = usable auction_item.tooltip = Aux.info.tooltip(function(tt) tt:SetAuctionItem("list", index) end) auction_item.charges = item_charges(auction_item.tooltip) @@ -81,8 +82,8 @@ function Aux.info.auction_item(index) return auction_item end -function Aux.info.set_game_tooltip(owner, tooltip) - GameTooltip:SetOwner(owner, "ANCHOR_RIGHT") +function Aux.info.set_game_tooltip(owner, tooltip, anchor) + GameTooltip:SetOwner(owner, anchor) for _, line in ipairs(tooltip) do GameTooltip:AddDoubleLine(line[1].text, line[2].text, line[1].r, line[1].b, line[1].g, line[2].r, line[2].b, line[2].g, true) end diff --git a/list.lua b/list.lua index 88f19d8..84d1e68 100644 --- a/list.lua +++ b/list.lua @@ -108,6 +108,7 @@ function Aux.sheet.create(frame, physical_columns, sort_order, on_cell_click, on button:SetID(i) button:SetHighlightTexture('Interface\\QuestFrame\\UI-QuestTitleHighlight') button:SetScript("OnMouseDown", function() Aux.list.sort(sheet, this:GetID()) end) + button:RegisterForClicks("LeftButtonDown", "RightButtonDown") local texture = content:CreateTexture(nil, 'ARTWORK') texture:SetTexture('Interface\\QuestFrame\\UI-QuestTitleHighlight') @@ -154,7 +155,8 @@ function Aux.sheet.create(frame, physical_columns, sort_order, on_cell_click, on for i = 1,getn(physical_columns) do local cell = CreateFrame('Button', nil, content) cell:SetPoint('TOPLEFT', labels[i], 'BOTTOMLEFT', 0, -((row_index-1) * 14)) - cell:SetPoint('TOPRIGHT', labels[i], 'BOTTOMRIGHT', 0, -((row_index-1) * 14)) + cell:SetPoint('TOPRIGHT', labels[i], 'BOTTOMRIGHT', 0, -((row_index-1) * 14)) + cell:RegisterForClicks("LeftButtonDown", "RightButtonDown") cell:SetHeight(14) @@ -241,9 +243,23 @@ function Aux.sheet.initialize(frame) comparator = function(row1, row2) return Aux.util.compare(row1.tooltip[1][1].text, row2.tooltip[1][1].text, Aux.util.GT) end, cell_initializer = function(cell) local icon = CreateFrame('Button', nil, cell) + local icon_texture = icon:CreateTexture(nil, 'BORDER') + icon_texture:SetAllPoints(icon) + icon.icon_texture = icon_texture + local normal_texture = icon:CreateTexture(nil) + normal_texture:SetPoint('CENTER', 0, 0) + normal_texture:SetWidth(22) + normal_texture:SetHeight(22) + normal_texture:SetTexture('Interface\\Buttons\\UI-Quickslot2') + icon:SetNormalTexture(normal_texture) icon:SetPoint('LEFT', cell) icon:SetWidth(12) icon:SetHeight(12) + icon:SetNormalTexture('Interface\\Buttons\\UI-Quickslot2') + icon:SetPushedTexture('Interface\\Buttons\\UI-Quickslot-Depress') + icon:SetHighlightTexture('Interface\\Buttons\\ButtonHilight-Square') + icon:SetScript('OnEnter', function() Aux.info.set_game_tooltip(this, cell.tooltip, 'ANCHOR_RIGHT') end) + icon:SetScript('OnLeave', function() GameTooltip:Hide() end) local text = cell:CreateFontString(nil, 'OVERLAY', 'GameFontHighlightSmall') text:SetPoint("LEFT", icon, "RIGHT", 1, 0) text:SetPoint('TOPRIGHT', cell) @@ -255,7 +271,13 @@ function Aux.sheet.initialize(frame) cell.icon = icon end, cell_setter = function(cell, datum) - cell.icon:SetNormalTexture(datum.texture) + cell.tooltip = datum.tooltip + cell.icon.icon_texture:SetTexture(datum.texture) + if not datum.usable then + cell.icon.icon_texture:SetVertexColor(1.0, 0.1, 0.1) + else + cell.icon.icon_texture:SetVertexColor(1.0, 1.0, 1.0) + end cell.text:SetText('['..datum.tooltip[1][1].text..']') local color = ITEM_QUALITY_COLORS[datum.quality] cell.text:SetTextColor(color.r, color.g, color.b) @@ -266,7 +288,14 @@ function Aux.sheet.initialize(frame) comparator = function(row1, row2) return Aux.util.compare(row1.level, row2.level, Aux.util.GT) end, cell_initializer = Aux.sheet.default_cell_initializer('RIGHT'), cell_setter = function(cell, datum) - cell.text:SetText(max(1, datum.level)) + local level = max(1, datum.level) + local text + if level > UnitLevel('player') then + text = RED_FONT_COLOR_CODE..level..FONT_COLOR_CODE_CLOSE + else + text = level + end + cell.text:SetText(text) end, }, { diff --git a/scan.lua b/scan.lua index e608e32..093c74f 100644 --- a/scan.lua +++ b/scan.lua @@ -109,7 +109,12 @@ function submit_query(k) if state.page then wait_for_callback(state.job.on_start_page, {state.page, state.total_pages}, function() controller().wait(CanSendAuctionQuery, function() - wait_for_results(k) + wait_for_results(function() + if state.job.on_page_update then + state.job.on_page_update(state.page) + end + k() + end) QueryAuctionItems( state.job.query.name, state.job.query.min_level,