From 39588031114c0c9d45345d6f3d820fe62b42b06b Mon Sep 17 00:00:00 2001 From: Salikh Gurgenidze Date: Sun, 16 Nov 2025 19:29:11 +0400 Subject: [PATCH] show other character bag items --- Assets/All_Characters.png | Bin 0 -> 4005 bytes Assets/Bags.png | Bin 0 -> 5985 bytes Assets/Chest.png | Bin 0 -> 6356 bytes Assets/Cog.png | Bin 0 -> 4552 bytes Assets/Sorting.png | Bin 0 -> 10180 bytes UI/BagFrame.lua | 183 +++++++++++++++++++++++++++++++++++++- UI/BagFrame.xml | 19 ++-- UI/ItemButton.lua | 30 ++++++- 8 files changed, 215 insertions(+), 17 deletions(-) create mode 100644 Assets/All_Characters.png create mode 100644 Assets/Bags.png create mode 100644 Assets/Chest.png create mode 100644 Assets/Cog.png create mode 100644 Assets/Sorting.png diff --git a/Assets/All_Characters.png b/Assets/All_Characters.png new file mode 100644 index 0000000000000000000000000000000000000000..fae1f5c516dc764629382f573b162764b5689895 GIT binary patch literal 4005 zcmV;W4_fevP)U=&2ff-EW)64!{X z;aeREW;GI6VM)+RV#W0@Yiqa4s!i5El66rw(S%ftM#ZJXAZ8U-5zrO+l8@1$fpMVc zdwP1h-|MgU?%hA`-1lDhbkFp_=%h+d)vNAz-+lL<^E>CBbMCp_gfWJ%GD+jjzR{OWExW3dbbUC6FF^@}%&AZaOX2-t1=veVFE&wdKDYW2F zv%0+!!HbDf#Hy?0L)Ts5-T3O>-j2)V(MfHjLFp--aPzxNL4>qOhK>lqp+0{_r77vXRi zgpiW&QcBU))rDtYIf*^T2+p*NcEr9p%Xi=I5904#Dqmk30N2j&{#Q>ze@NW_a4Ew> z_gsreBmzm2AW2q05A&tNVE$N)elXm2dg3gYmNdZwjX1gRwAcUZ?u@R52osIQ( zaK%Xy8V)t9JDYB;slOE7zHk8UTO6rA{Hgk)So04rXIS6#O&ErOWHO0NCIem9O$`s_ zkb?nOKunxC5gYEFiMwyIKsbIz+j=Sdec=Eck7`c|;lFna!^YL~kjZ2ajYiSc)rELG zj#MgzTrLO0Fu;tw^)l1VuSD^13mLp7Po9iNR!_myTK>F0Wz4_lZ)+xxmcKDegi0kd zhQZJ`z=e=y0=E-rZEZ!%`EE!O5KJbaswzUE5JI64d_EssE*E4BE(@tNdy*uiV}L9X+%gBa z|5m`M00A!$^m|cLQ-g3g48PwGx7!U_mN|nZA_Jw=bd0fB40k-*f`rN);&&EQU$O1Y zu5_g`T(Si$xhb^ZqtmJF02(L*lA19nJj_qZ7>e;VD8rs(!2VMNx6K7s-wf!6X8Hl) z3*2tE85sy6pp-(Aq#?edzP=s{W_^aY4s$DLZcT3n@QX_27&QPw>m7ah<&2>|sTp7l zSaLludkWX6Qx?6s_Ou+(*$;fs3>=Aa3(4jgc6|i&B?%t-J0Pd$z*rY3rDo`Jxm>3A z2LQw1Ad5c25+>DH{H4;yRilw-Q~-!%rYoLbM=96(_rDFyoD8gQnvYN@G-5Kd^_An; zbBy5qliV~uXlBUf2{tbS44MZay{5NkjKS%2nvM_P;MvDyjKSrw=E>`9RN-(`0Pyvm zUzbn~PzpTpJz(SNd5Agww7#OB-a_t7Yxe&sBl-pQXIi84I1i(5iZ zA_qcx;dDApKcFb3*%ScSG0*8N{DlB;=Yr6;I{NafcFHR{1Z3#LoEzpKS9$%z#(Vh@${S8=i`uq%uoy}!_9DtMO(oX_tNNNT)F9$ZPo{wNKXyxzr zcx_8witme)nMso-;gQwTapNqm!fc*l`vE}90tt;Fl}bU=G&4yOmk?ZBTGpD*=aG+% zIRNdwxs{XwwLyX(-FwBb&aUE#2f>>$V+L-UYx#`#PXc)zNT@(EnS`ck$Y!(1=kosQ4JE!~ zO;=;)B>r7D7!EW8YKAWbRaKG6WRT0{3N)|lI&@vf^RJ)7yC8(> zr>6%gTh8~5dgrrSUh5cDYCB>S=RwqM0drIKVOnFew?_XWu` zgGbXK%Q6hZD2NKb{c{&ye%~6uw%W0KG{RQ|03qD@O|B(ayXv|j00?15L#2`#hhl{~ zQ3^{Ez6^XW6_O+&m&=*HV_;wa{i-!)O+b168}+V3qhbUj0I=z2{$+o6sy^2~{eOw*z30^%WoJQ|s&;0l3 z%pVxR2iP|M5+qA}Zr!jx#k}2d4KKYXWB13F z@Kftt=+gHg(201!_R^!N7{FfW9ploo_3k+_IY`}cCm3>TIo z?o_z;6&Y|SfXl(t;Z!=0*Z)t(+s6w1%IBR~oIID_(cGF|vvN^*_LujyT+)#bnhLv>{B`PC2!RZaIXIk1azZ7+Pp>;wCblsNa*>ZFtXz??9o1K!$ zBx1eReQl6~Fd+!kg&c@PBJg^>*to(CzsE}Tb9o?@0Y1Gz@L9}y|9Dh;TTRm+En65m zFs9rwLDkKWPez)@sUfyT5FP;nd-P{8F zem{IZAKY#?s;a8+ll$w;eqy{tB7x_3w&K$Z`~U?2qOr_>A_nLN7Hzt#et$U!IU)cv z8e9iIZcfGgUb$i0I|f4j^Vs}dD{B!#loM_^B7`83NFbHA`iK1lQzC%d2~>Gxc)eaY z91e3!T;JG*2@gJ{S&nDGy&+k+Khr?mk1w?H?gi|{Zf+CR!HZ?in zbGKm2pDhr2`t!H1T{7XL-|gzk7Qa(bJz&;U&z9)L%%j07x#73}V*rR_;|jT?U?XYX zZYjxR67iJv%{+KQ%VzEYpa6{Gu|uH{ez5W?-W2IV`#d_IqKI?YSvvTW7|hpQL^KqwT##-`cm9XO5G4)Q){W7%KI5=j8qX75|^ z!N{B$-k(tCRKbosMuHpB434Z^MCA{B5aK0008T97aJTRc~?QSBG zfU2ryCMZBq6s6!(T#BNgrltl{Y71pZYR2Cb%Qd0}Y`UwSoNLc6JR8gWjM>WEZ+^_+ zaS=SSYUmIJTje53BvtJA0QghUd2TYz1~)+j&27MKb9qK+&hzuj-Nbu+Ye1IaW$H<&#c$ms^M`5rTatgfyea&AyO9%BrFKmfJ2 zh;2|dyQM9&9>A8009d&wJnLwSy3a894sAf?+1$e`2oxE3;LeHW39ns<;egn5myDo~ z+qrIVP*Z7w(`~^1Q`R`AK4(a%1hqkK4UP3cCf9EkM(iMznooeB6zvYwjL~SnFAKoR zMd52cJe4}38w>-3W$=er06sUt152hO5C{yJxLkO$liTgakMFlCEB0h&+Z$(b>T`k} z2RR5Adl@eF0_hx&4l^47Evq4yyNGl;jjF0DI2?|Wa|!@5xx#iWLkkX0N&+B+H*CWH z)4jlh%Vwaux_U@|k?IQXT#kxM+I9fK;V^#uKnQ((eV94v9DcFgvW8DDFl2HB0WUC+ z1`?`{x?~r^{yum-9w>@ZpbUF)=JvV3p%#WyZTz{Kq0@&2VB@Mf(w{P}GYkfC0P^^1 z;0G(N9HMo*)3MhAitG3GXasrPQj9@aLEU}`0O#AYw=}n=|0o>Zv+5e?#!39^i@aUSG8{NfaJGXW>?h{Qvd;}T6@pSLPn7Xm+AXEIol<96 z05+_sle_!%?@-E+)C{a$%!LnyLS~;*3=cI9zN$&bHugQ2|- z=vN6O!hdrh5kQg%MqtCFNKpBU{k{NzmJ6Ac7rS$h@#+sSr55J7pJ3K5kPxQSnP4dr zreC}~N*#F-LQqpvgNcJDeO6Hx;0Dh?2iqzkN)ek{=lsp=X`Y{#1whNtMmBiXzw8EJ z{oQlSFjFjKaZOOPi~67a-u~PUVky9i!CimPJbd1D1i#+RAW7WRC)PN2T|2|Gu`rHImLpM+Vqrjf`W>*UrOjw$xI|Dzyl;gkjc>r z+yA%sLZtu3sKy+@n#;jABc;~xa8&9vw^-0p#gS4ZKoH-#=>wS@tsC~mQBVN@ z=`5YfCmY<13=EiBE64C~<}64oiBkPUMYvSiTmYbE#654z>Fm+nLB<&tJC z-YX?UsqdALJ()>p#5^bg0LqwS__r&k0stsQj1V*gt7PcZz}7bh&65C>5lBR6v9trE z!^mhq`4Ro3GRDB4Gjm=L;82UG6cH#g8B*H1R4M=^ zaaBD@r1W4;XH{c0$ym^E$;{=@xcz77uZ6zyf1CRnfbnKvyy^b|jqn|9K?pSm00000 LNkvXXu0mjf-Lr)r literal 0 HcmV?d00001 diff --git a/Assets/Bags.png b/Assets/Bags.png new file mode 100644 index 0000000000000000000000000000000000000000..8f3c1cab3c5481213055a6e88b52a7179e3f4b90 GIT binary patch literal 5985 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 P00000NkvXXu0mjft9H!c literal 0 HcmV?d00001 diff --git a/Assets/Chest.png b/Assets/Chest.png new file mode 100644 index 0000000000000000000000000000000000000000..b85b37a3a4b6fd421cd145d5168d3089fd54a664 GIT binary patch literal 6356 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 Wt0{f=ZlhHI00003q987SfTJdsGU5i# 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 vyC+2JC3YE1n 0 then - local bag = bagData[bagID] - -- Iterate through ALL slots (1 to numSlots) to show empty slots too for slot = 1, numSlots do local itemData = bag and bag.slots and bag.slots[slot] or nil @@ -527,6 +534,164 @@ function Guda_BagFrame_MoneyOnEnter(self) GameTooltip:Show() end +-- Character dropdown management +local characterDropdown = nil + +-- Toggle character dropdown +function Guda_BagFrame_ToggleCharacterDropdown(button) + if characterDropdown and characterDropdown:IsShown() then + characterDropdown:Hide() + return + end + + if not characterDropdown then + -- Create dropdown frame + characterDropdown = CreateFrame("Frame", "Guda_CharacterDropdown", UIParent) + characterDropdown:SetFrameStrata("DIALOG") + characterDropdown:SetWidth(200) + characterDropdown: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 } + }) + characterDropdown:SetBackdropColor(0, 0, 0, 0.95) + characterDropdown:EnableMouse(true) + characterDropdown:Hide() + + characterDropdown.buttons = {} + end + + -- Position dropdown below the button + characterDropdown:ClearAllPoints() + characterDropdown:SetPoint("TOPLEFT", button, "BOTTOMLEFT", 0, -2) + + -- Clear existing buttons + for _, btn in ipairs(characterDropdown.buttons) do + btn:Hide() + end + characterDropdown.buttons = {} + + -- Get all characters + local chars = addon.Modules.DB:GetAllCharacters(true) + + -- Add "Current Character" option at the top + local yOffset = -8 + local currentCharButton = CreateFrame("Button", nil, characterDropdown) + currentCharButton:SetWidth(188) + currentCharButton:SetHeight(20) + currentCharButton:SetPoint("TOP", characterDropdown, "TOP", 0, yOffset) + + -- Button background on hover + local currentCharBg = currentCharButton:CreateTexture(nil, "BACKGROUND") + currentCharBg:SetAllPoints() + currentCharBg:SetTexture("Interface\\QuestFrame\\UI-QuestTitleHighlight") + currentCharBg:SetBlendMode("ADD") + currentCharBg:SetAlpha(0) + + -- Button text + local currentCharText = currentCharButton:CreateFontString(nil, "ARTWORK", "GameFontHighlight") + currentCharText:SetPoint("LEFT", currentCharButton, "LEFT", 8, 0) + currentCharText:SetText("Current Character") + + -- Button scripts + currentCharButton:SetScript("OnEnter", function() + currentCharBg:SetAlpha(0.3) + end) + currentCharButton:SetScript("OnLeave", function() + currentCharBg:SetAlpha(0) + end) + currentCharButton:SetScript("OnClick", function() + addon.Modules.BagFrame:ShowCurrentCharacter() + characterDropdown:Hide() + end) + + table.insert(characterDropdown.buttons, currentCharButton) + yOffset = yOffset - 20 + + -- Add separator + local separator = characterDropdown:CreateTexture(nil, "ARTWORK") + separator:SetHeight(1) + separator:SetWidth(180) + separator:SetPoint("TOP", characterDropdown, "TOP", 0, yOffset) + separator:SetTexture(1, 1, 1, 0.2) + yOffset = yOffset - 4 + + -- 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, characterDropdown) + charButton:SetWidth(188) + charButton:SetHeight(20) + charButton:SetPoint("TOP", characterDropdown, "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 + addon.Modules.BagFrame:ShowCharacter(charFullName) + characterDropdown:Hide() + else + addon:Print("Error: Character fullName is nil") + end + end) + + table.insert(characterDropdown.buttons, charButton) + yOffset = yOffset - 20 + end + + -- Set dropdown height based on content + characterDropdown:SetHeight(math.abs(yOffset) + 8) + + -- Show dropdown + characterDropdown:Show() +end + +-- Hide dropdown when clicking elsewhere +local function HideCharacterDropdown() + if characterDropdown then + characterDropdown:Hide() + end +end + -- Search changed handler function Guda_BagFrame_OnSearchChanged(self) local text = self:GetText() @@ -786,5 +951,17 @@ function BagFrame:Initialize() BagFrame:UpdateMoney() end, "BagFrame") + -- Hide character dropdown when clicking on bag frame + local bagFrame = getglobal("Guda_BagFrame") + if bagFrame then + local originalOnMouseDown = bagFrame:GetScript("OnMouseDown") + bagFrame:SetScript("OnMouseDown", function() + HideCharacterDropdown() + if originalOnMouseDown then + originalOnMouseDown() + end + end) + end + addon:Debug("Bag frame initialized") end diff --git a/UI/BagFrame.xml b/UI/BagFrame.xml index 7c8b782..5b19eeb 100644 --- a/UI/BagFrame.xml +++ b/UI/BagFrame.xml @@ -110,11 +110,10 @@ - -- Placeholder: Set texture file path here local icon = getglobal(this:GetName().."_Icon") if icon then - icon:SetTexture("Interface\\Icons\\INV_Misc_Note_01") - icon:SetTexCoord(0.08, 0.92, 0.08, 0.92) + icon:SetTexture("Interface\\AddOns\\Guda\\Assets\\Sorting.png") + icon:SetTexCoord(0, 1, 0, 1) end @@ -160,12 +159,12 @@ local icon = getglobal(this:GetName().."_Icon") if icon then - icon:SetTexture("Interface\\Icons\\INV_Misc_GroupNeedMore") - icon:SetTexCoord(0.08, 0.92, 0.08, 0.92) + icon:SetTexture("Interface\\AddOns\\Guda\\Assets\\All_Characters.png") + icon:SetTexCoord(0, 1, 0, 1) end - Guda_CharacterSelector:Toggle() + Guda_BagFrame_ToggleCharacterDropdown(this) GameTooltip:SetOwner(this, "ANCHOR_TOP") @@ -207,8 +206,8 @@ local icon = getglobal(this:GetName().."_Icon") if icon then - icon:SetTexture("Interface\\Icons\\INV_Misc_Bag_09") - icon:SetTexCoord(0.08, 0.92, 0.08, 0.92) + icon:SetTexture("Interface\\AddOns\\Guda\\Assets\\Chest.png") + icon:SetTexCoord(0, 1, 0, 1) end @@ -254,8 +253,8 @@ local icon = getglobal(this:GetName().."_Icon") if icon then - icon:SetTexture("Interface\\Icons\\Trade_Engineering") - icon:SetTexCoord(0.08, 0.92, 0.08, 0.92) + icon:SetTexture("Interface\\AddOns\\Guda\\Assets\\Cog.png") + icon:SetTexCoord(0, 1, 0, 1) end diff --git a/UI/ItemButton.lua b/UI/ItemButton.lua index f6f2e9d..4933a48 100644 --- a/UI/ItemButton.lua +++ b/UI/ItemButton.lua @@ -250,11 +250,33 @@ function Guda_ItemButton_OnEnter(self) GameTooltip:SetOwner(self, "ANCHOR_RIGHT") if self.otherChar then - -- Viewing another character's item + -- Viewing another character's item - show full tooltip like the original if self.itemData.link then - GameTooltip:SetHyperlink(self.itemData.link) - GameTooltip:AddLine(" ") - GameTooltip:AddLine("|cFFFFFFFFOwned by: |cFF00FF96" .. self.otherChar .. "|r", 1, 1, 1) + -- Extract the hyperlink from the full item link + -- Item links are in format: |cFFFFFFFF|Hitem:1234:0:0:0|h[Item Name]|h|r + -- SetHyperlink needs just: item:1234:0:0:0 + local _, _, hyperlink = strfind(self.itemData.link, "|H(.+)|h") + + if hyperlink then + GameTooltip:SetHyperlink(hyperlink) + -- Add "Owned by" line after the original tooltip + GameTooltip:AddLine(" ") + GameTooltip:AddLine("|cFFFFFFFFOwned by: |cFF00FF96" .. self.otherChar .. "|r", 1, 1, 1) + else + -- Fallback: try the full link + local success, err = pcall(function() + GameTooltip:SetHyperlink(self.itemData.link) + end) + + if success then + GameTooltip:AddLine(" ") + GameTooltip:AddLine("|cFFFFFFFFOwned by: |cFF00FF96" .. self.otherChar .. "|r", 1, 1, 1) + else + -- Last resort: show item name + GameTooltip:AddLine(self.itemData.name or "Unknown Item", 1, 1, 1) + GameTooltip:AddLine("|cFFFFFFFFOwned by: |cFF00FF96" .. self.otherChar .. "|r", 1, 1, 1) + end + end end else -- Current character's item