Files
coa-altoholic/Altoholic/Frames/TabGuildBank.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

154 lines
4.6 KiB
Lua

local addonName = ...
local addon = _G[addonName]
local L = LibStub("AceLocale-3.0"):GetLocale(addonName)
local WHITE = "|cFFFFFFFF"
local TEAL = "|cFF00FF9A"
local GREEN = "|cFF00FF00"
local YELLOW = "|cFFFFFF00"
local THIS_ACCOUNT = "Default"
addon.Tabs.GuildBank = {}
local ns = addon.Tabs.GuildBank -- ns = namespace
local function OnGuildChange(self, account, realm)
local _, _, guildname = strsplit("|", self.value)
UIDropDownMenu_ClearAll(AltoholicTabGuildBank_SelectGuild);
ns:LoadGuild(account, realm, guildname)
end
local function DropDownGuild_Initialize()
if not addon.db then return end
local DS = DataStore
for account in pairs(DS:GetAccounts()) do
for realm in pairs(DS:GetRealms(account)) do
for guildName, guild in pairs(DS:GetGuilds(realm, account)) do
local money = DS:GetGuildBankMoney(guild)
if money then
local info = UIDropDownMenu_CreateInfo();
info.text = format("%s %s(%s / %s%s)", GREEN..guildName, WHITE, realm, YELLOW..account, WHITE)
info.value = format("%s|%s|%s", account, realm, guildName)
info.checked = nil;
info.func = OnGuildChange
info.arg1 = account
info.arg2 = realm
UIDropDownMenu_AddButton(info, 1);
end
end
end
end
end
local initRequired = true
function ns:OnShow()
if initRequired then
local currentRealm = GetRealmName()
local currentGuild = GetGuildInfo("player")
-- if the player is not in a guild, set the drop down to the first available guild on this realm, if any.
if not currentGuild then
for guildName, guild in pairs(DataStore:GetGuilds(currentRealm, THIS_ACCOUNT)) do
local money = DataStore:GetGuildBankMoney(guild)
if money then -- if money is not nil, the guild bank has been populated
currentGuild = guildName
break -- if there's at least one guild, let's set the right value and break immediately
end
end
end
-- if the current guild or at least a guild on this realm was found..set the right values
if currentGuild then
ns:LoadGuild(THIS_ACCOUNT, currentRealm, currentGuild)
end
UIDropDownMenu_Initialize(AltoholicTabGuildBank_SelectGuild, DropDownGuild_Initialize)
initRequired = nil
end
addon.GuildBank:DrawTab()
end
function ns:LoadGuild(account, realm, name)
local guild = DataStore:GetGuild(name, realm, account)
local money = DataStore:GetGuildBankMoney(guild)
if money then
UIDropDownMenu_SetSelectedValue(AltoholicTabGuildBank_SelectGuild, format("%s|%s|%s", account, realm, name))
UIDropDownMenu_SetText(AltoholicTabGuildBank_SelectGuild, format("%s%s %s(%s)", GREEN, name, WHITE, realm))
end
AltoGuildBank:Hide()
for i = 1, 6 do
_G[ "AltoholicTabGuildBankMenuItem"..i ]:UnlockHighlight();
local name = DataStore:GetGuildBankTabName(guild, i)
_G[ "AltoholicTabGuildBankMenuItem" .. i ]:SetText(name and (WHITE..name) or (YELLOW..L["N/A"]))
_G[ "AltoholicTabGuildBankMenuItem" .. i ]:Show()
end
local altoGuild = addon:GetGuild(name, realm, account)
AltoholicTabGuildBank_HideInTooltip:SetChecked(altoGuild.hideInTooltip)
AltoholicTabGuildBankMoney:SetText(MONEY .. ": " .. addon:GetMoneyString(money or 0, WHITE))
end
function ns:HideGuild(self)
local value = UIDropDownMenu_GetSelectedValue(AltoholicTabGuildBank_SelectGuild)
if not value then return end
local account, realm, name = strsplit("|", value)
local guild = addon:GetGuild(name, realm, account)
if self:GetChecked() then
guild.hideInTooltip = true
else
guild.hideInTooltip = nil
end
end
local function DeleteGuild_MsgBox_Handler(self, button, guildKey)
if not button then return end
local account, realm, guildName = strsplit("|", guildKey)
local guild = addon:GetGuild(guildName, realm, account)
wipe(guild)
for i=1, 6 do
_G[ "AltoholicTabGuildBankMenuItem"..i ]:Hide()
end
AltoholicTabGuildBankInfo1:SetText("")
AltoholicTabGuildBankInfo2:SetText("")
AltoholicTabGuildBankMoney:SetText("")
AltoGuildBank:Hide()
DataStore:DeleteGuild(guildName, realm, account)
UIDropDownMenu_ClearAll(AltoholicTabGuildBank_SelectGuild);
addon:Print(format( L["Guild %s successfully deleted"], guildName))
end
function ns:DeleteGuild()
local guildKey = UIDropDownMenu_GetSelectedValue(AltoholicTabGuildBank_SelectGuild)
if not guildKey then return end
addon:SetMsgBoxHandler(DeleteGuild_MsgBox_Handler, guildKey)
local _, realm, guildName = strsplit("|", guildKey)
AltoMsgBox_Text:SetText(L["Delete Guild Bank?"] .. "\n" .. GREEN .. guildName .. WHITE .. " (" .. realm .. ")")
AltoMsgBox_Text:SetText(format("%s\n%s%s %s(%s)", L["Delete Guild Bank?"], GREEN, guildName, WHITE, realm ))
AltoMsgBox:Show()
end