local myname = ... local core = LibStub("AceAddon-3.0"):GetAddon("SilverDragon") local module = core:GetModule("Overlay") local Debug = core.Debug local ns = core.NAMESPACE local HBD = LibStub("HereBeDragons-2.0") local HBDPins = LibStub("HereBeDragons-Pins-2.0") local minimapPins = {} module.minimapPins = minimapPins function module:UpdateMinimapIcons() HBDPins:RemoveAllMinimapIcons(self) for _, pin in pairs(minimapPins) do pin:Hide() minimapPins[pin] = nil self.pool:Release(pin) end if not module.db.profile.minimap.enabled then return end local uiMapID = HBD:GetPlayerZone() if not uiMapID then return end for coord, mobid, textureData, scale, alpha in module:IterateNodes(uiMapID, true) do local x, y = core:GetXY(coord) local pin, newPin = self.pool:Acquire() if newPin then pin:OnLoad() end pin:OnAcquired(mobid, x, y, textureData, scale or 1.0, alpha or 1.0, coord, uiMapID, true) local edge = module.db.profile.minimap.edge == module.const.EDGE_ALWAYS if module.db.profile.minimap.edge == module.const.EDGE_FOCUS then edge = mobid == module.focus_mob end minimapPins[pin] = pin HBDPins:AddMinimapIconMap(self, pin, uiMapID, x, y, false, edge) pin:UpdateEdge() end end SilverDragonOverlayMinimapPinMixin = CreateFromMixins(module.SilverDragonOverlayPinMixinBase) function SilverDragonOverlayMinimapPinMixin:OnLoad() self:SetParent(Minimap) self:SetFrameStrata(Minimap:GetFrameStrata()) self:SetFrameLevel(Minimap:GetFrameLevel() + 5) self:EnableMouse() self:SetScript("OnEnter", self.OnMouseEnter) self:SetScript("OnLeave", self.OnMouseLeave) self:SetScript("OnMouseUp", self.OnMouseUp) self:SetMouseClickEnabled(true) self:SetMouseMotionEnabled(true) end function SilverDragonOverlayMinimapPinMixin:UpdateEdge() self:SetAlpha(HBDPins:IsMinimapIconOnEdge(self) and 0.6 or 1) end