You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
245 lines
9.7 KiB
245 lines
9.7 KiB
-- ------------------------------------------------------------------------------ -- |
|
-- 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. -- |
|
-- ------------------------------------------------------------------------------ -- |
|
|
|
-- setup |
|
local TSM = select(2, ...) |
|
TSM = LibStub("AceAddon-3.0"):NewAddon(TSM, "TSM_Warehousing", "AceEvent-3.0", "AceConsole-3.0") |
|
local AceGUI = LibStub("AceGUI-3.0") |
|
|
|
-- loads the localization table -- |
|
local L = LibStub("AceLocale-3.0"):GetLocale("TradeSkillMaster_Warehousing") |
|
|
|
-- default values for the savedDB |
|
local savedDBDefaults = { |
|
-- any global |
|
global = { |
|
defaultIncrement = 1, |
|
isBankui = true, |
|
ShowLogData = false, |
|
DefaultTimeOut = 4, |
|
optionsTreeStatus = {}, |
|
}, |
|
|
|
-- data that is stored per realm/faction combination |
|
realm = { |
|
BagState = {}, |
|
}, |
|
|
|
-- data that is stored per user profile |
|
profile = {}, |
|
} |
|
|
|
local bankUI |
|
local bankFrame |
|
local bank |
|
-- Called once the player has loaded into the game |
|
-- Anything that needs to be done in order to initialize the addon should go here |
|
function TSM:OnEnable() |
|
|
|
for name, module in pairs(TSM.modules) do |
|
TSM[name] = module |
|
end |
|
|
|
-- load the saved variables table into TSM.db |
|
TSM.db = LibStub:GetLibrary("AceDB-3.0"):New("AscensionTSM_WarehousingDB", savedDBDefaults, true) |
|
|
|
-- register the module with TSM |
|
TSM:RegisterModule() |
|
|
|
if TSM.db.realm.WarehousingGroups then -- remove old 1.x data on first load of 2.0 |
|
for key in pairs(TSM.db.realm) do |
|
TSM.db.realm[key] = nil |
|
end |
|
end |
|
|
|
--add stackSize to operation if it doesn't exist |
|
for name in pairs(TSM.operations) do |
|
TSMAPI:UpdateOperation("Warehousing", name) |
|
local settings = TSM.operations[name] |
|
if not settings then return end |
|
if not settings.stackSize then |
|
settings.stackSize = 5 |
|
end |
|
end |
|
|
|
TSM:RegisterEvent("GUILDBANKFRAME_OPENED", function(event) |
|
bank = "guildbank" |
|
end) |
|
|
|
TSM:RegisterEvent("BANKFRAME_OPENED", function(event) |
|
bank = "bank" |
|
end) |
|
|
|
TSM:RegisterEvent("GUILDBANKFRAME_CLOSED", function(event, addon) |
|
bank = nil |
|
end) |
|
|
|
TSM:RegisterEvent("BANKFRAME_CLOSED", function(event) |
|
bank = nil |
|
end) |
|
end |
|
|
|
function TSM:RegisterModule() |
|
TSM.slashCommands = { |
|
{ key = "movedata", label = L["Displays realtime move data."], callback = "SetLogFlag" }, |
|
{ key = "get", label = L["Gets items from the bank or guild bank matching the itemstring, itemID or partial text entered."], callback = "GetItem" }, |
|
{ key = "put", label = L["Puts items matching the itemstring, itemID or partial text entered into the bank or guild bank."], callback = "PutItem" }, |
|
{ key = "restockah", label = L["Restocks items from the AH based on your Warehousing group selections."], callback = "RestockFromAH" }, |
|
} |
|
TSM.operations = { maxOperations = 1, callbackOptions = "Options:Load", callbackInfo = "GetOperationInfo" } |
|
TSM.bankUiButton = { callback = "bankui:createTab" } |
|
TSMAPI:NewModule(TSM) |
|
end |
|
|
|
TSM.operationDefaults = { |
|
moveQtyEnabled = nil, |
|
moveQuantity = 1, -- move 1 |
|
keepBagQtyEnabled = nil, |
|
keepBagQuantity = 1, -- keep 1 in bags |
|
keepBankQtyEnabled = nil, |
|
keepBankQuantity = 1, --keep 1 in bank |
|
restockQtyEnabled = nil, |
|
restockQuantity = 1, --restock 1 |
|
stackSize = 5, |
|
stackSizeEnabled = nil, |
|
ignorePlayer = {}, |
|
ignorerealm = {}, |
|
relationships = {}, |
|
} |
|
|
|
function TSM:GetOperationInfo(name) |
|
TSMAPI:UpdateOperation("Warehousing", name) |
|
local settings = TSM.operations[name] |
|
if not settings then return end |
|
if (settings.keepBagQtyEnabled or settings.keepBankQtyEnabled) and not settings.moveQtyEnabled then |
|
if settings.keepBagQtyEnabled then |
|
if settings.keepBankQtyEnabled then |
|
if settings.restockQtyEnabled then |
|
return format(L["Warehousing will move all of the items in this group keeping %d of each item back when bags > bank/gbank, %d of each item back when bank/gbank > bags. Restock will maintain %d items in your bags."], settings.keepBagQuantity, settings.keepBankQuantity, settings.restockQuantity) |
|
else |
|
return format(L["Warehousing will move all of the items in this group keeping %d of each item back when bags > bank/gbank, %d of each item back when bank/gbank > bags."], settings.keepBagQuantity, settings.keepBankQuantity) |
|
end |
|
else |
|
if settings.restockQtyEnabled then |
|
return format(L["Warehousing will move all of the items in this group keeping %d of each item back when bags > bank/gbank. Restock will maintain %d items in your bags."], settings.keepBagQuantity, settings.restockQuantity) |
|
else |
|
return format(L["Warehousing will move all of the items in this group keeping %d of each item back when bags > bank/gbank."], settings.keepBagQuantity) |
|
end |
|
end |
|
else |
|
if settings.restockQtyEnabled then |
|
return format(L["Warehousing will move all of the items in this group keeping %d of each item back when bank/gbank > bags. Restock will maintain %d items in your bags."], settings.keepBankQuantity, settings.restockQuantity) |
|
else |
|
return format(L["Warehousing will move all of the items in this group keeping %d of each item back when bank/gbank > bags."], settings.keepBankQuantity) |
|
end |
|
end |
|
elseif (settings.keepBagQtyEnabled or settings.keepBankQtyEnabled) and settings.moveQtyEnabled then |
|
if settings.keepBagQtyEnabled then |
|
if settings.keepBankQtyEnabled then |
|
if settings.restockQtyEnabled then |
|
return format(L["Warehousing will move a max of %d of each item in this group keeping %d of each item back when bags > bank/gbank, %d of each item back when bank/gbank > bags. Restock will maintain %d items in your bags."], settings.moveQuantity, settings.keepBagQuantity, settings.keepBankQuantity, settings.restockQuantity) |
|
else |
|
return format(L["Warehousing will move a max of %d of each item in this group keeping %d of each item back when bags > bank/gbank, %d of each item back when bank/gbank > bags."], settings.moveQuantity, settings.keepBagQuantity, settings.keepBankQuantity) |
|
end |
|
else |
|
if settings.restockQtyEnabled then |
|
return format(L["Warehousing will move a max of %d of each item in this group keeping %d of each item back when bags > bank/gbank. Restock will maintain %d items in your bags."], settings.keepBankQuantity, settings.restockQuantity) |
|
else |
|
return format(L["Warehousing will move a max of %d of each item in this group keeping %d of each item back when bags > bank/gbank."], settings.keepBankQuantity) |
|
end |
|
end |
|
else |
|
if settings.restockQtyEnabled then |
|
return format(L["Warehousing will move a max of %d of each item in this group keeping %d of each item back when bank/gbank > bags. Restock will maintain %d items in your bags."], settings.moveQuantity, settings.keepBankQuantity, settings.restockQuantity) |
|
else |
|
return format(L["Warehousing will move a max of %d of each item in this group keeping %d of each item back when bank/gbank > bags."], settings.moveQuantity, settings.keepBankQuantity) |
|
end |
|
end |
|
elseif settings.moveQtyEnabled then |
|
if settings.restockQtyEnabled then |
|
return format(L["Warehousing will move a max of %d of each item in this group. Restock will maintain %d items in your bags."], settings.moveQuantity, settings.restockQuantity) |
|
else |
|
return format(L["Warehousing will move a max of %d of each item in this group."], settings.moveQuantity) |
|
end |
|
else |
|
if settings.restockQtyEnabled then |
|
return format(L["Warehousing will move all of the items in this group. Restock will maintain %d items in your bags."], settings.restockQuantity) |
|
else |
|
return L["Warehousing will move all of the items in this group."] |
|
end |
|
end |
|
end |
|
|
|
function TSM:IsOperationIgnored(operationName) |
|
TSMAPI:UpdateOperation("Warehousing", operationName) |
|
local operation = TSM.operations[operationName] |
|
if not operation then return end |
|
local playerKey = UnitName("player").." - "..TSM.db.keys.realm |
|
return operation.ignorePlayer[playerKey] or operation.ignorerealm[TSM.db.keys.realm] |
|
end |
|
|
|
function TSM:toggleBankUI() |
|
if TSM.move:areBanksVisible() then |
|
bankUI = TSM.bankui:getFrame(bankFrame) |
|
TSM.db.global.isBankui = true |
|
else |
|
TSM:Print(L["There are no visible banks."]) |
|
end |
|
end |
|
|
|
|
|
|
|
function TSM:SetLogFlag() |
|
if TSM.db.global.ShowLogData then |
|
TSM.db.global.ShowLogData = false |
|
TSM:Print(L["Move Data has been turned off"]) |
|
else |
|
TSM.db.global.ShowLogData = true |
|
TSM:Print(L["Move Data has been turned on"]) |
|
end |
|
end |
|
|
|
function TSM:GetItem(args) |
|
if args then |
|
if TSM.move:areBanksVisible() then |
|
local quantity = tonumber(strmatch(args, " ([0-9]+)$")) |
|
local searchString = gsub(args, " ([0-9]+)$", "") |
|
if not searchString and TSMAPI:GetSafeItemInfo(quantity) then -- incase an itemID was entered but no qty then the strmatch would have incorrectly set as quantity |
|
searchString = quantity |
|
quantity = nil |
|
end |
|
TSM.move:manualMove(searchString, bank, quantity) |
|
else |
|
TSM:Print(L["There are no visible banks."]) |
|
end |
|
else |
|
TSM:Print(L["Invalid criteria entered."]) |
|
end |
|
end |
|
|
|
function TSM:PutItem(args) |
|
if args then |
|
if TSM.move:areBanksVisible() then |
|
local quantity = tonumber(strmatch(args, " ([0-9]+)$")) |
|
local searchString = gsub(args, " ([0-9]+)$", "") |
|
if not searchString and TSMAPI:GetSafeItemInfo(quantity) then -- incase an itemID was entered but no qty then the strmatch would have incorrectly set as quantity |
|
searchString = quantity |
|
quantity = nil |
|
end |
|
TSM.move:manualMove(searchString, "bags", quantity) |
|
else |
|
TSM:Print(L["There are no visible banks."]) |
|
end |
|
else |
|
TSM:Print(L["Invalid criteria entered."]) |
|
end |
|
end |
|
|
|
function TSM:RestockFromAH() |
|
TSM.move:restockGroupAuction() |
|
end
|
|
|