self.backdrop = self:CreateTexture()
self.backdrop:SetAllPoints()
Sorted.RegisterBackdrop(self.backdrop)
self.icon = self:CreateTexture()
self.icon:SetDrawLayer("OVERLAY")
self.icon:SetSize(28, 28)
self.icon:SetTexCoord(0.1, 0.9, 0.1, 0.9)
self.icon:SetPoint("TOP", 0, -8)
self.iconBorder = self:CreateTexture()
self.iconBorder:SetPoint("TOPLEFT", -1, 1)
self.iconBorder:SetPoint("BOTTOMRIGHT", 1, -1)
self.iconBorder:SetDrawLayer("BACKGROUND")
self.buttons = {}
for i = 1,8 do
local b = CreateFrame("Button", self:GetParent():GetName().."Button"..i, self)
b:SetNormalTexture("Interface\\Addons\\Sorted\\Textures\\Favorite-Icons")
b:GetNormalTexture():SetTexCoord(
(math.fmod(i - 1, 4)) * 0.21875,
(math.fmod(i - 1, 4) + 1) * 0.21875,
(math.floor((i - 1) / 4)) * 0.21875,
(math.floor((i - 1) / 4) + 1) * 0.21875
)
b:SetHighlightTexture("Interface\\Addons\\Sorted\\Textures\\Favorite-Icons")
b:GetHighlightTexture():SetTexCoord(
(math.fmod(i - 1, 4)) * 0.21875,
(math.fmod(i - 1, 4) + 1) * 0.21875,
(math.floor((i - 1) / 4) + 2) * 0.21875,
(math.floor((i - 1) / 4) + 3) * 0.21875
)
b:SetPushedTexture("Interface\\Addons\\Sorted\\Textures\\Favorite-Icons")
b:GetPushedTexture():SetTexCoord(
(math.fmod(i - 1, 4)) * 0.21875,
(math.fmod(i - 1, 4) + 1) * 0.21875,
(math.floor((i - 1) / 4)) * 0.21875,
(math.floor((i - 1) / 4) + 1) * 0.21875
)
b:SetSize(22, 22)
b.value = i
b.x, b.y = 8 + math.fmod(i - 1, 4) * 24 + 12, -48 - math.floor((i - 1) / 4) * 24 - 12
b:SetPoint("CENTER", self, "TOPLEFT", b.x, b.y)
b:SetScript("OnMouseDown", function(self)
self:SetPoint("CENTER", self:GetParent(), "TOPLEFT", self.x + 1, self.y - 1)
end)
b:SetScript("OnMouseUp", function(self)
self:SetPoint("CENTER", self:GetParent(), "TOPLEFT", self.x, self.y)
end)
b:SetScript("OnEnter", function(self)
self:SetSize(24, 24)
end)
b:SetScript("OnLeave", function(self)
self:SetSize(22, 22)
end)
b:SetScript("OnClick", function(self)
Sorted_ToggleFavorite(self:GetParent().itemButton:GetData(), self.value)
Sorted_UpdateItemButtons()
Sorted_FilterItems()
self:GetParent():Hide()
end)
self.buttons[i] = b
end
local b = CreateFrame("Button", self:GetName().."Clear", self, "SortedDropdownButtonTemplate")
b:SetHeight(20)
b:SetPoint("RIGHT", 0, 0)
b:SetPoint("BOTTOMLEFT", 0, 6)
b:SetText(Sorted.Localize("DROPDOWN_MENU_CLEAR"))
b:GetFontString():SetTextColor(0.8,0.8,0.8)
b:GetFontString():SetPoint("CENTER")
b:GetHighlightTexture():SetVertexColor(0.6,0.6,0.6)
b:GetPushedTexture():SetVertexColor(0.6,0.6,0.6)
b:SetScript("OnClick", function(self)
Sorted_Unfavorite(self:GetParent().itemButton:GetData())
Sorted_UpdateItemButtons()
Sorted_FilterItems()
self:GetParent():Hide()
end)
b:HookScript("OnEnter", function(self)
self:GetFontString():SetTextColor(1,1,1)
end)
b:HookScript("OnLeave", function(self)
self:GetFontString():SetTextColor(0.8,0.8,0.8)
end)
self.clearButton = b
if not Sorted_IsClassic() then
self:RegisterEvent("GLOBAL_MOUSE_DOWN")
end
self.icon:SetTexture(self.itemButton:GetData().texture)
local r,g,b = Sorted_GetItemQualityColor(self.itemButton:GetData().quality)
self.iconBorder:SetColorTexture(r,g,b)
self.animating = true
self.animElapsed = 0
if self.animating then
self.animElapsed = self.animElapsed + elapsed * 5
if self.animElapsed > 1 or Sorted_GetSetting("animations") == 1 then
self.animElapsed = 1
self.animating = false
end
local multiplier = math.sin(self.animElapsed * (math.pi / 2))
self:SetWidth(112 * multiplier)
self:SetHeight(128 * multiplier)
self.iconBorder:SetAlpha(self.animElapsed * self.animElapsed)
self.icon:SetAlpha(self.animElapsed * self.animElapsed)
self.clearButton:SetAlpha(self.animElapsed * self.animElapsed)
for _, button in pairs(self.buttons) do
button:SetScale(multiplier)
end
end
if event == "GLOBAL_MOUSE_DOWN" and self:IsShown() then
if not self:IsMouseOver() then
self:Hide()
end
end
SortedFrame_OnLoad(self)
self:SetFrameLevel(572)
SortedBankSidePanel:Hide()
SortedReagentSidePanel:Hide()
if button == "LeftButton" and not SortedFrame.isMoving then
SortedFrame:StartMoving()
SortedFrame.isMoving = true
end
if button == "LeftButton" and SortedFrame.isMoving then
SortedFrame:StopMovingOrSizing();
SortedFrame.isMoving = false;
end
if (SortedFrame.isMoving) then
SortedFrame:StopMovingOrSizing()
SortedFrame.isMoving = false
end
self.selectedTab = 0
self.tabs = { SortedTabBank }
if not Sorted_IsClassic() then
table.insert(self.tabs, SortedTabReagents)
else
SortedTabReagents:Hide()
end
if Sorted.IsSkinned() then
for _, tab in pairs(self.tabs) do
tab:SetPoint("LEFT", 4, 0)
end
end
function self:SelectTab(id)
if self.selectedTab ~= id then
self:ToggleTab(id)
else
Sorted_UpdateItemButtons()
Sorted_FilterItems()
end
end
function self:DeselectTab()
if self.selectedTab ~= 0 then
self:ToggleTab(self.selectedTab)
else
Sorted_UpdateItemButtons()
Sorted_FilterItems()
end
end
function self:UpdateWidths()
for _, tab in pairs(self.tabs) do
tab:SetHeight(tab.buttonText:GetWidth() + 40)
end
end
function self:ToggleTab(id)
_G["SortedBankSidePanel"]:Hide()
_G["SortedReagentSidePanel"]:Hide()
SortedTabsFrame:SetPoint("RIGHT", _G["SortedFrame"], "LEFT")
if self.selectedTab == id then
id = 0
end
self.selectedTab = 0
for i,v in ipairs(self.tabs) do
if i == id then
v.selected = true
v.buttonText:SetPoint("CENTER", -5, -4)
if Sorted.IsSkinned() then
v:SetPoint("LEFT")
end
self.selectedTab = id
v.buttonText:SetFontObject("SortedTabSelectedFont")
_G[v:GetName().."LeftDisabled"]:Show()
_G[v:GetName().."RightDisabled"]:Show()
_G[v:GetName().."MiddleDisabled"]:Show()
_G[v:GetName().."Left"]:Hide()
_G[v:GetName().."Right"]:Hide()
_G[v:GetName().."Middle"]:Hide()
if i == 1 then
_G["SortedBankSidePanel"]:Show()
if Sorted.IsSkinned() then
SortedTabsFrame:SetPoint("RIGHT", _G["SortedBankSidePanel"], "LEFT", 0, 0)
else
SortedTabsFrame:SetPoint("RIGHT", _G["SortedBankSidePanel"], "LEFT", 4, 0)
end
elseif i == 2 then
_G["SortedReagentSidePanel"]:Show()
if Sorted.IsSkinned() then
SortedTabsFrame:SetPoint("RIGHT", _G["SortedReagentSidePanel"], "LEFT", 0, 0)
else
SortedTabsFrame:SetPoint("RIGHT", _G["SortedReagentSidePanel"], "LEFT", 4, 0)
end
end
else
v.selected = false
v.buttonText:SetPoint("CENTER", -2, -4)
v.buttonText:SetFontObject("SortedTabFont")
if Sorted.IsSkinned() then
v:SetPoint("LEFT", 4, 0)
end
_G[v:GetName().."LeftDisabled"]:Hide()
_G[v:GetName().."RightDisabled"]:Hide()
_G[v:GetName().."MiddleDisabled"]:Hide()
_G[v:GetName().."Left"]:Show()
_G[v:GetName().."Right"]:Show()
_G[v:GetName().."Middle"]:Show()
end
end
self:SetFrameLevel(520)
Sorted_UpdateItemButtons()
Sorted_FilterItems()
end
self:UpdateWidths()
function SortedMoneyText:UpdateMoneyText()
Sorted_GetData(UnitGUID("player")).money = GetMoney()
local money = Sorted_GetData().money
if not money then money = 0 end -- for new characters without money
if money >= 10000000000 then -- Hide silvers/coppers when player has >1mil gold
money = math.floor(money / 10000) * 10000
elseif money >= 100000000 then -- Hide coppers when player has >10k gold
money = math.floor(money / 100) * 100
end
SortedMoneyText:SetText(GetMoneyString(money, true))
SortedFrameMoneyFrame:SetWidth(SortedMoneyText:GetWidth() + 26)
end
self:RegisterEvent("PLAYER_MONEY")
--self:RegisterEvent("PLAYER_ENTERING_WORLD")
SortedMoneyText:UpdateMoneyText()
self.highlightLeft:Show()
self.highlightMiddle:Show()
self.highlightRight:Show()
SortedTooltip.Schedule(function()
GameTooltip:SetOwner(self, "ANCHOR_LEFT")
GameTooltip:ClearLines()
local orderedKeys = {}
for realm, v in pairs(Sorted_totalMoney) do
table.insert(orderedKeys, realm)
end
table.sort(orderedKeys)
GameTooltip:AddLine(Sorted.Localize("TOOLTIP_TITLE_ACCOUNT_GOLD"), 1, 1, 1)
for i, realm in ipairs(orderedKeys) do
local v = Sorted_totalMoney[realm]
local allianceMoney = v.alliance
local hordeMoney = v.horde
if realm == GetRealmName() then
if UnitFactionGroup("player") == "Alliance" then
allianceMoney = allianceMoney + GetMoney()
else
hordeMoney = hordeMoney + GetMoney()
end
end
GameTooltip:AddLine(" ")
GameTooltip:AddLine(" "..realm)
GameTooltip:AddLine("|TInterface\\WORLDSTATEFRAME\\AllianceIcon:18|t "..GetMoneyString(allianceMoney, true).. " ", 1, 1, 1)
GameTooltip:AddLine("|TInterface\\PVPFrame\\PVP-Currency-Horde:18|t "..GetMoneyString(hordeMoney, true).." ", 1, 1, 1)
end
GameTooltip:Show()
end)
self.highlightLeft:Hide()
self.highlightMiddle:Hide()
self.highlightRight:Hide()
SortedTooltip.Cancel()
if Sorted_IsShadowlands() then
function SortedCurrencyFrame_Update()
local s = ""
for i = 1,3 do
local currencyInfo = C_CurrencyInfo.GetBackpackCurrencyInfo(i)
if currencyInfo then
s = s.." "..BreakUpLargeNumbers(currencyInfo.quantity).." |T"..currencyInfo.iconFileID..":16:16:0:0:64:64:4:60:4:60|t "
elseif i == 1 then
SortedCurrencyFrame:Hide()
return
end
end
SortedCurrencyFrame.text:SetText(s)
SortedCurrencyFrame:SetWidth(SortedCurrencyFrame.text:GetWidth() + 10)
SortedCurrencyFrame:Show()
end
SortedFrame:HookScript("OnShow", SortedCurrencyFrame_Update)
self:RegisterEvent("CURRENCY_DISPLAY_UPDATE")
elseif Sorted_IsBfA() then
function SortedCurrencyFrame_Update()
local s = ""
for i = 1,3 do
local name, count, icon, currencyID = GetBackpackCurrencyInfo(i)
if name then
s = s.." "..count.." |T"..icon..":16:16:0:0:64:64:4:60:4:60|t "
elseif i ==1 then
SortedCurrencyFrame:Hide()
return
end
end
SortedCurrencyFrame.text:SetText(s)
SortedCurrencyFrame:SetWidth(SortedCurrencyFrame.text:GetWidth() + 10)
SortedCurrencyFrame:Show()
end
SortedFrame:HookScript("OnShow", SortedCurrencyFrame_Update)
self:RegisterEvent("CURRENCY_DISPLAY_UPDATE")
else
self:Hide()
end
SortedCurrencyFrame_Update()
self.Bg:Hide()
SortedCategoryButtons_OnLoad(self)
Sorted.RegisterBackdrop(self.Bg)
SortedSubcategoryFrame_OnLoad(self)
self:GetParent().Bg:Hide()
self.Left:Hide()
self.Middle:Hide()
self.Right:Hide()
self.searchIcon:SetVertexColor(0.6, 0.6, 0.6);
self:SetTextInsets(16, 20, 0, 0);
self.Instructions:SetText(SEARCH);
self.Instructions:ClearAllPoints();
self.Instructions:SetPoint("TOPLEFT", self, "TOPLEFT", 16, 0);
self.Instructions:SetPoint("BOTTOMRIGHT", self, "BOTTOMRIGHT", -20, 0);
self.Instructions:SetFontObject(Sorted12Font)
self:SetFontObject(Sorted12Font)
if not Sorted_IsClassic() then
self:RegisterEvent("GLOBAL_MOUSE_DOWN")
end
_G["SortedFrameSearchBoxClearButton"]:HookScript("OnClick", function(self)
Sorted_FilterItems()
Sorted_ScrollToTop()
end)
if event == "GLOBAL_MOUSE_DOWN" and self:IsShown() then
if not self:IsMouseOver() then
self:ClearFocus()
end
end
InputBoxInstructions_OnTextChanged(self)
Sorted_FilterItems()
Sorted_ScrollToTop()
Sorted_SetSetting("lastSearch", self:GetText())
SortedSortButtons_OnLoad(self)
SortedBankPanel_OnLoad(self)
Sorted.RegisterBackdrop(self.bg)
Sorted_UpdateTimeItemsAdded()
self.Bg:Hide()
Sorted.RegisterBackdrop(self.bg)
self.Bg:Hide()
if not Sorted_IsClassic() then
SmallMoneyFrame_OnLoad(self);
MoneyFrame_SetType(self, "STATIC");
MoneyFrame_Update(self, GetReagentBankCost())
self:RegisterEvent("REAGENTBANK_PURCHASED")
end
self:Hide()