initial commit
This commit is contained in:
92
Core/Service/Banking/Warehousing.lua
Normal file
92
Core/Service/Banking/Warehousing.lua
Normal file
@@ -0,0 +1,92 @@
|
||||
-- ------------------------------------------------------------------------------ --
|
||||
-- TradeSkillMaster --
|
||||
-- https://tradeskillmaster.com --
|
||||
-- All Rights Reserved - Detailed license information included with addon. --
|
||||
-- ------------------------------------------------------------------------------ --
|
||||
|
||||
local _, TSM = ...
|
||||
local Warehousing = TSM.Banking:NewPackage("Warehousing")
|
||||
local TempTable = TSM.Include("Util.TempTable")
|
||||
local Math = TSM.Include("Util.Math")
|
||||
local BagTracking = TSM.Include("Service.BagTracking")
|
||||
local private = {}
|
||||
|
||||
|
||||
|
||||
-- ============================================================================
|
||||
-- Module Functions
|
||||
-- ============================================================================
|
||||
|
||||
function Warehousing.MoveGroupsToBank(callback, groups)
|
||||
local items = TempTable.Acquire()
|
||||
TSM.Banking.Util.PopulateGroupItemsFromBags(items, groups, private.GetNumToMoveToBank)
|
||||
TSM.Banking.MoveToBank(items, callback)
|
||||
TempTable.Release(items)
|
||||
end
|
||||
|
||||
function Warehousing.MoveGroupsToBags(callback, groups)
|
||||
local items = TempTable.Acquire()
|
||||
TSM.Banking.Util.PopulateGroupItemsFromOpenBank(items, groups, private.GetNumToMoveToBags)
|
||||
TSM.Banking.MoveToBag(items, callback)
|
||||
TempTable.Release(items)
|
||||
end
|
||||
|
||||
function Warehousing.RestockBags(callback, groups)
|
||||
local items = TempTable.Acquire()
|
||||
TSM.Banking.Util.PopulateGroupItemsFromOpenBank(items, groups, private.GetNumToMoveRestock)
|
||||
TSM.Banking.MoveToBag(items, callback)
|
||||
TempTable.Release(items)
|
||||
end
|
||||
|
||||
|
||||
|
||||
-- ============================================================================
|
||||
-- Private Helper Functions
|
||||
-- ============================================================================
|
||||
|
||||
function private.GetNumToMoveToBank(itemString, numToMove)
|
||||
local _, operationSettings = TSM.Operations.GetFirstOperationByItem("Warehousing", itemString)
|
||||
if not operationSettings then
|
||||
return 0
|
||||
end
|
||||
if operationSettings.keepBagQuantity ~= 0 then
|
||||
numToMove = max(numToMove - operationSettings.keepBagQuantity, 0)
|
||||
end
|
||||
if operationSettings.moveQuantity ~= 0 then
|
||||
numToMove = min(numToMove, operationSettings.moveQuantity)
|
||||
end
|
||||
return numToMove
|
||||
end
|
||||
|
||||
function private.GetNumToMoveToBags(itemString, numToMove)
|
||||
local _, operationSettings = TSM.Operations.GetFirstOperationByItem("Warehousing", itemString)
|
||||
if not operationSettings then
|
||||
return 0
|
||||
end
|
||||
if operationSettings.keepBankQuantity ~= 0 then
|
||||
numToMove = max(numToMove - operationSettings.keepBankQuantity, 0)
|
||||
end
|
||||
if operationSettings.moveQuantity ~= 0 then
|
||||
numToMove = min(numToMove, operationSettings.moveQuantity)
|
||||
end
|
||||
return Math.Floor(numToMove, operationSettings.stackSize ~= 0 and operationSettings.stackSize or 1)
|
||||
end
|
||||
|
||||
function private.GetNumToMoveRestock(itemString, numToMove)
|
||||
local _, operationSettings = TSM.Operations.GetFirstOperationByItem("Warehousing", itemString)
|
||||
if not operationSettings then
|
||||
return 0
|
||||
end
|
||||
local numInBags = BagTracking.CreateQueryBagsItem(itemString)
|
||||
:VirtualField("autoBaseItemString", "string", TSM.Groups.TranslateItemString, "itemString")
|
||||
:Equal("autoBaseItemString", itemString)
|
||||
:SumAndRelease("quantity") or 0
|
||||
if operationSettings.restockQuantity == 0 or numInBags >= operationSettings.restockQuantity then
|
||||
return 0
|
||||
end
|
||||
if operationSettings.restockKeepBankQuantity ~= 0 then
|
||||
numToMove = max(numToMove - operationSettings.restockKeepBankQuantity, 0)
|
||||
end
|
||||
numToMove = min(numToMove, operationSettings.restockQuantity - numInBags)
|
||||
return Math.Floor(numToMove, operationSettings.restockStackSize ~= 0 and operationSettings.restockStackSize or 1)
|
||||
end
|
||||
Reference in New Issue
Block a user