init
This commit is contained in:
@@ -0,0 +1,235 @@
|
||||
-- ------------------------------------------------------------------------------ --
|
||||
-- TradeSkillMaster_Warehousing --
|
||||
-- http://www.curse.com/addons/wow/tradeskillmaster_warehousing --
|
||||
-- --
|
||||
-- A TradeSkillMaster Addon (http://tradeskillmaster.com) --
|
||||
-- All Rights Reserved* - Detailed license information included with addon. --
|
||||
-- ------------------------------------------------------------------------------ --
|
||||
|
||||
-- loads the localization table --
|
||||
local L = LibStub("AceLocale-3.0"):GetLocale("TradeSkillMaster_Warehousing")
|
||||
|
||||
-- load the parent file (TSM) into a local variable and register this file as a module
|
||||
local TSM = select(2, ...)
|
||||
local data = TSM:NewModule("data", "AceEvent-3.0")
|
||||
local AceGUI = LibStub("AceGUI-3.0") -- load the AceGUI librarie
|
||||
|
||||
----------------------------------
|
||||
-- Generates the Bagstate table --
|
||||
----------------------------------
|
||||
function data:getEmptyRestoreGroup(container, isGuildBank)
|
||||
TSM.util:setSrcBagFunctions("bags")
|
||||
local tmp = {}
|
||||
local grp = {}
|
||||
local restore = {}
|
||||
|
||||
for i, bagid in ipairs(container) do
|
||||
for slotid = 1, TSM.util.getContainerNumSlotsSrc(bagid) do
|
||||
local id, quan = TSM.util.getContainerItemIDSrc(bagid, slotid)
|
||||
if id then
|
||||
if not isGuildBank or not TSMAPI:IsSoulbound(bagid, slotid) then
|
||||
if not tmp[id] then tmp[id] = 0 end
|
||||
tmp[id] = tmp[id] + quan
|
||||
end --end if
|
||||
end --end if id
|
||||
end --end for slots
|
||||
end --end for bags
|
||||
|
||||
for i, q in pairs(tmp) do
|
||||
grp[i] = q * -1 -- convert to negative number for TSMAPI:MoveItems
|
||||
restore[i] = q -- for the restore bagstate
|
||||
end
|
||||
TSM.db.factionrealm.BagState = restore
|
||||
return grp
|
||||
end
|
||||
|
||||
function data:unIndexMoveGroupTree(grpInfo, src)
|
||||
local newgrp = {}
|
||||
local totalItems = data:getTotalItems(src)
|
||||
for groupName, info in pairs(grpInfo) do
|
||||
groupName = TSMAPI:FormatGroupPath(groupName, true)
|
||||
for _, opName in ipairs(info.operations) do
|
||||
TSMAPI:UpdateOperation("Warehousing", opName)
|
||||
local opSettings = TSM.operations[opName]
|
||||
if not opSettings then
|
||||
-- operation doesn't exist anymore in Crafting
|
||||
TSM:Printf(L["'%s' has a Warehousing operation of '%s' which no longer exists."], groupName, opName)
|
||||
else
|
||||
-- it's a valid operation
|
||||
for itemString in pairs(info.items) do
|
||||
itemString = TSMAPI:GetItemString(itemString)
|
||||
local totalq = 0
|
||||
if totalItems then
|
||||
totalq = totalItems[itemString] or 0
|
||||
end
|
||||
|
||||
if src == "bags" then -- if moving from bags to bank/gbank
|
||||
if opSettings.moveQtyEnabled and opSettings.keepBagQtyEnabled then -- move specified quantity but keep x in bags
|
||||
local q = (totalq - opSettings.keepBagQuantity)
|
||||
if q > 0 then
|
||||
--newgrp[itemString] = min(tonumber(q), tonumber(opSettings.moveQuantity))
|
||||
newgrp[itemString] = max(tonumber(q * -1), tonumber(opSettings.moveQuantity * -1))
|
||||
end
|
||||
elseif opSettings.moveQtyEnabled then -- move specified quantity
|
||||
newgrp[itemString] = tonumber(opSettings.moveQuantity * -1)
|
||||
elseif opSettings.keepBagQtyEnabled then -- move all but keep x in bags
|
||||
local q = totalq - opSettings.keepBagQuantity
|
||||
if q > 0 then
|
||||
newgrp[itemString] = tonumber(q * -1)
|
||||
end
|
||||
else -- move everything
|
||||
if totalq > 0 then
|
||||
newgrp[itemString] = tonumber(totalq * -1)
|
||||
end
|
||||
end
|
||||
else -- move from bank/gbank to bags
|
||||
local stacksize = 1
|
||||
if opSettings.stackSizeEnabled and opSettings.stackSize then -- only move in multiples of the stack size set
|
||||
stacksize = opSettings.stackSize
|
||||
end
|
||||
if opSettings.moveQtyEnabled and opSettings.keepBankQtyEnabled then -- move specified quantity but keep x in bank
|
||||
local q = (totalq - opSettings.keepBankQuantity)
|
||||
if q > 0 then
|
||||
newgrp[itemString] = floor(min(tonumber(q), tonumber(opSettings.moveQuantity)) / tonumber(stacksize)) * tonumber(stacksize)
|
||||
end
|
||||
elseif opSettings.moveQtyEnabled then -- move specified quantity
|
||||
newgrp[itemString] = floor(tonumber(opSettings.moveQuantity) / tonumber(stacksize)) * tonumber(stacksize)
|
||||
elseif opSettings.keepBankQtyEnabled then -- move all but keep x in bank
|
||||
local q = totalq - opSettings.keepBankQuantity
|
||||
if q > 0 then
|
||||
newgrp[itemString] = floor(tonumber(q) / tonumber(stacksize)) * tonumber(stacksize)
|
||||
end
|
||||
else -- move everything
|
||||
if totalq > 0 then
|
||||
newgrp[itemString] = floor(tonumber(totalq) / tonumber(stacksize)) * tonumber(stacksize)
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
return newgrp
|
||||
end
|
||||
|
||||
function data:unIndexRestockGroupTree(grpInfo)
|
||||
local newgrp = {}
|
||||
local totalItems = data:getTotalItems("bags")
|
||||
for groupName, info in pairs(grpInfo) do
|
||||
groupName = TSMAPI:FormatGroupPath(groupName, true)
|
||||
for _, opName in ipairs(info.operations) do
|
||||
TSMAPI:UpdateOperation("Warehousing", opName)
|
||||
local opSettings = TSM.operations[opName]
|
||||
if not opSettings then
|
||||
-- operation doesn't exist anymore in Crafting
|
||||
TSM:Printf(L["'%s' has a Warehousing operation of '%s' which no longer exists."], groupName, opName)
|
||||
else
|
||||
-- it's a valid operation
|
||||
for itemString in pairs(info.items) do
|
||||
local totalq = 0
|
||||
if totalItems then
|
||||
totalq = totalItems[itemString] or 0
|
||||
end
|
||||
if opSettings.restockQtyEnabled then -- work out qty to add or remove from bags
|
||||
local q = opSettings.restockQuantity - totalq
|
||||
if q ~= 0 then
|
||||
newgrp[itemString] = tonumber(q)
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
return newgrp
|
||||
end
|
||||
|
||||
function data:unIndexItem(searchString, src, quantity)
|
||||
local newgrp = {}
|
||||
local totalItems = data:getTotalItems(src) -- table of itemstrings and total qty in source
|
||||
|
||||
if totalItems then
|
||||
local matchedString = TSMAPI:GetBaseItemString(TSMAPI:GetItemString(searchString))
|
||||
if matchedString then
|
||||
for itemString, totalQty in pairs(totalItems) do
|
||||
if TSMAPI:GetBaseItemString(itemString) == matchedString then
|
||||
if quantity then
|
||||
if src == "bags" then
|
||||
newgrp[itemString] = tonumber(quantity * -1)
|
||||
else
|
||||
newgrp[itemString] = tonumber(quantity)
|
||||
end
|
||||
else
|
||||
if src == "bags" then
|
||||
newgrp[itemString] = tonumber(totalQty * -1)
|
||||
else
|
||||
newgrp[itemString] = tonumber(totalQty)
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
else
|
||||
for itemString, totalQty in pairs(totalItems) do
|
||||
local name = strlower(TSMAPI:GetSafeItemInfo(itemString))
|
||||
if strfind(name, strlower(searchString)) then
|
||||
if quantity then
|
||||
if src == "bags" then
|
||||
newgrp[itemString] = tonumber(quantity * -1)
|
||||
else
|
||||
newgrp[itemString] = tonumber(quantity)
|
||||
end
|
||||
else
|
||||
if src == "bags" then
|
||||
newgrp[itemString] = tonumber(totalQty * -1)
|
||||
else
|
||||
newgrp[itemString] = tonumber(totalQty)
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
return newgrp
|
||||
end
|
||||
|
||||
function data:getTotalItems(src)
|
||||
local results = {}
|
||||
if src == "bank" then
|
||||
local function ScanBankBag(bag)
|
||||
for slot = 1, GetContainerNumSlots(bag) do
|
||||
local itemString = TSMAPI:GetBaseItemString(GetContainerItemLink(bag, slot), true)
|
||||
if itemString then
|
||||
local quantity = select(2, GetContainerItemInfo(bag, slot))
|
||||
if not results[itemString] then results[itemString] = 0 end
|
||||
results[itemString] = results[itemString] + quantity
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
for bag = NUM_BAG_SLOTS + 1, NUM_BAG_SLOTS + NUM_BANKBAGSLOTS do
|
||||
ScanBankBag(bag)
|
||||
end
|
||||
ScanBankBag(-1)
|
||||
|
||||
return results
|
||||
elseif src == "guildbank" then
|
||||
for bag = 1, GetNumGuildBankTabs() do
|
||||
for slot = 1, MAX_GUILDBANK_SLOTS_PER_TAB or 98 do
|
||||
local link = GetGuildBankItemLink(bag, slot)
|
||||
local itemString = TSMAPI:GetBaseItemString(link, true)
|
||||
if itemString then
|
||||
local quantity = select(2, GetGuildBankItemInfo(bag, slot))
|
||||
if not results[itemString] then results[itemString] = 0 end
|
||||
results[itemString] = results[itemString] + quantity
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
return results
|
||||
elseif src == "bags" then
|
||||
for _, _, itemString, quantity in TSMAPI:GetBagIterator(true) do
|
||||
results[itemString] = (results[itemString] or 0) + quantity
|
||||
end
|
||||
|
||||
return results
|
||||
end
|
||||
end
|
||||
Reference in New Issue
Block a user