From 983f515e41a6cff3faa636f00e862c008fe12dbe Mon Sep 17 00:00:00 2001 From: Simon Hirsig Date: Mon, 19 Oct 2015 10:46:57 +0200 Subject: [PATCH] now all charge_classes can be selected in sell --- sell.lua | 22 ++++++++++++++++------ sell.xml | 13 ++++++++++--- 2 files changed, 26 insertions(+), 9 deletions(-) diff --git a/sell.lua b/sell.lua index f2e9491..1e8e29c 100644 --- a/sell.lua +++ b/sell.lua @@ -10,7 +10,7 @@ local current_auction ----------------------------------------- -local record_auction, undercut, item_class_index, item_subclass_index, set_message, report, select_entry, update_recommendation, refresh_entries, availability +local record_auction, undercut, item_class_index, item_subclass_index, set_message, report, select_entry, update_recommendation, refresh_entries, availability, charge_classes ----------------------------------------- @@ -242,7 +242,7 @@ end function Aux.sell.quantity_update() if current_auction then - AuxSellStackCountSlider:SetMinMaxValues(1, current_auction.has_charges and current_auction.availability[current_auction.charges] or floor(current_auction.availability[0] / AuxSellStackSize:GetNumber())) + AuxSellStackCountSlider:SetMinMaxValues(1, current_auction.has_charges and current_auction.availability[AuxSellStackSizeSlider.charge_classes[AuxSellStackSizeSlider.GetValue()]] or floor(current_auction.availability[0] / AuxSellStackSize:GetNumber())) end select_entry() update_recommendation() @@ -286,8 +286,9 @@ function Aux.sell.set_auction(bag, slot) availability = availability(container_item.name) } - AuxSellStackSizeSlider:SetMinMaxValues(current_auction.charges or 1, current_auction.charges or current_auction.availability[0]) - AuxSellStackSizeSlider:SetValue(container_item.charges or container_item.count) + AuxSellStackSizeSlider.charge_classes = charge_classes(current_auction.availability) + AuxSellStackSizeSlider:SetMinMaxValues(1, current_auction.has_charges and getn(charge_classes(current_auction.availability)) or min(current_auction.max_stack, current_auction.availability[0])) + AuxSellStackSizeSlider:SetValue(current_auction.has_charges and Aux.util.index_of(container_item.charges, charge_classes(current_auction.availability)) or container_item.count) AuxSellStackCountSlider:SetValue(1) Aux.sell.quantity_update() @@ -303,6 +304,15 @@ function Aux.sell.set_auction(bag, slot) end end +function charge_classes(availability) + local charge_classes = {} + for charge_class, _ in availability do + tinsert(charge_classes, charge_class) + end + sort(charge_classes, function(c1, c2) return c1 < c2 end) + return charge_classes +end + function availability(name) local availability = {} for bag = 0, 4 do @@ -310,8 +320,8 @@ function availability(name) for slot = 1, GetContainerNumSlots(bag) do local item_info = Aux.info.container_item(bag, slot) if item_info and item_info.name == name then - local charges_class = item_info.charges or 0 - availability[charges_class] = (availability[charges_class] or 0) + item_info.count + local charge_class = item_info.charges or 0 + availability[charge_class] = (availability[charge_class] or 0) + item_info.count end end end diff --git a/sell.xml b/sell.xml index 7a02093..4ee1013 100644 --- a/sell.xml +++ b/sell.xml @@ -441,7 +441,7 @@ - AuxSellStackSizeSlider:SetValue(this:GetNumber()) + AuxSellStackSizeSlider:SetValue(this.charge_classes and this.charge_classes[this:GetNumber()] or this:GetNumber()) Aux.sell.quantity_update() @@ -464,7 +464,14 @@ - AuxSellStackCountSlider:SetValue(this:GetNumber()) + if AuxSellStackCountSlider.charge_classes then + local index = Aux.util.index_of(this:GetNumber(), AuxSellStackCountSlider.charge_classes) + if index then + AuxSellStackCountSlider:SetValue(index) + end + else + AuxSellStackCountSlider:SetValue(this:GetNumber()) + end Aux.sell.quantity_update() @@ -515,4 +522,4 @@ - \ No newline at end of file +