You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

71 lines
1.6 KiB

local _, addon = ...
local TooltipFrame = addon.SharedTooltip;
local ipairs = ipairs;
local UnitName = UnitName;
local DataProvider = {};
addon.GossipDataProvider = DataProvider;
DataProvider.sources = {};
DataProvider.alternativeNames = {}; --Change gossip option's name (e.g. LFR wing names)
function DataProvider:AddDataSource(dataSource)
table.insert(self.sources, dataSource)
end
function DataProvider:OnInteractWithNPC()
local npcName = UnitName("npc");
if npcName then
for i, source in ipairs(self.sources) do
source:OnInteractWithNPC(npcName);
end
end
end
function DataProvider:OnInteractStopped()
for i, source in ipairs(self.sources) do
source:OnInteractStopped();
end
end
function DataProvider:SetupTooltipByGossipOptionID(gossipOptionID)
local hasTooltip = false;
for i, source in ipairs(self.sources) do
hasTooltip = source:SetupTooltipByGossipOptionID(TooltipFrame, gossipOptionID);
if hasTooltip then
break
end
end
return hasTooltip
end
function DataProvider:SetOverrideName(gossipOptionID, name)
if name then
self.alternativeNames[gossipOptionID] = name;
end
end
function DataProvider:GetOverrideName(gossipOptionID)
return self.alternativeNames[gossipOptionID]
end
--[[
local DataSource = {};
function DataSource:OnInteractWithNPC(npcName)
end
function DataSource:OnInteractStopped()
end
function DataSource:SetupTooltipByGossipOptionID(gossipOptionID)
end
--]]