bbe2492a5b
Each DataStore_* / Altoholic_* addon now lives at the repo root, matching the Exiles fork-layout convention (one folder per addon, no wrapper dir).
154 lines
4.6 KiB
Lua
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
|