--[[ |
Name: Titan BankItems |
Description: Titan Panel plugin for BankItems |
Author: Kernighan |
Version: 2.0.5 |
--]] |
|
|
-- To save memory |
if (not TITAN_MONEY_FORMAT) then |
TITAN_MONEY_FORMAT = "%dg, %ds, %dc"; |
end |
|
TITAN_BANKITEMS_ID = "BankItems"; |
|
TITAN_BANKITEMS_TOOLTIP_HINTS_1 = "Hint: Click to toggle BankItems display."; |
TITAN_BANKITEMS_TOOLTIP_HEADERS_1 = "Characters - Slots\t"..TitanUtils_GetGreenText("Money"); |
TITAN_BANKITEMS_TOOLTIP_FORMAT = "%s - "..TitanUtils_GetHighlightText("%d/%d").."\t"..TitanUtils_GetHighlightText(TITAN_MONEY_FORMAT.."\n"); |
|
TITAN_BANKITEMS_SHOWHIDEWINDOW_TEXT = "Show/Hide BankItems window"; |
TITAN_BANKITEMS_SHOWHIDEWINDOW_HELPTEXT = "Show/Hide the BankItems window"; |
TITAN_BANKITEMS_SHOWMINIMAP_TEXT = "Show Minimap Button"; |
TITAN_BANKITEMS_SHOWMINIMAP_HELPTEXT = "Show the BankItems Minimap Button"; |
TITAN_BANKITEMS_PURGE_TEXT = "Purge"; |
TITAN_BANKITEMS_PURGE_HELPTEXT = "Delete stored data of..."; |
|
function TitanPanelBankItemsButton_OnLoad(self) |
self.registry = { |
id = TITAN_BANKITEMS_ID, |
menuText = "BankItems", |
tooltipTitle = "BankItems"; |
tooltipTextFunction = "TitanPanelBankItemsButton_GetTooltipText", |
icon = "Interface\\Icons\\INV_Misc_Bag_10_Blue", |
iconWidth = 16, |
iconButtonWidth = 16, |
}; |
tinsert(TITAN_PANEL_NONMOVABLE_PLUGINS, TITAN_BANKITEMS_ID); |
end |
|
function TitanPanelBankItemsButton_GetTooltipText() |
local text = ""; |
local total = 0; |
local gspace = 0; |
local gtotspace = 0; |
local realm = "|"..strtrim(GetCVar("realmName")); |
|
text = text..TitanUtils_GetGreenText(TITAN_BANKITEMS_TOOLTIP_HEADERS_1.."\n"); |
|
for key, value in pairs(BankItems_Save) do |
if (type(value) == "table") then |
if (string.find(key, realm) and value.money and type(value.money) == "number") then |
local space = 0; |
local totspace = 28; |
|
for num = 1, 28 do |
if ( value[num] and value[num].link ) then |
space = space + 1; |
end |
end |
for bagNum = 0, 11 do |
if ( value["Bag"..bagNum] and value["Bag"..bagNum].size > 0 ) then |
totspace = totspace + value["Bag"..bagNum].size; |
for bagItem = 1, value["Bag"..bagNum].size do |
if ( value["Bag"..bagNum][bagItem] and value["Bag"..bagNum][bagItem].link ) then |
space = space + 1; |
end |
end |
end |
end |
if ( not value["Bag0"] ) then |
totspace = totspace + GetContainerNumSlots(0); |
end |
|
text = text..string.format(TITAN_BANKITEMS_TOOLTIP_FORMAT, string.gsub(key, realm, ""), space, totspace, TitanPanelMoneyButton_BreakMoney(value.money)); |
|
total = total + value.money; |
gspace = gspace + space; |
gtotspace = gtotspace + totspace; |
end |
end |
end |
|
text = text.."\n"; |
text = text..string.format(TITAN_BANKITEMS_TOOLTIP_FORMAT, "Total", gspace, gtotspace, TitanPanelMoneyButton_BreakMoney(total)); |
|
text = text..TitanUtils_GetGreenText(TITAN_BANKITEMS_TOOLTIP_HINTS_1); |
|
return text; |
end |
|
function TitanPanelBankItemsButton_OnClick(self, button) |
if (button == "LeftButton") then |
BankItems_SlashHandler(); |
end |
end |
|
-- The tooltips in this menu only displays if the player has "Show Detailed Tooltips" turned on in the Interface Options. |
function TitanPanelRightClickMenu_PrepareBankItemsMenu(self) |
local info; |
|
if ( UIDROPDOWNMENU_MENU_LEVEL == 2 ) then |
if (self.value == "purge") then |
local realm = "|"..strtrim(GetCVar("realmName")); |
local cname; |
|
for key, value in pairs(BankItems_Save) do |
if (type(value) == "table") then |
cname = string.gsub(key, realm, ""); |
if (string.find(key, realm)) then |
info = {}; |
info.text = cname; |
info.arg1 = cname; |
info.tooltipTitle = TITAN_BANKITEMS_PURGE_TEXT; |
info.tooltipText = "... "..cname; |
info.func = TitanPanelBankItems_DelPlayer; |
if (cname == UnitName("player")) then |
info.disabled = true; |
end |
UIDropDownMenu_AddButton(info, UIDROPDOWNMENU_MENU_LEVEL); |
end |
end |
end |
|
end |
else |
TitanPanelRightClickMenu_AddTitle("BankItems"); |
|
info = {}; |
info.text = TITAN_BANKITEMS_SHOWHIDEWINDOW_TEXT; |
info.func = BankItems_SlashHandler; |
info.tooltipTitle = TITAN_BANKITEMS_SHOWHIDEWINDOW_TEXT; |
info.tooltipText = TITAN_BANKITEMS_SHOWHIDEWINDOW_HELPTEXT; |
UIDropDownMenu_AddButton(info); |
|
info = {}; |
info.text = TITAN_BANKITEMS_SHOWMINIMAP_TEXT; |
info.func = BankItems_MinimapButton_Toggle; |
info.checked = BankItems_Save.ButtonShown; |
info.tooltipTitle = TITAN_BANKITEMS_SHOWMINIMAP_TEXT; |
info.tooltipText = TITAN_BANKITEMS_SHOWMINIMAP_HELPTEXT; |
UIDropDownMenu_AddButton(info); |
|
TitanPanelRightClickMenu_AddSpacer(); |
|
info = {}; |
info.text = TITAN_BANKITEMS_PURGE_TEXT; |
info.hasArrow = 1; |
info.value = "purge"; |
info.tooltipTitle = TITAN_BANKITEMS_PURGE_TEXT; |
info.tooltipText = TITAN_BANKITEMS_PURGE_HELPTEXT; |
UIDropDownMenu_AddButton(info); |
|
TitanPanelRightClickMenu_AddSpacer(); |
TitanPanelRightClickMenu_AddCommand(TITAN_PANEL_MENU_HIDE, TITAN_BANKITEMS_ID, TITAN_PANEL_MENU_FUNC_HIDE); |
end |
end |
|
function TitanPanelBankItems_DelPlayer(name) |
BankItems_DelPlayer(name.."|"..strtrim(GetCVar("realmName"))); |
BankItems_Chat("Data of '"..name.." of "..strtrim(GetCVar("realmName")).."' deleted"); |
BankItems_Frame:Hide(); |
end; |
|
-- To save memory |
if (not TitanPanelMoneyButton_BreakMoney) then |
function TitanPanelMoneyButton_BreakMoney(money) |
-- Non-negative money only |
if (money >= 0) then |
local gold = floor(money / (COPPER_PER_SILVER * SILVER_PER_GOLD)); |
local silver = floor((money - (gold * COPPER_PER_SILVER * SILVER_PER_GOLD)) / COPPER_PER_SILVER); |
local copper = mod(money, COPPER_PER_SILVER); |
return gold, silver, copper; |
end |
end |
end |