Files
coa-altoholic/Altoholic/Frames/GuildBank.lua
T
florian.berthold bbe2492a5b chore: flatten Altoholic-Addon/ wrapper + add standard .gitignore/.gitattributes
Each DataStore_* / Altoholic_* addon now lives at the repo root, matching
the Exiles fork-layout convention (one folder per addon, no wrapper dir).
2026-05-25 10:59:24 +02:00

98 lines
2.8 KiB
Lua

local addonName = ...
local addon = _G[addonName]
local L = LibStub("AceLocale-3.0"):GetLocale(addonName)
local WHITE = "|cFFFFFFFF"
local GREEN = "|cFF00FF00"
local YELLOW = "|cFFFFFF00"
local NUM_GUILDBANK_ROWS = 7
addon.GuildBank = {}
local ns = addon.GuildBank -- ns = namespace
function ns:DrawTab(tabID)
local selectedGuild = UIDropDownMenu_GetSelectedValue(AltoholicTabGuildBank_SelectGuild)
if not selectedGuild then return end -- not defined yet ? exit.
if not AltoGuildBank:IsVisible() then
AltoGuildBank:Show()
end
local account, realm, guildName = strsplit("|", selectedGuild)
local guild = DataStore:GetGuild(guildName, realm, account)
if not tabID then
-- will be nil when clicking on the guild bank tab for the first time, so find the first available one
-- called in OnShow (tabguildbank.xml)
for i=1, 6 do
if DataStore:GetGuildBankTabName(guild, i) then
tabID = i
for i=1, 6 do
_G[ "AltoholicTabGuildBankMenuItem"..i ]:UnlockHighlight();
end
_G[ "AltoholicTabGuildBankMenuItem"..tabID ]:LockHighlight();
break
end
end
end
if not tabID then return end -- no tab found ? exit
local entry = "AltoGuildBankEntry"
local tab = DataStore:GetGuildBankTab(guild, tabID)
if not tab.name then -- tab not yet scanned ? exit
for rowIndex = 1, NUM_GUILDBANK_ROWS do
_G[ entry..rowIndex ]:Hide()
end
return
end
AltoholicTabGuildBankInfo1:SetText(format(L["Last visit: %s by %s"], GREEN..tab.ClientDate..WHITE, GREEN..tab.visitedBy))
local localTime, realmTime
localTime = format("%s%02d%s:%s%02d", GREEN, tab.ClientHour, WHITE, GREEN, tab.ClientMinute )
realmTime = format("%s%02d%s:%s%02d", GREEN, tab.ServerHour, WHITE, GREEN, tab.ServerMinute )
AltoholicTabGuildBankInfo2:SetText(format(L["Local Time: %s %sRealm Time: %s"], localTime, WHITE, realmTime))
for rowIndex = 1, NUM_GUILDBANK_ROWS do
local from = mod(rowIndex, NUM_GUILDBANK_ROWS)
if from == 0 then from = NUM_GUILDBANK_ROWS end
for columnIndex = 14, 1, -1 do
local itemName = entry..rowIndex .. "Item" .. columnIndex;
local itemButton = _G[itemName];
local itemIndex = from + ((columnIndex - 1) * NUM_GUILDBANK_ROWS)
local itemID, itemLink, itemCount = DataStore:GetSlotInfo(tab, itemIndex)
if itemID then
addon:SetItemButtonTexture(itemName, GetItemIcon(itemID));
else
addon:SetItemButtonTexture(itemName, "Interface\\PaperDoll\\UI-Backpack-EmptySlot");
end
itemButton.id = itemID
itemButton.link = itemLink
itemButton:SetScript("OnEnter", function(self)
addon:Item_OnEnter(self)
end)
local countWidget = _G[itemName .. "Count"]
if not itemCount or (itemCount < 2) then
countWidget:Hide();
else
countWidget:SetText(itemCount);
countWidget:Show();
end
_G[ itemName ]:Show()
end
_G[ entry..rowIndex ]:Show()
end
end