Give up on the frames
This commit is contained in:
14
Heimdall.lua
14
Heimdall.lua
@@ -260,11 +260,12 @@ local function init()
|
||||
---@class HeimdallAchievementSnifferConfig
|
||||
---@field enabled boolean
|
||||
---@field debug boolean
|
||||
---@field texture string
|
||||
---@field offsetX number
|
||||
---@field offsetY number
|
||||
-----@field texture string
|
||||
-----@field offsetX number
|
||||
-----@field offsetY number
|
||||
---@field rescan boolean
|
||||
---@field scanInterval number
|
||||
-----@field iconScale number
|
||||
|
||||
--- Data ---
|
||||
---@class HeimdallMessengerData
|
||||
@@ -519,11 +520,12 @@ local function init()
|
||||
achievementSniffer = {
|
||||
enabled = shared.GetOrDefault(Heimdall_Data, { "config", "achievementSniffer", "enabled" }, false),
|
||||
debug = shared.GetOrDefault(Heimdall_Data, { "config", "achievementSniffer", "debug" }, false),
|
||||
texture = shared.GetOrDefault(Heimdall_Data, { "config", "achievementSniffer", "texture" }, "Aura53.tga"),
|
||||
offsetX = shared.GetOrDefault(Heimdall_Data, { "config", "achievementSniffer", "offsetX" }, 0),
|
||||
offsetY = shared.GetOrDefault(Heimdall_Data, { "config", "achievementSniffer", "offsetY" }, 0),
|
||||
--texture = shared.GetOrDefault(Heimdall_Data, { "config", "achievementSniffer", "texture" }, "Aura53.tga"),
|
||||
--offsetX = shared.GetOrDefault(Heimdall_Data, { "config", "achievementSniffer", "offsetX" }, 0),
|
||||
--offsetY = shared.GetOrDefault(Heimdall_Data, { "config", "achievementSniffer", "offsetY" }, 0),
|
||||
rescan = shared.GetOrDefault(Heimdall_Data, { "config", "achievementSniffer", "rescan" }, false),
|
||||
scanInterval = shared.GetOrDefault(Heimdall_Data, { "config", "achievementSniffer", "scanInterval" }, 1),
|
||||
--iconScale = shared.GetOrDefault(Heimdall_Data, { "config", "achievementSniffer", "iconScale" }, 1),
|
||||
},
|
||||
addonPrefix = shared.GetOrDefault(Heimdall_Data, { "config", "addonPrefix" }, "HEIMDALL"),
|
||||
channelLocale = shared.GetOrDefault(Heimdall_Data, { "config", "channelLocale" }, {}),
|
||||
|
@@ -196,14 +196,117 @@ function shared.AchievementSniffer.Init()
|
||||
if not Heimdall_Achievements.players then Heimdall_Achievements.players = {} end
|
||||
if not Heimdall_Achievements.alreadySeen then Heimdall_Achievements.alreadySeen = {} end
|
||||
|
||||
local framePool = {}
|
||||
for i = 1, 40 do
|
||||
local frame = CreateFrame("Frame")
|
||||
frame.custom = { busy = false }
|
||||
local texture = frame:CreateTexture(nil, "ARTWORK")
|
||||
texture:SetAllPoints(frame)
|
||||
texture:SetTexture(TextureRoot .. Heimdall_Data.config.achievementSniffer.texture)
|
||||
table.insert(framePool, frame)
|
||||
--local framePool = {}
|
||||
--for i = 1, 40 do
|
||||
-- local frame = CreateFrame("Frame", "HeimdallAchievementSnifferNameplate" .. i, UIParent)
|
||||
-- local texture = frame:CreateTexture(nil, "ARTWORK")
|
||||
-- texture:SetAllPoints(frame)
|
||||
-- texture:SetTexture(TextureRoot .. Heimdall_Data.config.achievementSniffer.texture)
|
||||
-- frame.texture = texture
|
||||
-- frame:Hide()
|
||||
-- table.insert(framePool, frame)
|
||||
--end
|
||||
|
||||
---@param name string
|
||||
---@return boolean
|
||||
local function ShouldInspect(name)
|
||||
local should = false
|
||||
if not Heimdall_Achievements.players[name] then
|
||||
if Heimdall_Data.config.achievementSniffer.debug then
|
||||
print(string.format("[%s] Player %s does not have prior achievement data", ModuleName, name))
|
||||
end
|
||||
should = true
|
||||
end
|
||||
if Heimdall_Achievements.alreadySeen[name] then
|
||||
if Heimdall_Data.config.achievementSniffer.debug then
|
||||
print(string.format("[%s] Player %s has already been seen", ModuleName, name))
|
||||
end
|
||||
should = false
|
||||
end
|
||||
if Heimdall_Data.config.achievementSniffer.rescan then
|
||||
if Heimdall_Data.config.achievementSniffer.debug then
|
||||
print(string.format("[%s] Rescan is enabled", ModuleName))
|
||||
end
|
||||
should = true
|
||||
end
|
||||
return should
|
||||
end
|
||||
|
||||
-- It's not working well AT ALL
|
||||
-- I don't know how to do it better
|
||||
-- It simply just does not work...
|
||||
--local function UpdateFrames()
|
||||
-- for i, frame in ipairs(framePool) do
|
||||
-- local unit = "nameplate" .. i
|
||||
-- if not UnitExists(unit) then
|
||||
-- --if Heimdall_Data.config.achievementSniffer.debug then
|
||||
-- -- print(string.format("[%s] Unit %s does not exist, hiding frame", ModuleName, unit))
|
||||
-- --end
|
||||
-- frame:Hide()
|
||||
-- else
|
||||
-- --local unitFrame = _G[string.format("ElvUI_NamePlate%dHealthBar", i)]
|
||||
-- local unitFrame = _G[string.format("NamePlate%d", i)]
|
||||
-- if unitFrame == nil then
|
||||
-- if Heimdall_Data.config.achievementSniffer.debug then
|
||||
-- print(string.format("[%s] Unit frame for %s not found", ModuleName, unit))
|
||||
-- end
|
||||
-- frame:Hide()
|
||||
-- else
|
||||
-- local unitName = UnitName(unit)
|
||||
-- if Heimdall_Data.config.achievementSniffer.debug then
|
||||
-- print(string.format("[%s] Unit frame found for %s (%s)", ModuleName, unit, unitName))
|
||||
-- end
|
||||
-- frame:Show()
|
||||
-- frame:SetSize(32, 32)
|
||||
-- frame:SetFrameStrata("HIGH")
|
||||
-- frame:SetFrameLevel(100)
|
||||
-- frame:SetScale(Heimdall_Data.config.achievementSniffer.iconScale)
|
||||
-- frame.texture:SetTexture(TextureRoot .. Heimdall_Data.config.achievementSniffer.texture)
|
||||
-- frame:SetPoint("CENTER", unitFrame, "CENTER",
|
||||
-- Heimdall_Data.config.achievementSniffer.offsetX,
|
||||
-- Heimdall_Data.config.achievementSniffer.offsetY)
|
||||
-- frame:SetParent(unitFrame)
|
||||
-- frame:SetAlpha(1)
|
||||
-- local exists = ShouldInspect(unitName)
|
||||
-- if exists then
|
||||
-- frame.texture:SetVertexColor(1, 0, 0, 1)
|
||||
-- else
|
||||
-- frame.texture:SetVertexColor(0, 1, 0, 1)
|
||||
-- end
|
||||
-- if Heimdall_Data.config.achievementSniffer.debug then
|
||||
-- print(string.format("[%s] Frame updated for %s", ModuleName, unitName))
|
||||
-- end
|
||||
-- end
|
||||
-- end
|
||||
-- end
|
||||
--end
|
||||
|
||||
---@param unit string
|
||||
local function TryInspect(unit)
|
||||
local targetPlayer = UnitIsPlayer(unit)
|
||||
if not targetPlayer then return end
|
||||
local targetName = UnitName(unit)
|
||||
local targetGuid = UnitGUID(unit)
|
||||
guidMap[targetGuid] = targetName
|
||||
|
||||
if not ShouldInspect(targetName) then
|
||||
if Heimdall_Data.config.achievementSniffer.debug then
|
||||
print(string.format("[%s] Not inspecting player: %s", ModuleName, targetName))
|
||||
end
|
||||
return
|
||||
end
|
||||
|
||||
local canInspect = CheckInteractDistance(unit, 1)
|
||||
if canInspect then
|
||||
if Heimdall_Data.config.achievementSniffer.debug then
|
||||
print(string.format("[%s] Inspecting player: %s", ModuleName, targetName))
|
||||
end
|
||||
SetAchievementComparisonUnit(unit)
|
||||
else
|
||||
if Heimdall_Data.config.achievementSniffer.debug then
|
||||
print(string.format("[%s] Cannot inspect player (too far?): %s", ModuleName, targetName))
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
---@param name string
|
||||
@@ -232,73 +335,27 @@ function shared.AchievementSniffer.Init()
|
||||
Heimdall_Achievements.players[name][aid] = data
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
---@param unit string
|
||||
local function TryInspect(unit)
|
||||
local targetPlayer = UnitIsPlayer(unit)
|
||||
if not targetPlayer then return end
|
||||
local targetName = UnitName(unit)
|
||||
local targetGuid = UnitGUID(unit)
|
||||
guidMap[targetGuid] = targetName
|
||||
|
||||
local should = false
|
||||
if not Heimdall_Achievements.players[targetName] then
|
||||
if Heimdall_Data.config.achievementSniffer.debug then
|
||||
print(string.format("[%s] Player %s does not have prior achievement data", ModuleName, targetName))
|
||||
end
|
||||
should = true
|
||||
end
|
||||
if Heimdall_Achievements.alreadySeen[targetName] then
|
||||
if Heimdall_Data.config.achievementSniffer.debug then
|
||||
print(string.format("[%s] Player %s has already been seen", ModuleName, targetName))
|
||||
end
|
||||
should = false
|
||||
end
|
||||
if Heimdall_Data.config.achievementSniffer.rescan then
|
||||
if Heimdall_Data.config.achievementSniffer.debug then
|
||||
print(string.format("[%s] Rescan is enabled", ModuleName))
|
||||
end
|
||||
should = true
|
||||
end
|
||||
|
||||
if not should then
|
||||
if Heimdall_Data.config.achievementSniffer.debug then
|
||||
print(string.format("[%s] Not inspecting player: %s", ModuleName, targetName))
|
||||
end
|
||||
return
|
||||
end
|
||||
|
||||
local canInspect = CheckInteractDistance(unit, 1)
|
||||
if canInspect then
|
||||
if Heimdall_Data.config.achievementSniffer.debug then
|
||||
print(string.format("[%s] Inspecting player: %s", ModuleName, targetName))
|
||||
end
|
||||
SetAchievementComparisonUnit(unit)
|
||||
else
|
||||
if Heimdall_Data.config.achievementSniffer.debug then
|
||||
print(string.format("[%s] Cannot inspect player (too far?): %s", ModuleName, targetName))
|
||||
end
|
||||
end
|
||||
--UpdateFrames()
|
||||
end
|
||||
|
||||
local nameplateFrame = CreateFrame("Frame")
|
||||
nameplateFrame:RegisterEvent("NAME_PLATE_UNIT_ADDED")
|
||||
nameplateFrame:RegisterEvent("NAME_PLATE_UNIT_REMOVED")
|
||||
nameplateFrame:SetScript("OnEvent", function(self, event, unit)
|
||||
if not Heimdall_Data.config.achievementSniffer.enabled then return end
|
||||
if Heimdall_Data.config.achievementSniffer.debug then
|
||||
print(string.format("[%s] Event triggered: %s for unit: %s", ModuleName, event, unit))
|
||||
end
|
||||
if event == "NAME_PLATE_UNIT_ADDED" then
|
||||
TryInspect(unit)
|
||||
elseif event == "NAME_PLATE_UNIT_REMOVED" then
|
||||
print("NAME_PLATE_UNIT_REMOVED", unit)
|
||||
end
|
||||
--UpdateFrames()
|
||||
end)
|
||||
|
||||
local inspectFrame = CreateFrame("Frame")
|
||||
inspectFrame:RegisterEvent("INSPECT_ACHIEVEMENT_READY")
|
||||
inspectFrame:SetScript("OnEvent", function(self, event, guid)
|
||||
if not Heimdall_Data.config.achievementSniffer.enabled then return end
|
||||
local name = guidMap[guid]
|
||||
if not name then
|
||||
if Heimdall_Data.config.achievementSniffer.debug then
|
||||
@@ -312,7 +369,27 @@ function shared.AchievementSniffer.Init()
|
||||
Scan(name)
|
||||
end)
|
||||
|
||||
--local timer =
|
||||
|
||||
local function Tick()
|
||||
C_Timer.NewTimer(Heimdall_Data.config.achievementSniffer.scanInterval, Tick)
|
||||
if not Heimdall_Data.config.achievementSniffer.enabled then return end
|
||||
|
||||
if Heimdall_Data.config.achievementSniffer.debug then
|
||||
print(string.format("[%s] Scanning achievements for everyone on screen", ModuleName))
|
||||
end
|
||||
for i = 1, 40 do
|
||||
local unit = "nameplate" .. i
|
||||
if UnitExists(unit) then
|
||||
TryInspect(unit)
|
||||
--else
|
||||
-- if Heimdall_Data.config.achievementSniffer.debug then
|
||||
-- print(string.format("[%s] Unit %s does not exist, nothing to inspect", ModuleName, unit))
|
||||
-- end
|
||||
end
|
||||
end
|
||||
--UpdateFrames()
|
||||
end
|
||||
Tick()
|
||||
|
||||
print("[Heimdall] AchievementSniffer loaded")
|
||||
end
|
||||
|
@@ -2021,44 +2021,44 @@ function shared.Config.Init()
|
||||
enableButton:UpdateColor(Heimdall_Data.config.achievementSniffer.enabled)
|
||||
achievementSnifferConfigFrame:Add(enableButton, 2, 3)
|
||||
|
||||
local texture = CreateBasicSmallEditBox("HeimdallAchievementSnifferConfigTexture",
|
||||
achievementSnifferConfigFrame.frame, shared._L("texture", Heimdall_Data.config.locale),
|
||||
Heimdall_Data.config.achievementSniffer.texture,
|
||||
function(self)
|
||||
local text = self:GetText()
|
||||
Heimdall_Data.config.achievementSniffer.texture = text
|
||||
end)
|
||||
achievementSnifferConfigFrame:Add(texture, 2, 3)
|
||||
--local texture = CreateBasicSmallEditBox("HeimdallAchievementSnifferConfigTexture",
|
||||
-- achievementSnifferConfigFrame.frame, shared._L("texture", Heimdall_Data.config.locale),
|
||||
-- Heimdall_Data.config.achievementSniffer.texture,
|
||||
-- function(self)
|
||||
-- local text = self:GetText()
|
||||
-- Heimdall_Data.config.achievementSniffer.texture = text
|
||||
-- end)
|
||||
--achievementSnifferConfigFrame:Add(texture, 2, 3)
|
||||
|
||||
local offsetX = CreateBasicSmallEditBox("HeimdallAchievementSnifferConfigOffsetX",
|
||||
achievementSnifferConfigFrame.frame, shared._L("offsetX", Heimdall_Data.config.locale),
|
||||
tostring(Heimdall_Data.config.achievementSniffer.offsetX),
|
||||
function(self)
|
||||
local text = self:GetText()
|
||||
if string.match(text, "%d+") then
|
||||
Heimdall_Data.config.achievementSniffer.offsetX = tonumber(text)
|
||||
print("Offset X set to", tostring(text))
|
||||
else
|
||||
print("Invalid offset X", text)
|
||||
self:SetText(tostring(Heimdall_Data.config.achievementSniffer.offsetX))
|
||||
end
|
||||
end)
|
||||
achievementSnifferConfigFrame:Add(offsetX, 2, 3)
|
||||
--local offsetX = CreateBasicSmallEditBox("HeimdallAchievementSnifferConfigOffsetX",
|
||||
-- achievementSnifferConfigFrame.frame, shared._L("offsetX", Heimdall_Data.config.locale),
|
||||
-- tostring(Heimdall_Data.config.achievementSniffer.offsetX),
|
||||
-- function(self)
|
||||
-- local text = self:GetText()
|
||||
-- if string.match(text, "%d+") then
|
||||
-- Heimdall_Data.config.achievementSniffer.offsetX = tonumber(text)
|
||||
-- print("Offset X set to", tostring(text))
|
||||
-- else
|
||||
-- print("Invalid offset X", text)
|
||||
-- self:SetText(tostring(Heimdall_Data.config.achievementSniffer.offsetX))
|
||||
-- end
|
||||
-- end)
|
||||
--achievementSnifferConfigFrame:Add(offsetX, 2, 3)
|
||||
|
||||
local offsetY = CreateBasicSmallEditBox("HeimdallAchievementSnifferConfigOffsetY",
|
||||
achievementSnifferConfigFrame.frame, shared._L("offsetY", Heimdall_Data.config.locale),
|
||||
tostring(Heimdall_Data.config.achievementSniffer.offsetY),
|
||||
function(self)
|
||||
local text = self:GetText()
|
||||
if string.match(text, "%d+") then
|
||||
Heimdall_Data.config.achievementSniffer.offsetY = tonumber(text)
|
||||
print("Offset Y set to", tostring(text))
|
||||
else
|
||||
print("Invalid offset Y", text)
|
||||
self:SetText(tostring(Heimdall_Data.config.achievementSniffer.offsetY))
|
||||
end
|
||||
end)
|
||||
achievementSnifferConfigFrame:Add(offsetY, 2, 3)
|
||||
--local offsetY = CreateBasicSmallEditBox("HeimdallAchievementSnifferConfigOffsetY",
|
||||
-- achievementSnifferConfigFrame.frame, shared._L("offsetY", Heimdall_Data.config.locale),
|
||||
-- tostring(Heimdall_Data.config.achievementSniffer.offsetY),
|
||||
-- function(self)
|
||||
-- local text = self:GetText()
|
||||
-- if string.match(text, "%d+") then
|
||||
-- Heimdall_Data.config.achievementSniffer.offsetY = tonumber(text)
|
||||
-- print("Offset Y set to", tostring(text))
|
||||
-- else
|
||||
-- print("Invalid offset Y", text)
|
||||
-- self:SetText(tostring(Heimdall_Data.config.achievementSniffer.offsetY))
|
||||
-- end
|
||||
-- end)
|
||||
--achievementSnifferConfigFrame:Add(offsetY, 2, 3)
|
||||
|
||||
local rescan = CreateBasicButton("HeimdallAchievementSnifferConfigRescanButton",
|
||||
achievementSnifferConfigFrame.frame, shared._L("rescan", Heimdall_Data.config.locale), function()
|
||||
@@ -2076,6 +2076,15 @@ function shared.Config.Init()
|
||||
Heimdall_Data.config.achievementSniffer.scanInterval = tonumber(text)
|
||||
end)
|
||||
achievementSnifferConfigFrame:Add(scanInterval, 2, 3)
|
||||
|
||||
--local iconScale = CreateBasicSmallEditBox("HeimdallAchievementSnifferConfigIconScale",
|
||||
-- achievementSnifferConfigFrame.frame, shared._L("iconScale", Heimdall_Data.config.locale),
|
||||
-- tostring(Heimdall_Data.config.achievementSniffer.iconScale),
|
||||
-- function(self)
|
||||
-- local text = self:GetText()
|
||||
-- Heimdall_Data.config.achievementSniffer.iconScale = tonumber(text)
|
||||
-- end)
|
||||
--achievementSnifferConfigFrame:Add(iconScale, 2, 3)
|
||||
end
|
||||
|
||||
-- Addon prefix
|
||||
|
Reference in New Issue
Block a user