icons are replaced everywhere, select character bank added in bankframe

This commit is contained in:
Salikh Gurgenidze
2025-11-18 22:20:10 +04:00
parent f45547a3d1
commit 4f0e0ae4fb
3 changed files with 159 additions and 3 deletions
+1 -3
View File
@@ -184,9 +184,7 @@
<OnLoad>
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
</OnLoad>
+111
View File
@@ -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
+47
View File
@@ -202,6 +202,53 @@
</Scripts>
</Button>
<!-- Characters Button (header left, next to Blizzard UI button) -->
<Button name="$parent_CharsButton">
<Size>
<AbsDimension x="24" y="24"/>
</Size>
<Anchors>
<Anchor point="LEFT" relativePoint="RIGHT" relativeTo="$parent_BlizzardUIButton">
<Offset>
<AbsDimension x="2" y="0"/>
</Offset>
</Anchor>
</Anchors>
<Layers>
<Layer level="ARTWORK">
<Texture name="$parent_Icon">
<Size>
<AbsDimension x="20" y="20"/>
</Size>
<Anchors>
<Anchor point="CENTER"/>
</Anchors>
<Color r="0.8" g="0.8" b="0.8"/>
</Texture>
</Layer>
</Layers>
<Scripts>
<OnLoad>
local icon = getglobal(this:GetName().."_Icon")
if icon then
icon:SetTexture("Interface\\AddOns\\Guda\\Assets\\All_Characters")
icon:SetTexCoord(0, 1, 0, 1)
end
</OnLoad>
<OnClick>
Guda_BankFrame_ToggleBankDropdown(this)
</OnClick>
<OnEnter>
GameTooltip:SetOwner(this, "ANCHOR_TOP")
GameTooltip:SetText("View Other Characters' Bank")
GameTooltip:Show()
</OnEnter>
<OnLeave>
GameTooltip:Hide()
</OnLeave>
</Scripts>
</Button>
<!-- Search Bar (below title) -->
<Frame name="$parent_SearchBar">
<Size>