vanilla-wow-addons – Rev 1
?pathlinks?
TITAN_MONEY_ID = "Money";
TITAN_MONEY_FREQUENCY = 1;
local startMoney;
local startSessionTime;
function TitanPanelMoneyButton_OnLoad()
this.registry = {
id = TITAN_MONEY_ID,
builtIn = 1,
version = TITAN_VERSION,
menuText = TITAN_MONEY_MENU_TEXT,
tooltipTitle = TITAN_MONEY_TOOLTIP,
tooltipTextFunction = "TitanPanelMoneyButton_GetTooltipText",
frequency = TITAN_MONEY_FREQUENCY,
updateType = TITAN_PANEL_UPDATE_TOOLTIP,
};
SmallMoneyFrame_OnLoad();
this:RegisterEvent("PLAYER_ENTERING_WORLD");
WoW_OpenCoinPickupFrame = OpenCoinPickupFrame;
OpenCoinPickupFrame = Titan_OpenCoinPickupFrame;
end
function TitanPanelMoneyButton_OnEvent()
MoneyFrame_OnEvent()
if (event == "PLAYER_ENTERING_WORLD") then
MoneyFrame_UpdateMoney();
if (not startMoney) then
startMoney = GetMoney();
startSessionTime = 0;
end
end
end
function TitanPanelMoneyCopperButton_OnClick(button)
if (button == "LeftButton") then
local parent = this:GetParent();
OpenCoinPickupFrame(1, MoneyTypeInfo[parent.moneyType].UpdateFunc(), parent);
parent.hasPickup = 1;
end
end
function TitanPanelMoneySilverButton_OnClick(button)
if (button == "LeftButton") then
local parent = this:GetParent();
OpenCoinPickupFrame(COPPER_PER_SILVER, MoneyTypeInfo[parent.moneyType].UpdateFunc(), parent);
parent.hasPickup = 1;
end
end
function TitanPanelMoneyGoldButton_OnClick(button)
if (button == "LeftButton") then
local parent = this:GetParent();
OpenCoinPickupFrame(COPPER_PER_GOLD, MoneyTypeInfo[parent.moneyType].UpdateFunc(), parent);
parent.hasPickup = 1;
end
end
function TitanPanelMoneyButton_GetTooltipText()
local sessionTime = TitanUtils_GetSessionTime() - startSessionTime;
local initialMoney = startMoney;
local fluctMoney = GetMoney() - initialMoney;
local fluctMoneyPerHour = TitanPanelMoneyButton_GetMoneyPerHour(fluctMoney, sessionTime);
if fluctMoneyPerHour == nil then
fluctMoneyPerHour = 0;
end
-- Current money Text
local currentMoneyRichText = TITAN_MONEY_TOOLTIP_CURRENT.."\t"..
TitanUtils_GetHighlightText(format(TITAN_MONEY_FORMAT, TitanPanelMoneyButton_BreakMoney(GetMoney())));
-- Initial money Text
local initialMoneyRichText = TITAN_MONEY_TOOLTIP_INITIAL.."\t"..
TitanUtils_GetHighlightText(format(TITAN_MONEY_FORMAT, TitanPanelMoneyButton_BreakMoney(initialMoney)));
-- Money Fluctuation Text
local fluctMoneyRichText;
local fluctMoneyPerHourRichText;
if (fluctMoney < 0) then
fluctMoneyRichText = TITAN_MONEY_TOOLTIP_LOST.."\t"..
TitanUtils_GetRedText(format(TITAN_MONEY_FORMAT, TitanPanelMoneyButton_BreakMoney(0 - fluctMoney)));
fluctMoneyPerHourRichText = TITAN_MONEY_TOOLTIP_LOST_HOUR.."\t"..
TitanUtils_GetRedText(format(TITAN_MONEY_FORMAT, TitanPanelMoneyButton_BreakMoney(0 - fluctMoneyPerHour)));
elseif (fluctMoney == 0) then
fluctMoneyRichText = TITAN_MONEY_TOOLTIP_EARNED.."\t"..
TitanUtils_GetHighlightText(format(TITAN_MONEY_FORMAT, TitanPanelMoneyButton_BreakMoney(0)));
fluctMoneyPerHourRichText = TITAN_MONEY_TOOLTIP_EARNED_HOUR.."\t"..
TitanUtils_GetHighlightText(format(TITAN_MONEY_FORMAT, TitanPanelMoneyButton_BreakMoney(0)));
else
fluctMoneyRichText = TITAN_MONEY_TOOLTIP_EARNED.."\t"..
TitanUtils_GetGreenText(format(TITAN_MONEY_FORMAT, TitanPanelMoneyButton_BreakMoney(fluctMoney)));
fluctMoneyPerHourRichText = TITAN_MONEY_TOOLTIP_EARNED_HOUR.."\t"..
TitanUtils_GetGreenText(format(TITAN_MONEY_FORMAT, TitanPanelMoneyButton_BreakMoney(fluctMoneyPerHour)));
end
return ""..
currentMoneyRichText.."\n"..
initialMoneyRichText.."\n"..
fluctMoneyRichText.."\n"..
fluctMoneyPerHourRichText.."\n"..
TitanUtils_GetGreenText(TITAN_MONEY_TOOLTIP_HINTS);
end
function TitanPanelRightClickMenu_PrepareMoneyMenu()
TitanPanelRightClickMenu_AddTitle(TitanPlugins[TITAN_MONEY_ID].menuText);
TitanPanelRightClickMenu_AddCommand(TITAN_MONEY_MENU_RESET_SESSION, TITAN_MONEY_ID, "TitanPanelMoneyButton_ResetSession");
TitanPanelRightClickMenu_AddSpacer();
TitanPanelRightClickMenu_AddCommand(TITAN_PANEL_MENU_HIDE, TITAN_MONEY_ID, TITAN_PANEL_MENU_FUNC_HIDE);
end
function TitanPanelMoneyButton_ResetSession()
startMoney = GetMoney();
startSessionTime = TitanUtils_GetSessionTime();
end
function TitanPanelMoneyButton_GetMoneyPerHour(money, session)
if (money and session and session > 0) then
return money / session * 3600;
end
end
function TitanPanelMoneyButton_BreakMoney(money)
-- Non-negative money only
if (money >= 0) then
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);
return gold, silver, copper;
end
end
function Titan_OpenCoinPickupFrame(multiplier, maxMoney, parent)
if ( CoinPickupFrame.owner ) then
CoinPickupFrame.owner.hasPickup = 0;
end
if ( GetCursorMoney() > 0 ) then
if ( CoinPickupFrame.owner ) then
MoneyTypeInfo[parent.moneyType].DropFunc();
PlaySound("igBackPackCoinSelect");
end
CoinPickupFrame:Hide();
return;
end
CoinPickupFrame.multiplier = multiplier;
CoinPickupFrame.maxMoney = floor(maxMoney / multiplier);
if ( CoinPickupFrame.maxMoney == 0 ) then
CoinPickupFrame:Hide();
return;
end
CoinPickupFrame.owner = parent;
CoinPickupFrame.money = 1;
CoinPickupFrame.typing = 0;
CoinPickupText:SetText(CoinPickupFrame.money);
CoinPickupLeftButton:Disable();
CoinPickupRightButton:Enable();
if ( multiplier == 1 ) then
CoinPickupCopperIcon:Show();
else
CoinPickupCopperIcon:Hide();
end
if ( multiplier == COPPER_PER_SILVER ) then
CoinPickupSilverIcon:Show();
else
CoinPickupSilverIcon:Hide();
end
if ( multiplier == (COPPER_PER_GOLD) ) then
CoinPickupGoldIcon:Show();
else
CoinPickupGoldIcon:Hide();
end
position = TitanUtils_GetRealPosition(TITAN_MONEY_ID);
if (parent:GetName() == "TitanPanelMoneyButton") then
local scale = TitanPanelGetVar("Scale");
if scale == nil then scale = 1; end
if (position == TITAN_PANEL_PLACE_TOP) then
CoinPickupFrame:ClearAllPoints();
CoinPickupFrame:SetPoint("TOPLEFT", parent:GetName(), "BOTTOMLEFT", -10, -4 * scale);
else
CoinPickupFrame:ClearAllPoints();
CoinPickupFrame:SetPoint("BOTTOMLEFT", parent:GetName(), "TOPLEFT", -10, 0);
end
else
CoinPickupFrame:ClearAllPoints();
CoinPickupFrame:SetPoint("BOTTOMRIGHT", parent:GetName(), "TOPRIGHT", 0, 0);
if (position == TITAN_PANEL_PLACE_TOP) then
CoinPickupFrame:ClearAllPoints();
CoinPickupFrame:SetPoint("TOPLEFT", parent:GetName(), "BOTTOMLEFT", -10, -4 * scale);
else
CoinPickupFrame:ClearAllPoints();
CoinPickupFrame:SetPoint("BOTTOMLEFT", parent:GetName(), "TOPLEFT", -10, 0);
end
end
CoinPickupFrame:Show();
PlaySound("igBackPackCoinSelect");
end