Skip to content

Commit

Permalink
new: /gt bank open/show/hide/close/closed (toggle whether to deposit …
Browse files Browse the repository at this point in the history
…on bank window open or close event)

fix: prevent mail deposits from respecting GOLD_CAP
debug: output debug info about own, bank and tithe balances before and after DepositGuildBankMoney()
new: status info in help chat message
new: /gt debug on/true/off/false
new: /gt prettyldb on/true/off/false
new: /gt chat on/true/off/false (spammy mode toggle)
new: additional Locale strings

Signed-off-by: bernard langham <[email protected]>
  • Loading branch information
speedwaystar committed Oct 5, 2024
1 parent 5dd70e9 commit 8495930
Show file tree
Hide file tree
Showing 3 changed files with 67 additions and 14 deletions.
72 changes: 60 additions & 12 deletions Core.lua
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,7 @@ end

-- Get a string for the current version of the addon.
function E:GetVerString()
CURRENT_REVISION = 129
CURRENT_REVISION = 130
local v, rev = (C_AddOns.GetAddOnMetadata(addonName, "VERSION") or "???"), CURRENT_REVISION

--[===[@debug@
Expand Down Expand Up @@ -79,6 +79,7 @@ local SettingsDefaults = {
SkinElvUI = true,
LDBDisplayTotal = false,
PrettyLDB = false,
DepositOnBankOpen = true,
}

-- Get the coin string for the databroker icon, because it needs to be shorter.
Expand Down Expand Up @@ -315,6 +316,7 @@ end


-- Handles depositing the tithe
-- NB: deposit by mail won't work when mailbox replacement addons are active e.g. Tradeskillmaster
function E:DepositTithe(clicked, isMail)
self:PrintDebug("DepositTithe(".. self:debugArgs(clicked, isMail) .. ") -- ACTUAL DEPOSIT IS DISABLED IN DEBUG MODE")
if not clicked and not GuildTithe_SavedDB.AutoDeposit then
Expand All @@ -338,7 +340,7 @@ function E:DepositTithe(clicked, isMail)
local tithe = GuildTithe_SavedDB.CurrentTithe
local bank = GetGuildBankMoney()

if bank + tithe > GOLD_CAP then
if not isMail and (bank + tithe > GOLD_CAP) then
tithe = GOLD_CAP - bank
end

Expand All @@ -348,7 +350,7 @@ function E:DepositTithe(clicked, isMail)
return
end

-- Deposit the money, then reset CurrentTithe and update TotalTithe
-- Deposit the money, then adjust CurrentTithe and update TotalTithe
if not E._DebugMode then
if isMail then
-- postal fix
Expand All @@ -359,13 +361,18 @@ function E:DepositTithe(clicked, isMail)
SendMailMoneySilver:SetText(silverAmount)
SendMailMoneyCopper:SetText(copperAmount)
else
DepositGuildBankMoney(tithe)
end
-- begin temporary test spam
print(LIGHTGRAY_FONT_COLOR:WrapTextInColorCode(format("Tithe before deposit: %s.",C_CurrencyInfo.GetCoinTextureString(GuildTithe_SavedDB.CurrentTithe))))
print(LIGHTGRAY_FONT_COLOR:WrapTextInColorCode(format("Guild bank before deposit: %s.",C_CurrencyInfo.GetCoinTextureString(GetGuildBankMoney()))))
print(LIGHTGRAY_FONT_COLOR:WrapTextInColorCode(format("Own balance before deposit: %s.",C_CurrencyInfo.GetCoinTextureString(GetMoney()))))
DepositGuildBankMoney(tithe)
-- end temporary test spam
end
end

if GuildTithe_SavedDB.Spammy or E._DebugMode then
if tithe ~= GuildTithe_SavedDB.CurrentTithe then
self:PrintMessage(format(L.ChatDepositToGoldCap, C_CurrencyInfo.GetCoinTextureString(tithe), C_CurrencyInfo.GetCoinTextureString(GuildTithe_SavedDB.CurrentTithe)))
self:PrintMessage(format(L.ChatDepositToGoldCap, C_CurrencyInfo.GetCoinTextureString(tithe), C_CurrencyInfo.GetCoinTextureString(GuildTithe_SavedDB.CurrentTithe)), false, E._DebugMode)
else
self:PrintMessage(format(L.ChatDepositTitheAmount, C_CurrencyInfo.GetCoinTextureString(tithe), false, E._DebugMode))
end
Expand All @@ -374,6 +381,11 @@ function E:DepositTithe(clicked, isMail)
if not E._DebugMode then
GuildTithe_SavedDB.TotalTithe = GuildTithe_SavedDB.TotalTithe + tithe
GuildTithe_SavedDB.CurrentTithe = GuildTithe_SavedDB.CurrentTithe - tithe
-- begin temporary test spam
print(LIGHTGRAY_FONT_COLOR:WrapTextInColorCode(format("Tithe after deposit: %s.",C_CurrencyInfo.GetCoinTextureString(GuildTithe_SavedDB.CurrentTithe))))
print(LIGHTGRAY_FONT_COLOR:WrapTextInColorCode(format("Guild bank after deposit: %s.",C_CurrencyInfo.GetCoinTextureString(GetGuildBankMoney()))))
print(LIGHTGRAY_FONT_COLOR:WrapTextInColorCode(format("Own balance after deposit: %s.",C_CurrencyInfo.GetCoinTextureString(GetMoney()))))
-- end temporary test spam

if not GuildTithe_SavedDB.LDBDisplayTotal or not E.ShowTotalTimer then
GuildTithe_SavedDB.LDBDisplayTotal = true
Expand All @@ -382,7 +394,7 @@ function E:DepositTithe(clicked, isMail)
end
end

local numHelpLines = 12
local numHelpLines = 15
-- Print Help
function E:PrintHelpMessages()
for i = 1, numHelpLines do
Expand All @@ -392,6 +404,10 @@ function E:PrintHelpMessages()
self:PrintMessage(L["ChatHelpLine" .. i])
end
end
self:PrintMessage("=== Status ===")
self:PrintMessage(format(L.ChatCommandToggleDebug, tostring(E._DebugMode)), false, E._DebugMode )
self:PrintMessage(format(L.ChatCommandToggleChat, tostring(GuildTithe_SavedDB.Spammy)))
self:PrintMessage(format("Deposit on bank window frame %s.", GREEN_FONT_COLOR:WrapTextInColorCode( tostring(GuildTithe_SavedDB.DepositOnBankOpen and "show" or "hide"))))
end

-- Handles slash commands
Expand All @@ -400,7 +416,13 @@ function E:OnChatCommand(msg)

-- toggle debug mode without opening the config window
if cmd == "debug" then
E._DebugMode = not E._DebugMode
if args == "on" or args == "true" then
E._DebugMode = true
elseif args == "off" or args == "false" then
E._DebugMode = false
else
E._DebugMode = not E._DebugMode
end
self:PrintMessage(format(L.ChatCommandToggleDebug, tostring(E._DebugMode)), false, E._DebugMode )
return
end
Expand Down Expand Up @@ -434,9 +456,9 @@ function E:OnChatCommand(msg)

-- Toggle pretty LDB display (requires more room on LDB bar than existing basic default)
elseif cmd == "prettyldb" then
if args == "on" then
if args == "on" or args == "true" then
GuildTithe_SavedDB.PrettyLDB = true
elseif args == "off" then
elseif args == "off" or args == "false" then
GuildTithe_SavedDB.PrettyLDB = false
else -- No args clause, toggle.
GuildTithe_SavedDB.PrettyLDB = not(GuildTithe_SavedDB.PrettyLDB)
Expand Down Expand Up @@ -491,6 +513,26 @@ function E:OnChatCommand(msg)
self:PrintMessage(format(L.ChatOutstandingTithe, C_CurrencyInfo.GetCoinTextureString(GuildTithe_SavedDB.CurrentTithe)))
end

-- taggle chat output
elseif cmd == "chat" then
if args == "on" or args == "true" then
GuildTithe_SavedDB.Spammy = true
elseif args == "off" or args == "false" then
GuildTithe_SavedDB.Spammy = false
else -- No args clause, toggle.
GuildTithe_SavedDB.Spammy = not GuildTithe_SavedDB.Spammy
end
self:PrintMessage(format(L.ChatCommandToggleChat, tostring(GuildTithe_SavedDB.Spammy)))

-- deposit on bank window open or close (potential fix for server lag)
elseif cmd == "bank" then
if args == "show" or args == "open" then
GuildTithe_SavedDB.DepositOnBankOpen = true
elseif args == "hide" or args == "close" or args == "closed" then
GuildTithe_SavedDB.DepositOnBankOpen = false
end
self:PrintMessage(format("Deposit on bank window frame %s.", GREEN_FONT_COLOR:WrapTextInColorCode(tostring(GuildTithe_SavedDB.DepositOnBankOpen and "show" or "hide"))))

-- This is where we're going to actually print the help info... Later though.
else
self:PrintMessage(format(L.ChatCommandNotFound, msg), true)
Expand Down Expand Up @@ -594,9 +636,15 @@ function E.EventHandler(self, event, ...)
E.Loaded = true
end

-- GUILDBANKFRAME_OPENED: The GB was closed, deposit the outstanding tithe.
-- GUILDBANKFRAME_OPENED: The GB was opened, deposit the outstanding tithe.
elseif event == "PLAYER_INTERACTION_MANAGER_FRAME_SHOW" and tonumber(arg1) == Enum.PlayerInteractionType.GuildBanker then
if GuildTithe_SavedDB.DepositOnBankOpen then
E:DepositTithe()
end
elseif event == "PLAYER_INTERACTION_MANAGER_FRAME_HIDE" and tonumber(arg1) == Enum.PlayerInteractionType.GuildBanker then
E:DepositTithe()
if not GuildTithe_SavedDB.DepositOnBankOpen then
E:DepositTithe()
end
-- Mail_*: Update outstanding tithe from Mail sources
elseif event == "PLAYER_INTERACTION_MANAGER_FRAME_SHOW" and tonumber(arg1) == Enum.PlayerInteractionType.MailInfo then
return E:UpdateOutstandingTithe("Mail")
Expand Down
3 changes: 2 additions & 1 deletion GuildTitheFrameScripts.lua
Original file line number Diff line number Diff line change
Expand Up @@ -174,7 +174,8 @@ end

function E.FrameScript_MiniTitheFrameOnClick(self, button)
E:PrintDebug("MiniFrame OnClick()")
if C_AddOns.IsAddOnLoaded("Blizzard_GuildBankUI") and GuildBankFrame:IsVisible() then
if (C_AddOns.IsAddOnLoaded("Blizzard_GuildBankUI") and GuildBankFrame:IsVisible()) or
(C_AddOns.IsAddOnLoaded("Arkinventory") and ARKINV_Frame4TitleArkBorder:IsVisible()) then
E:DepositTithe(1)
elseif SendMailFrame:IsVisible() then
E:DepositTithe(1,1)
Expand Down
6 changes: 5 additions & 1 deletion Locale/enUS.lua
Original file line number Diff line number Diff line change
Expand Up @@ -23,14 +23,18 @@ L["ChatHelpLine8"] = "reset config -- Reset this character's config."
L["ChatHelpLine9"] = "current/tithe -- Show your current outstanding tithe."
L["ChatHelpLine10"] = "mini -- Toggle the Mini-frame."
L["ChatHelpLine11"] = "mini lock -- Lock or unlock the Mini-frame."
L["ChatHelpLine12"] = "debug -- Toggle debug mode on and off."
L["ChatHelpLine12"] = "debug (on/off) -- Toggle debug mode on and off."
L["ChatHelpLine13"] = "chat (on/off) -- Toggle chat output on and off."
L["ChatHelpLine14"] = "prettyldb (on/off) -- Toggle LDB text vs graphical display."
L["ChatHelpLine15"] = "bank show/hide -- deposit on bank window show or hide (default show)"

L["ChatMiniFrameLock"] = "Mini-Frame locked."

L["ChatCommandSetNegative"] = "Tithe cannot be negative."
L["ChatCommandSetOverCap"] = "Tithe cannot exceed gold cap."
L["ChatCommandSetSyntax"] = "Syntax: /gt set <amount in copper>."
L["ChatCommandToggleDebug"] = "Debug mode §c%s§r."
L["ChatCommandToggleChat"] = "Chat mode §c%s§r."

L["ChatMiniFrameUnlock"] = "Mini-frame unlocked."
L["ChatNotEnoughFunds"] = "You don't have enough money to do that!"
Expand Down

0 comments on commit 8495930

Please sign in to comment.