--[[ TinyMoneyFrame functions 3.8.0 (Kangaroo) $Id: TinyMoneyFrame.lua 632 2005-12-18 14:36:34Z norganna $ License: This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program(see GLP.txt); if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. ]] function TinyMoneyFrame_Update(frameName, money) local frame = getglobal(frameName); local info = frame.info; if ( not info ) then message("Error moneyType not set"); end -- Breakdown the money into denominations local gold = floor(money / (COPPER_PER_SILVER * SILVER_PER_GOLD)); local silver = floor((money - (gold * COPPER_PER_SILVER * SILVER_PER_GOLD)) / COPPER_PER_SILVER); local copper = mod(money, COPPER_PER_SILVER); local goldButton = getglobal(frameName.."GoldButton"); local silverButton = getglobal(frameName.."SilverButton"); local copperButton = getglobal(frameName.."CopperButton"); local iconWidth = MONEY_ICON_WIDTH; local spacing = MONEY_BUTTON_SPACING; if ( frame.small ) then iconWidth = MONEY_ICON_WIDTH_SMALL; spacing = MONEY_BUTTON_SPACING_SMALL; end -- Set values for each denomination goldButton:SetText(gold); goldButton:SetWidth(goldButton:GetTextWidth() + iconWidth); goldButton:Show(); if (gold > 0) then silverButton:SetText(string.format("%."..math.log10(SILVER_PER_GOLD).."d", silver)); else silverButton:SetText(silver); end silverButton:SetWidth(silverButton:GetTextWidth() + iconWidth); silverButton:Show(); if (gold > 0 or silver > 0) then copperButton:SetText(string.format("%."..math.log10(COPPER_PER_SILVER).."d", copper)); else copperButton:SetText(copper); end copperButton:SetWidth(copperButton:GetTextWidth() + iconWidth); copperButton:Show(); -- Store how much money the frame is displaying frame.staticMoney = money; -- If not collapsable don't need to continue if ( not info.collapse ) then return; end local width = iconWidth; local showLowerDenominations, truncateCopper; if ( gold > 0 ) then width = width + goldButton:GetWidth(); if ( info.showSmallerCoins ) then showLowerDenominations = 1; end if ( info.truncateSmallCoins ) then truncateCopper = 1; end else goldButton:Hide(); end if ( silver > 0 or showLowerDenominations ) then if ( gold > 0 ) then silverButton:SetWidth(25); end width = width + silverButton:GetWidth(); goldButton:SetPoint("RIGHT", frameName.."SilverButton", "LEFT", spacing, 0); if ( goldButton:IsVisible() ) then width = width - spacing; end if ( info.showSmallerCoins ) then showLowerDenominations = 1; end else silverButton:Hide(); goldButton:SetPoint("RIGHT", frameName.."SilverButton", "RIGHT", 0, 0); end -- Used if we're not showing lower denominations if ( (copper > 0 or showLowerDenominations or info.showSmallerCoins == "Backpack") and not truncateCopper) then if ( gold > 0 or silver > 0 ) then copperButton:SetWidth(25); end width = width + copperButton:GetWidth(); silverButton:SetPoint("RIGHT", frameName.."CopperButton", "LEFT", spacing, 0); if ( silverButton:IsVisible() ) then width = width - spacing; end else copperButton:Hide(); silverButton:SetPoint("RIGHT", frameName.."CopperButton", "RIGHT", 0, 0); end frame:SetWidth(width); end function TinyMoneyFrame_UpdateMoney() if ( this.info ) then local money = this.info.UpdateFunc(); TinyMoneyFrame_Update(this:GetName(), money); if ( this.hasPickup == 1 ) then UpdateCoinPickupFrame(money); end else message("Error moneyType not set"); end end