feat: track items for grinding
This commit is contained in:
@@ -45,6 +45,8 @@ function DB:Initialize()
|
|||||||
hoverBagline = false,
|
hoverBagline = false,
|
||||||
hideFooter = false,
|
hideFooter = false,
|
||||||
bgTransparency = 0.15,
|
bgTransparency = 0.15,
|
||||||
|
showTrackedItems = false,
|
||||||
|
trackedItems = {},
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
end
|
end
|
||||||
@@ -67,6 +69,12 @@ function DB:Initialize()
|
|||||||
if Guda_CharDB.settings.showQuestBar == nil then
|
if Guda_CharDB.settings.showQuestBar == nil then
|
||||||
Guda_CharDB.settings.showQuestBar = true
|
Guda_CharDB.settings.showQuestBar = true
|
||||||
end
|
end
|
||||||
|
if Guda_CharDB.settings.showTrackedItems == nil then
|
||||||
|
Guda_CharDB.settings.showTrackedItems = false
|
||||||
|
end
|
||||||
|
if Guda_CharDB.settings.trackedItems == nil then
|
||||||
|
Guda_CharDB.settings.trackedItems = {}
|
||||||
|
end
|
||||||
if not Guda_CharDB.settings.bagColumns then
|
if not Guda_CharDB.settings.bagColumns then
|
||||||
Guda_CharDB.settings.bagColumns = 10
|
Guda_CharDB.settings.bagColumns = 10
|
||||||
end
|
end
|
||||||
|
|||||||
@@ -108,6 +108,7 @@ addon.Modules = {
|
|||||||
BagFrame = {},
|
BagFrame = {},
|
||||||
BankFrame = {},
|
BankFrame = {},
|
||||||
QuestItemBar = {},
|
QuestItemBar = {},
|
||||||
|
TrackedItemBar = {},
|
||||||
SettingsPopup = {},
|
SettingsPopup = {},
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -40,6 +40,15 @@ function Main:Initialize()
|
|||||||
addon:Error("QuestItemBar module file failed to load (isLoaded is nil)!")
|
addon:Error("QuestItemBar module file failed to load (isLoaded is nil)!")
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
addon:Debug("Checking TrackedItemBar module...")
|
||||||
|
if addon.Modules.TrackedItemBar and addon.Modules.TrackedItemBar.isLoaded then
|
||||||
|
addon:Debug("TrackedItemBar module found and loaded, initializing...")
|
||||||
|
local success, err = pcall(function() addon.Modules.TrackedItemBar:Initialize() end)
|
||||||
|
if not success then
|
||||||
|
addon:Error("Failed to initialize TrackedItemBar: %s", tostring(err))
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
addon.Modules.SettingsPopup:Initialize()
|
addon.Modules.SettingsPopup:Initialize()
|
||||||
|
|
||||||
@@ -114,6 +123,14 @@ function Main:SetupSlashCommands()
|
|||||||
addon.Modules.QuestItemBar:Update()
|
addon.Modules.QuestItemBar:Update()
|
||||||
addon:Print("Quest bar: %s", show and "ON" or "OFF")
|
addon:Print("Quest bar: %s", show and "ON" or "OFF")
|
||||||
|
|
||||||
|
elseif msg == "track" then
|
||||||
|
-- Toggle tracked items
|
||||||
|
local show = not addon.Modules.DB:GetSetting("showTrackedItems")
|
||||||
|
addon.Modules.DB:SetSetting("showTrackedItems", show)
|
||||||
|
if addon.Modules.TrackedItemBar then addon.Modules.TrackedItemBar:Update() end
|
||||||
|
if addon.Modules.BagFrame then addon.Modules.BagFrame:Update() end
|
||||||
|
addon:Print("Track items: %s", show and "ON" or "OFF")
|
||||||
|
|
||||||
elseif msg == "cleanup" then
|
elseif msg == "cleanup" then
|
||||||
-- Cleanup old characters
|
-- Cleanup old characters
|
||||||
addon.Modules.DB:CleanupOldCharacters()
|
addon.Modules.DB:CleanupOldCharacters()
|
||||||
@@ -125,6 +142,7 @@ function Main:SetupSlashCommands()
|
|||||||
addon:Print("/guda bank - Toggle bank")
|
addon:Print("/guda bank - Toggle bank")
|
||||||
addon:Print("/guda sort - Sort bags")
|
addon:Print("/guda sort - Sort bags")
|
||||||
addon:Print("/guda sortbank - Sort bank")
|
addon:Print("/guda sortbank - Sort bank")
|
||||||
|
addon:Print("/guda track - Toggle item tracking")
|
||||||
addon:Print("/guda debug - Toggle debug mode")
|
addon:Print("/guda debug - Toggle debug mode")
|
||||||
addon:Print("/guda cleanup - Remove old characters")
|
addon:Print("/guda cleanup - Remove old characters")
|
||||||
|
|
||||||
|
|||||||
@@ -26,6 +26,7 @@ UI\ItemButton.lua
|
|||||||
UI\BagFrame.lua
|
UI\BagFrame.lua
|
||||||
UI\BankFrame.lua
|
UI\BankFrame.lua
|
||||||
UI\QuestItemBar.lua
|
UI\QuestItemBar.lua
|
||||||
|
UI\TrackedItemBar.lua
|
||||||
UI\SettingsPopup.lua
|
UI\SettingsPopup.lua
|
||||||
UI\ItemButton.xml
|
UI\ItemButton.xml
|
||||||
UI\BagFrame.xml
|
UI\BagFrame.xml
|
||||||
|
|||||||
@@ -540,6 +540,27 @@ function Guda_ItemButton_SetItem(self, bagID, slotID, itemData, isBank, otherCha
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
-- Update tracking checkmark
|
||||||
|
local check = getglobal(self:GetName().."_Check")
|
||||||
|
if check then
|
||||||
|
local isTracked = false
|
||||||
|
if self.hasItem and addon.Modules.DB:GetSetting("showTrackedItems") then
|
||||||
|
local itemID = addon.Modules.Utils:ExtractItemID(self.itemData and self.itemData.link)
|
||||||
|
if itemID then
|
||||||
|
local trackedItems = addon.Modules.DB:GetSetting("trackedItems") or {}
|
||||||
|
if trackedItems[itemID] then
|
||||||
|
isTracked = true
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
if isTracked then
|
||||||
|
check:Show()
|
||||||
|
else
|
||||||
|
check:Hide()
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
-- Resize empty slot background to match icon size (slightly larger to ensure coverage)
|
-- Resize empty slot background to match icon size (slightly larger to ensure coverage)
|
||||||
if emptySlotBg then
|
if emptySlotBg then
|
||||||
emptySlotBg:ClearAllPoints()
|
emptySlotBg:ClearAllPoints()
|
||||||
@@ -746,6 +767,38 @@ function Guda_ItemButton_SetItem(self, bagID, slotID, itemData, isBank, otherCha
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
-- Handle tracking toggle on click
|
||||||
|
if not self.isReadOnly and not self.otherChar then
|
||||||
|
local old_OnClick = self:GetScript("OnClick")
|
||||||
|
self:SetScript("OnClick", function()
|
||||||
|
if IsControlKeyDown() and addon.Modules.DB:GetSetting("showTrackedItems") then
|
||||||
|
local itemID = addon.Modules.Utils:ExtractItemID(GetContainerItemLink(this:GetParent():GetID(), this:GetID()))
|
||||||
|
if itemID then
|
||||||
|
local trackedItems = addon.Modules.DB:GetSetting("trackedItems") or {}
|
||||||
|
if trackedItems[itemID] then
|
||||||
|
trackedItems[itemID] = nil
|
||||||
|
else
|
||||||
|
trackedItems[itemID] = true
|
||||||
|
end
|
||||||
|
addon.Modules.DB:SetSetting("trackedItems", trackedItems)
|
||||||
|
|
||||||
|
-- Update all item buttons
|
||||||
|
if Guda.Modules.BagFrame and Guda.Modules.BagFrame.Update then
|
||||||
|
Guda.Modules.BagFrame:Update()
|
||||||
|
end
|
||||||
|
if Guda.Modules.BankFrame and Guda.Modules.BankFrame.Update then
|
||||||
|
Guda.Modules.BankFrame:Update()
|
||||||
|
end
|
||||||
|
if Guda.Modules.TrackedItemBar and Guda.Modules.TrackedItemBar.Update then
|
||||||
|
Guda.Modules.TrackedItemBar:Update()
|
||||||
|
end
|
||||||
|
end
|
||||||
|
elseif old_OnClick then
|
||||||
|
old_OnClick()
|
||||||
|
end
|
||||||
|
end)
|
||||||
|
end
|
||||||
|
|
||||||
self:Show()
|
self:Show()
|
||||||
else
|
else
|
||||||
self.hasItem = false
|
self.hasItem = false
|
||||||
|
|||||||
@@ -28,6 +28,14 @@
|
|||||||
</Anchor>
|
</Anchor>
|
||||||
</Anchors>
|
</Anchors>
|
||||||
</FontString>
|
</FontString>
|
||||||
|
<Texture name="$parent_Check" file="Interface\Buttons\UI-CheckBox-Check" hidden="true">
|
||||||
|
<Size>
|
||||||
|
<AbsDimension x="24" y="24"/>
|
||||||
|
</Size>
|
||||||
|
<Anchors>
|
||||||
|
<Anchor point="CENTER"/>
|
||||||
|
</Anchors>
|
||||||
|
</Texture>
|
||||||
</Layer>
|
</Layer>
|
||||||
</Layers>
|
</Layers>
|
||||||
|
|
||||||
|
|||||||
@@ -65,6 +65,10 @@ function Guda_SettingsPopup_OnShow(self)
|
|||||||
if hoverBagline == nil then
|
if hoverBagline == nil then
|
||||||
hoverBagline = false
|
hoverBagline = false
|
||||||
end
|
end
|
||||||
|
local showTrackedItems = Guda.Modules.DB:GetSetting("showTrackedItems")
|
||||||
|
if showTrackedItems == nil then
|
||||||
|
showTrackedItems = false
|
||||||
|
end
|
||||||
local bgTransparency = Guda.Modules.DB:GetSetting("bgTransparency") or 0.15
|
local bgTransparency = Guda.Modules.DB:GetSetting("bgTransparency") or 0.15
|
||||||
|
|
||||||
-- Update sliders and checkboxes
|
-- Update sliders and checkboxes
|
||||||
@@ -81,6 +85,7 @@ function Guda_SettingsPopup_OnShow(self)
|
|||||||
local showSearchBarCheckbox = getglobal("Guda_SettingsPopup_ShowSearchBarCheckbox")
|
local showSearchBarCheckbox = getglobal("Guda_SettingsPopup_ShowSearchBarCheckbox")
|
||||||
local showQuestBarCheckbox = getglobal("Guda_SettingsPopup_ShowQuestBarCheckbox")
|
local showQuestBarCheckbox = getglobal("Guda_SettingsPopup_ShowQuestBarCheckbox")
|
||||||
local hoverBaglineCheckbox = getglobal("Guda_SettingsPopup_HoverBaglineCheckbox")
|
local hoverBaglineCheckbox = getglobal("Guda_SettingsPopup_HoverBaglineCheckbox")
|
||||||
|
local showTrackedItemsCheckbox = getglobal("Guda_SettingsPopup_ShowTrackedItemsCheckbox")
|
||||||
|
|
||||||
if bagSlider then
|
if bagSlider then
|
||||||
bagSlider:SetValue(bagColumns)
|
bagSlider:SetValue(bagColumns)
|
||||||
@@ -134,6 +139,10 @@ function Guda_SettingsPopup_OnShow(self)
|
|||||||
hoverBaglineCheckbox:SetChecked(hoverBagline and 1 or 0)
|
hoverBaglineCheckbox:SetChecked(hoverBagline and 1 or 0)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
if showTrackedItemsCheckbox then
|
||||||
|
showTrackedItemsCheckbox:SetChecked(showTrackedItems and 1 or 0)
|
||||||
|
end
|
||||||
|
|
||||||
-- Update display (might be too tall for current frame size)
|
-- Update display (might be too tall for current frame size)
|
||||||
local frame = getglobal("Guda_SettingsPopup")
|
local frame = getglobal("Guda_SettingsPopup")
|
||||||
if frame then
|
if frame then
|
||||||
@@ -809,3 +818,28 @@ end
|
|||||||
function SettingsPopup:Initialize()
|
function SettingsPopup:Initialize()
|
||||||
Guda:Debug("Settings popup initialized")
|
Guda:Debug("Settings popup initialized")
|
||||||
end
|
end
|
||||||
|
|
||||||
|
-- Show Tracked Items Checkbox OnLoad
|
||||||
|
function Guda_SettingsPopup_ShowTrackedItemsCheckbox_OnLoad(self)
|
||||||
|
getglobal(self:GetName().."Text"):SetText("Track items")
|
||||||
|
local currentValue = Guda.Modules.DB:GetSetting("showTrackedItems")
|
||||||
|
if currentValue == nil then
|
||||||
|
currentValue = false
|
||||||
|
end
|
||||||
|
self:SetChecked(currentValue and 1 or 0)
|
||||||
|
end
|
||||||
|
|
||||||
|
-- Show Tracked Items Checkbox OnClick
|
||||||
|
function Guda_SettingsPopup_ShowTrackedItemsCheckbox_OnClick(self)
|
||||||
|
local isChecked = self:GetChecked()
|
||||||
|
Guda.Modules.DB:SetSetting("showTrackedItems", isChecked == 1)
|
||||||
|
|
||||||
|
if Guda.Modules.TrackedItemBar and Guda.Modules.TrackedItemBar.Update then
|
||||||
|
Guda.Modules.TrackedItemBar:Update()
|
||||||
|
end
|
||||||
|
|
||||||
|
-- Refresh bag frame to show/hide checkmarks
|
||||||
|
if Guda.Modules.BagFrame and Guda.Modules.BagFrame.Update then
|
||||||
|
Guda.Modules.BagFrame:Update()
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|||||||
@@ -342,6 +342,25 @@
|
|||||||
</OnClick>
|
</OnClick>
|
||||||
</Scripts>
|
</Scripts>
|
||||||
</CheckButton>
|
</CheckButton>
|
||||||
|
|
||||||
|
<!-- Show Tracked Items Checkbox -->
|
||||||
|
<CheckButton name="$parent_ShowTrackedItemsCheckbox" inherits="OptionsCheckButtonTemplate">
|
||||||
|
<Anchors>
|
||||||
|
<Anchor point="TOP" relativePoint="BOTTOM" relativeTo="$parent_HoverBaglineCheckbox">
|
||||||
|
<Offset>
|
||||||
|
<AbsDimension x="0" y="-8"/>
|
||||||
|
</Offset>
|
||||||
|
</Anchor>
|
||||||
|
</Anchors>
|
||||||
|
<Scripts>
|
||||||
|
<OnLoad>
|
||||||
|
Guda_SettingsPopup_ShowTrackedItemsCheckbox_OnLoad(this)
|
||||||
|
</OnLoad>
|
||||||
|
<OnClick>
|
||||||
|
Guda_SettingsPopup_ShowTrackedItemsCheckbox_OnClick(this)
|
||||||
|
</OnClick>
|
||||||
|
</Scripts>
|
||||||
|
</CheckButton>
|
||||||
</Frames>
|
</Frames>
|
||||||
|
|
||||||
<Scripts>
|
<Scripts>
|
||||||
|
|||||||
@@ -0,0 +1,207 @@
|
|||||||
|
-- Guda Tracked Item Bar
|
||||||
|
-- Displays tracked items with their total bag count
|
||||||
|
|
||||||
|
local addon = Guda
|
||||||
|
local TrackedItemBar = addon.Modules.TrackedItemBar
|
||||||
|
if not TrackedItemBar then
|
||||||
|
TrackedItemBar = {}
|
||||||
|
addon.Modules.TrackedItemBar = TrackedItemBar
|
||||||
|
end
|
||||||
|
|
||||||
|
local buttons = {}
|
||||||
|
local trackedItemsInfo = {}
|
||||||
|
|
||||||
|
-- Create a hidden tooltip for scanning if needed (though we mostly use itemID)
|
||||||
|
local scanTooltip
|
||||||
|
local function GetScanTooltip()
|
||||||
|
if not scanTooltip then
|
||||||
|
scanTooltip = CreateFrame("GameTooltip", "Guda_TrackedBarScanTooltip", nil, "GameTooltipTemplate")
|
||||||
|
scanTooltip:SetOwner(WorldFrame, "ANCHOR_NONE")
|
||||||
|
end
|
||||||
|
return scanTooltip
|
||||||
|
end
|
||||||
|
|
||||||
|
-- Scan bags for tracked items and calculate total counts
|
||||||
|
function TrackedItemBar:ScanForTrackedItems()
|
||||||
|
trackedItemsInfo = {}
|
||||||
|
local trackedIDs = addon.Modules.DB:GetSetting("trackedItems") or {}
|
||||||
|
|
||||||
|
local itemCounts = {}
|
||||||
|
local itemTextures = {}
|
||||||
|
local itemLinks = {}
|
||||||
|
local itemOrder = {}
|
||||||
|
|
||||||
|
-- Scan backpack and 4 bags
|
||||||
|
for bagID = 0, 4 do
|
||||||
|
local numSlots = GetContainerNumSlots(bagID)
|
||||||
|
for slotID = 1, numSlots do
|
||||||
|
local texture, count = GetContainerItemInfo(bagID, slotID)
|
||||||
|
if texture then
|
||||||
|
local link = GetContainerItemLink(bagID, slotID)
|
||||||
|
local id = addon.Modules.Utils:ExtractItemID(link)
|
||||||
|
if id and trackedIDs[id] then
|
||||||
|
if not itemCounts[id] then
|
||||||
|
itemCounts[id] = 0
|
||||||
|
itemTextures[id] = texture
|
||||||
|
itemLinks[id] = link
|
||||||
|
table.insert(itemOrder, id)
|
||||||
|
end
|
||||||
|
itemCounts[id] = itemCounts[id] + count
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
for _, id in ipairs(itemOrder) do
|
||||||
|
table.insert(trackedItemsInfo, {
|
||||||
|
itemID = id,
|
||||||
|
texture = itemTextures[id],
|
||||||
|
count = itemCounts[id],
|
||||||
|
link = itemLinks[id]
|
||||||
|
})
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
-- Update the bar buttons
|
||||||
|
function TrackedItemBar:Update()
|
||||||
|
local showTrackedItems = addon.Modules.DB:GetSetting("showTrackedItems")
|
||||||
|
local frame = Guda_TrackedItemBar
|
||||||
|
|
||||||
|
if showTrackedItems == false then
|
||||||
|
if frame then frame:Hide() end
|
||||||
|
return
|
||||||
|
end
|
||||||
|
|
||||||
|
if not frame then return end
|
||||||
|
frame:Show()
|
||||||
|
|
||||||
|
self:ScanForTrackedItems()
|
||||||
|
|
||||||
|
local buttonSize = 37
|
||||||
|
local spacing = 2
|
||||||
|
local xOffset = 5
|
||||||
|
|
||||||
|
-- Hide all buttons initially
|
||||||
|
for _, btn in ipairs(buttons) do
|
||||||
|
btn:Hide()
|
||||||
|
end
|
||||||
|
|
||||||
|
for i, info in ipairs(trackedItemsInfo) do
|
||||||
|
local button = buttons[i]
|
||||||
|
if not button then
|
||||||
|
button = CreateFrame("Button", "Guda_TrackedItemBarButton" .. i, frame, "Guda_ItemButtonTemplate")
|
||||||
|
table.insert(buttons, button)
|
||||||
|
|
||||||
|
button:RegisterForDrag("LeftButton")
|
||||||
|
button:SetScript("OnDragStart", function()
|
||||||
|
if IsShiftKeyDown() then
|
||||||
|
this:GetParent():StartMoving()
|
||||||
|
this:GetParent().isMoving = true
|
||||||
|
end
|
||||||
|
end)
|
||||||
|
button:SetScript("OnDragStop", function()
|
||||||
|
local parent = this:GetParent()
|
||||||
|
if parent.isMoving then
|
||||||
|
parent:StopMovingOrSizing()
|
||||||
|
parent.isMoving = false
|
||||||
|
local point, _, relativePoint, x, y = parent:GetPoint()
|
||||||
|
addon.Modules.DB:SetSetting("trackedBarPosition", {point = point, relativePoint = relativePoint, x = x, y = y})
|
||||||
|
end
|
||||||
|
end)
|
||||||
|
end
|
||||||
|
|
||||||
|
button.hasItem = true
|
||||||
|
button.itemData = { link = info.link }
|
||||||
|
button.isReadOnly = true -- Don't allow regular clicks/interaction like usage?
|
||||||
|
-- Actually user didn't specify usage, but "action bar type" suggests it might be usable.
|
||||||
|
-- But "tracked items" usually means materials or currencies.
|
||||||
|
|
||||||
|
local icon = getglobal(button:GetName() .. "IconTexture")
|
||||||
|
icon:SetTexture(info.texture)
|
||||||
|
icon:SetVertexColor(1.0, 1.0, 1.0, 1.0)
|
||||||
|
|
||||||
|
local countText = getglobal(button:GetName() .. "Count")
|
||||||
|
countText:SetText(info.count)
|
||||||
|
countText:Show()
|
||||||
|
|
||||||
|
button:SetScript("OnClick", function()
|
||||||
|
if IsControlKeyDown() then
|
||||||
|
-- Un-track item
|
||||||
|
local trackedIDs = addon.Modules.DB:GetSetting("trackedItems") or {}
|
||||||
|
trackedIDs[info.itemID] = nil
|
||||||
|
addon.Modules.DB:SetSetting("trackedItems", trackedIDs)
|
||||||
|
|
||||||
|
-- Update everything
|
||||||
|
if Guda.Modules.BagFrame and Guda.Modules.BagFrame.Update then
|
||||||
|
Guda.Modules.BagFrame:Update()
|
||||||
|
end
|
||||||
|
TrackedItemBar:Update()
|
||||||
|
end
|
||||||
|
end)
|
||||||
|
|
||||||
|
button:SetScript("OnEnter", function()
|
||||||
|
Guda_ItemButton_OnEnter(this)
|
||||||
|
end)
|
||||||
|
|
||||||
|
button:SetScript("OnLeave", function()
|
||||||
|
Guda_ItemButton_OnLeave(this)
|
||||||
|
end)
|
||||||
|
|
||||||
|
button:ClearAllPoints()
|
||||||
|
button:SetPoint("LEFT", frame, "LEFT", xOffset + (i-1) * (buttonSize + spacing), 0)
|
||||||
|
button:Show()
|
||||||
|
end
|
||||||
|
|
||||||
|
local numItems = table.getn(trackedItemsInfo)
|
||||||
|
if numItems > 0 then
|
||||||
|
local newWidth = xOffset * 2 + numItems * (buttonSize + spacing) - spacing
|
||||||
|
frame:SetWidth(newWidth)
|
||||||
|
frame:Show()
|
||||||
|
else
|
||||||
|
frame:Hide()
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
function TrackedItemBar:Initialize()
|
||||||
|
local frame = CreateFrame("Frame", "Guda_TrackedItemBar", UIParent)
|
||||||
|
frame:SetWidth(40)
|
||||||
|
frame:SetHeight(45)
|
||||||
|
frame:SetPoint("BOTTOM", UIParent, "BOTTOM", 0, 200) -- Default above quest bar
|
||||||
|
frame:EnableMouse(true)
|
||||||
|
frame:SetMovable(true)
|
||||||
|
frame:SetClampedToScreen(true)
|
||||||
|
|
||||||
|
addon:ApplyBackdrop(frame, "DEFAULT_FRAME")
|
||||||
|
|
||||||
|
-- Handle dragging
|
||||||
|
frame:RegisterForDrag("LeftButton")
|
||||||
|
frame:SetScript("OnDragStart", function()
|
||||||
|
this:StartMoving()
|
||||||
|
end)
|
||||||
|
frame:SetScript("OnDragStop", function()
|
||||||
|
this:StopMovingOrSizing()
|
||||||
|
local point, _, relativePoint, x, y = this:GetPoint()
|
||||||
|
addon.Modules.DB:SetSetting("trackedBarPosition", {point = point, relativePoint = relativePoint, x = x, y = y})
|
||||||
|
end)
|
||||||
|
|
||||||
|
-- Restore position
|
||||||
|
local pos = addon.Modules.DB:GetSetting("trackedBarPosition")
|
||||||
|
if pos and pos.point then
|
||||||
|
frame:ClearAllPoints()
|
||||||
|
frame:SetPoint(pos.point, UIParent, pos.relativePoint or pos.point, pos.x, pos.y)
|
||||||
|
end
|
||||||
|
|
||||||
|
-- Register for events
|
||||||
|
addon.Modules.Events:Register("BAG_UPDATE", function()
|
||||||
|
TrackedItemBar:Update()
|
||||||
|
end, "TrackedItemBar")
|
||||||
|
|
||||||
|
addon.Modules.Events:Register("PLAYER_ENTERING_WORLD", function()
|
||||||
|
TrackedItemBar:Update()
|
||||||
|
end, "TrackedItemBar")
|
||||||
|
|
||||||
|
TrackedItemBar:Update()
|
||||||
|
addon:Debug("TrackedItemBar initialized")
|
||||||
|
end
|
||||||
|
|
||||||
|
TrackedItemBar.isLoaded = true
|
||||||
Reference in New Issue
Block a user