mirror of
https://github.com/Blaststar/Questie-Octo-Vanilla.git
synced 2026-10-26 23:20:50 +00:00
207 lines
6.8 KiB
Lua
207 lines
6.8 KiB
Lua
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
|