local mod = StarTip:NewModule("PvP", "AceEvent-3.0")
mod.name = "PvP"
mod.toggled = true
local _G = _G
local GameTooltip = _G.GameTooltip
local UnitFactionGroup = _G.UnitFactionGroup
local self = mod
local L = StarTip.L
local LibWidget = LibStub("LibScriptableWidget-1.0")
local defaults = {
profile = {
width = 30,
height = 30,
points = {{"TOP", "StarTipQTipMain", "TOPRIGHT", 0, 0}}
}
}
function mod:OnInitialize()
self.db = StarTip.db:RegisterNamespace(self:GetName(), defaults)
local frame = _G.CreateFrame("Frame", nil, StarTip.tooltipMain)
local pvp = frame:CreateTexture(nil, "TOOLTIP")
pvp:SetHeight(self.db.profile.height or 30)
pvp:SetWidth(self.db.profile.width or 30)
for i, v in pairs(self.db.profile.points) do
pvp:SetPoint(unpack(v))
end
self.PvP = pvp
end
function mod:OnEnable()
--self:RegisterEvent("UNIT_FACTION")
end
function mod:OnDisable()
--self:UnregisterEvent("UNIT_FACTION")
end
function mod:UNIT_FACTION(event, unit)
unit = unit or "mouseover"
if not UnitExists(unit) then return end
local factionGroup = UnitFactionGroup(unit)
if(UnitIsPVPFreeForAll(unit)) then
self.PvP:SetTexture[[Interface\TargetingFrame\UI-PVP-FFA]]
self.PvP:Show()
elseif(factionGroup and UnitIsPVP(unit)) then
self.PvP:SetTexture([[Interface\TargetingFrame\UI-PVP-]]..factionGroup)
self.PvP:Show()
else
self.PvP:Hide()
end
end
function mod:SetUnit()
self:UNIT_FACTION(nil, StarTip.unit or "mouseover")
end
function mod:OnHide()
self.PvP:Hide()
end
function mod:GetOptions()
local options = {
pvp = {
name = L["PvP Icon"],
type = "group",
args = {
add = {
name = L["Add Point"],
desc = L["Add a new point"],
type = "input",
set = function(info, v)
tinsert(db.points, {"TOP", "StarTipQTip", "TOPRIGHT", 0, 0})
end,
order = 1
}
}
}
}
for i, point in ipairs(self.db.profile.points) do
options.pvp.args["point" .. i] = {
name = "Point #" .. i,
type = "group",
order = i + 1,
args = {
point = {
name = L["Icon Point"],
desc = L["Which point of the PvP icon is attached at the relative point."],
type = "select",
values = LibWidget.anchors,
get = function() return LibWidget.anchorsDict[point[1] or 1] end,
set = function(info, v)
point[1] = LibWidget.anchors[v]
end,
order = 1
},
--[[
relativeFrame = {
name = L["Relative Frame"],
type = "input",
get = function() return point[2] end,
set = function(info, v)
points[2] = v
end,
order = 2
},
]]
relativePoint = {
name = L["Relative Point"],
desc = L["Which point of StarTip's tooltip should the PvP icon be attached."],
type = "select",
values = LibWidget.anchors,
get = function() return LibWidget.anchorsDict[point[3] or 1] end,
set = function(info, v)
point[3] = LibWidget.anchors[v]
end,
order = 3
},
xOfs = {
name = L["X Offset"],
desc = L["X axis offset from attached point."],
type = "input",
pattern = "%d",
get = function() return tostring(point[4] or 0) end,
set = function(info, v) point[4] = tonumber(v) end,
order = 5
},
yOfs = {
name = L["Y Offset"],
desc = L["Y axis offset from attached point."],
type = "input",
pattern = "%d",
get = function() return tostring(point[5] or 0) end,
set = function(info, v) point[5] = tonumber(v) end,
order = 5
},
delete = {
name = L["Delete"],
desc = L["Delete this point"],
type = "execute",
func = function()
tremove(self.db.profile.points, i)
end,
order = 6
}
}
}
end
return options
end