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()