From 4f0e0ae4fbb404130882ad46626cdbd02751baa7 Mon Sep 17 00:00:00 2001 From: Salikh Gurgenidze Date: Tue, 18 Nov 2025 22:20:10 +0400 Subject: [PATCH] icons are replaced everywhere, select character bank added in bankframe --- UI/BagFrame.xml | 4 +- UI/BankFrame.lua | 111 +++++++++++++++++++++++++++++++++++++++++++++++ UI/BankFrame.xml | 47 ++++++++++++++++++++ 3 files changed, 159 insertions(+), 3 deletions(-) diff --git a/UI/BagFrame.xml b/UI/BagFrame.xml index 8f97f90..73aa99b 100644 --- a/UI/BagFrame.xml +++ b/UI/BagFrame.xml @@ -184,9 +184,7 @@ local icon = getglobal(this:GetName().."_Icon") if icon then - -- Use 3D portrait of the player - SetPortraitTexture(icon, "player") - -- Reset TexCoord for portrait (portraits don't need cropping) + icon:SetTexture("Interface\\AddOns\\Guda\\Assets\\All_Characters") icon:SetTexCoord(0, 1, 0, 1) end diff --git a/UI/BankFrame.lua b/UI/BankFrame.lua index 6407ab9..077a42f 100644 --- a/UI/BankFrame.lua +++ b/UI/BankFrame.lua @@ -1088,6 +1088,117 @@ function Guda_BankFrame_ClearBagButtonHighlight() end end +-- Bank character dropdown (similar to BagFrame's bank dropdown) +local bankCharDropdown + +function Guda_BankFrame_ToggleBankDropdown(button) + if bankCharDropdown and bankCharDropdown:IsShown() then + bankCharDropdown:Hide() + return + end + + if not bankCharDropdown then + -- Create dropdown frame + bankCharDropdown = CreateFrame("Frame", "Guda_BankCharDropdown", UIParent) + bankCharDropdown:SetFrameStrata("DIALOG") + bankCharDropdown:SetWidth(200) + bankCharDropdown:SetBackdrop({ + bgFile = "Interface\\Tooltips\\UI-Tooltip-Background", + edgeFile = "Interface\\DialogFrame\\UI-DialogBox-Border", + tile = true, + tileSize = 16, + edgeSize = 16, + insets = { left = 4, right = 4, top = 4, bottom = 4 } + }) + bankCharDropdown:SetBackdropColor(0, 0, 0, 0.95) + bankCharDropdown:EnableMouse(true) + bankCharDropdown:Hide() + + bankCharDropdown.buttons = {} + end + + -- Position dropdown below the button + bankCharDropdown:ClearAllPoints() + bankCharDropdown:SetPoint("TOPLEFT", button, "BOTTOMLEFT", 0, -2) + + -- Clear existing buttons + for _, btn in ipairs(bankCharDropdown.buttons) do + btn:Hide() + end + bankCharDropdown.buttons = {} + + -- Get all characters + local chars = addon.Modules.DB:GetAllCharacters(true) + + local yOffset = -8 + + -- Add character buttons + for _, char in ipairs(chars) do + -- Capture variables in local scope for closure + local charFullName = char.fullName + local charName = char.name + local charMoney = char.money or 0 + local charClassToken = char.classToken + + local charButton = CreateFrame("Button", nil, bankCharDropdown) + charButton:SetWidth(188) + charButton:SetHeight(20) + charButton:SetPoint("TOP", bankCharDropdown, "TOP", 0, yOffset) + + -- Button background on hover + local charBg = charButton:CreateTexture(nil, "BACKGROUND") + charBg:SetAllPoints() + charBg:SetTexture("Interface\\QuestFrame\\UI-QuestTitleHighlight") + charBg:SetBlendMode("ADD") + charBg:SetAlpha(0) + + -- Get class color + local classColor = charClassToken and RAID_CLASS_COLORS[charClassToken] + local r, g, b = 1, 1, 1 + if classColor then + r, g, b = classColor.r, classColor.g, classColor.b + end + + -- Button text + local charText = charButton:CreateFontString(nil, "ARTWORK", "GameFontHighlight") + charText:SetPoint("LEFT", charButton, "LEFT", 8, 0) + charText:SetText(charName) + charText:SetTextColor(r, g, b) + + -- Money text + local moneyText = charButton:CreateFontString(nil, "ARTWORK", "GameFontHighlightSmall") + moneyText:SetPoint("RIGHT", charButton, "RIGHT", -8, 0) + moneyText:SetText(addon.Modules.Utils:FormatMoney(charMoney)) + moneyText:SetTextColor(0.7, 0.7, 0.7) + + -- Button scripts + charButton:SetScript("OnEnter", function() + charBg:SetAlpha(0.3) + end) + charButton:SetScript("OnLeave", function() + charBg:SetAlpha(0) + end) + charButton:SetScript("OnClick", function() + if charFullName then + -- Show bank for this character using the BankFrame module + addon.Modules.BankFrame:ShowCharacter(charFullName) + bankCharDropdown:Hide() + else + addon:Print("Error: Character fullName is nil") + end + end) + + table.insert(bankCharDropdown.buttons, charButton) + yOffset = yOffset - 20 + end + + -- Set dropdown height based on content + bankCharDropdown:SetHeight(math.abs(yOffset) + 8) + + -- Show dropdown + bankCharDropdown:Show() +end + -- Drag handlers for bank bag slots function Guda_BankBagSlot_OnDragStart(button, bagID) if not bagID or bagID == -1 then return end diff --git a/UI/BankFrame.xml b/UI/BankFrame.xml index 58223fb..016fa15 100644 --- a/UI/BankFrame.xml +++ b/UI/BankFrame.xml @@ -202,6 +202,53 @@ + + +