104 lines
3.8 KiB
Lua
104 lines
3.8 KiB
Lua
-- ------------------------------------------------------------------------------ --
|
|
-- TradeSkillMaster --
|
|
-- https://tradeskillmaster.com --
|
|
-- All Rights Reserved - Detailed license information included with addon. --
|
|
-- ------------------------------------------------------------------------------ --
|
|
|
|
--- PlayerGoldText UI Element Class.
|
|
-- A text element which contains player gold info which automatically updates when the player's gold amount changes. It
|
|
-- is a subclass of the @{Text} class.
|
|
-- @classmod PlayerGoldText
|
|
|
|
local _, TSM = ...
|
|
local PlayerGoldText = TSM.Include("LibTSMClass").DefineClass("PlayerGoldText", TSM.UI.Text)
|
|
local L = TSM.Include("Locale").GetTable()
|
|
local TempTable = TSM.Include("Util.TempTable")
|
|
local Event = TSM.Include("Util.Event")
|
|
local Money = TSM.Include("Util.Money")
|
|
local Settings = TSM.Include("Service.Settings")
|
|
local UIElements = TSM.Include("UI.UIElements")
|
|
UIElements.Register(PlayerGoldText)
|
|
TSM.UI.PlayerGoldText = PlayerGoldText
|
|
local private = {
|
|
registered = false,
|
|
elements = {},
|
|
}
|
|
|
|
|
|
|
|
-- ============================================================================
|
|
-- Meta Class Methods
|
|
-- ============================================================================
|
|
|
|
function PlayerGoldText.__init(self)
|
|
self.__super:__init()
|
|
self:_GetBaseFrame():EnableMouse(true)
|
|
|
|
if not private.registered then
|
|
Event.Register("PLAYER_MONEY", private.MoneyOnUpdate)
|
|
private.registered = true
|
|
end
|
|
|
|
self._justifyH = "RIGHT"
|
|
self._font = "TABLE_TABLE1"
|
|
end
|
|
|
|
function PlayerGoldText.Acquire(self)
|
|
private.elements[self] = true
|
|
self.__super:Acquire()
|
|
self:SetText(Money.ToString(TSM.db.global.appearanceOptions.showTotalMoney and private.GetTotalMoney() or GetMoney()))
|
|
self:SetTooltip(private.MoneyTooltipFunc)
|
|
end
|
|
|
|
function PlayerGoldText.Release(self)
|
|
private.elements[self] = nil
|
|
self.__super:Release()
|
|
self._justifyH = "RIGHT"
|
|
self._font = "TABLE_TABLE1"
|
|
end
|
|
|
|
|
|
|
|
-- ============================================================================
|
|
-- Private Helper Functions
|
|
-- ============================================================================
|
|
|
|
function private.MoneyOnUpdate()
|
|
for element in pairs(private.elements) do
|
|
element:SetText(Money.ToString(TSM.db.global.appearanceOptions.showTotalMoney and private.GetTotalMoney() or GetMoney()))
|
|
element:Draw()
|
|
end
|
|
end
|
|
|
|
function private.MoneyTooltipFunc()
|
|
local tooltipLines = TempTable.Acquire()
|
|
local playerMoney = TSM.db.sync.internalData.money
|
|
local total = playerMoney
|
|
tinsert(tooltipLines, strjoin(TSM.CONST.TOOLTIP_SEP, UnitName("player")..":", Money.ToString(playerMoney)))
|
|
local numPosted, numSold, postedGold, soldGold = TSM.MyAuctions.GetAuctionInfo()
|
|
if numPosted then
|
|
tinsert(tooltipLines, " "..strjoin(TSM.CONST.TOOLTIP_SEP, format(L["%s Sold Auctions"], numSold)..":", Money.ToString(soldGold)))
|
|
tinsert(tooltipLines, " "..strjoin(TSM.CONST.TOOLTIP_SEP, format(L["%s Posted Auctions"], numPosted)..":", Money.ToString(postedGold)))
|
|
end
|
|
for _, _, character, syncScopeKey in Settings.ConnectedFactionrealmAltCharacterIterator() do
|
|
local money = Settings.Get("sync", syncScopeKey, "internalData", "money")
|
|
if money > 0 then
|
|
tinsert(tooltipLines, strjoin(TSM.CONST.TOOLTIP_SEP, character..":", Money.ToString(money)))
|
|
total = total + money
|
|
end
|
|
end
|
|
tinsert(tooltipLines, 1, strjoin(TSM.CONST.TOOLTIP_SEP, L["Total Gold"]..":", Money.ToString(total)))
|
|
return strjoin("\n", TempTable.UnpackAndRelease(tooltipLines))
|
|
end
|
|
|
|
function private.GetTotalMoney()
|
|
local total = TSM.db.sync.internalData.money
|
|
for _, _, _, syncScopeKey in Settings.ConnectedFactionrealmAltCharacterIterator() do
|
|
local money = Settings.Get("sync", syncScopeKey, "internalData", "money")
|
|
if money > 0 then
|
|
total = total + money
|
|
end
|
|
end
|
|
return total
|
|
end
|