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
|
---@class HeimdallAchievementSnifferConfig
|
||||||
---@field enabled boolean
|
---@field enabled boolean
|
||||||
---@field debug boolean
|
---@field debug boolean
|
||||||
---@field texture string
|
-----@field texture string
|
||||||
---@field offsetX number
|
-----@field offsetX number
|
||||||
---@field offsetY number
|
-----@field offsetY number
|
||||||
---@field rescan boolean
|
---@field rescan boolean
|
||||||
---@field scanInterval number
|
---@field scanInterval number
|
||||||
|
-----@field iconScale number
|
||||||
|
|
||||||
--- Data ---
|
--- Data ---
|
||||||
---@class HeimdallMessengerData
|
---@class HeimdallMessengerData
|
||||||
@@ -519,11 +520,12 @@ local function init()
|
|||||||
achievementSniffer = {
|
achievementSniffer = {
|
||||||
enabled = shared.GetOrDefault(Heimdall_Data, { "config", "achievementSniffer", "enabled" }, false),
|
enabled = shared.GetOrDefault(Heimdall_Data, { "config", "achievementSniffer", "enabled" }, false),
|
||||||
debug = shared.GetOrDefault(Heimdall_Data, { "config", "achievementSniffer", "debug" }, false),
|
debug = shared.GetOrDefault(Heimdall_Data, { "config", "achievementSniffer", "debug" }, false),
|
||||||
texture = shared.GetOrDefault(Heimdall_Data, { "config", "achievementSniffer", "texture" }, "Aura53.tga"),
|
--texture = shared.GetOrDefault(Heimdall_Data, { "config", "achievementSniffer", "texture" }, "Aura53.tga"),
|
||||||
offsetX = shared.GetOrDefault(Heimdall_Data, { "config", "achievementSniffer", "offsetX" }, 0),
|
--offsetX = shared.GetOrDefault(Heimdall_Data, { "config", "achievementSniffer", "offsetX" }, 0),
|
||||||
offsetY = shared.GetOrDefault(Heimdall_Data, { "config", "achievementSniffer", "offsetY" }, 0),
|
--offsetY = shared.GetOrDefault(Heimdall_Data, { "config", "achievementSniffer", "offsetY" }, 0),
|
||||||
rescan = shared.GetOrDefault(Heimdall_Data, { "config", "achievementSniffer", "rescan" }, false),
|
rescan = shared.GetOrDefault(Heimdall_Data, { "config", "achievementSniffer", "rescan" }, false),
|
||||||
scanInterval = shared.GetOrDefault(Heimdall_Data, { "config", "achievementSniffer", "scanInterval" }, 1),
|
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"),
|
addonPrefix = shared.GetOrDefault(Heimdall_Data, { "config", "addonPrefix" }, "HEIMDALL"),
|
||||||
channelLocale = shared.GetOrDefault(Heimdall_Data, { "config", "channelLocale" }, {}),
|
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.players then Heimdall_Achievements.players = {} end
|
||||||
if not Heimdall_Achievements.alreadySeen then Heimdall_Achievements.alreadySeen = {} end
|
if not Heimdall_Achievements.alreadySeen then Heimdall_Achievements.alreadySeen = {} end
|
||||||
|
|
||||||
local framePool = {}
|
--local framePool = {}
|
||||||
for i = 1, 40 do
|
--for i = 1, 40 do
|
||||||
local frame = CreateFrame("Frame")
|
-- local frame = CreateFrame("Frame", "HeimdallAchievementSnifferNameplate" .. i, UIParent)
|
||||||
frame.custom = { busy = false }
|
-- local texture = frame:CreateTexture(nil, "ARTWORK")
|
||||||
local texture = frame:CreateTexture(nil, "ARTWORK")
|
-- texture:SetAllPoints(frame)
|
||||||
texture:SetAllPoints(frame)
|
-- texture:SetTexture(TextureRoot .. Heimdall_Data.config.achievementSniffer.texture)
|
||||||
texture:SetTexture(TextureRoot .. Heimdall_Data.config.achievementSniffer.texture)
|
-- frame.texture = texture
|
||||||
table.insert(framePool, frame)
|
-- 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
|
end
|
||||||
|
|
||||||
---@param name string
|
---@param name string
|
||||||
@@ -232,73 +335,27 @@ function shared.AchievementSniffer.Init()
|
|||||||
Heimdall_Achievements.players[name][aid] = data
|
Heimdall_Achievements.players[name][aid] = data
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
--UpdateFrames()
|
||||||
|
|
||||||
---@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
|
|
||||||
end
|
end
|
||||||
|
|
||||||
local nameplateFrame = CreateFrame("Frame")
|
local nameplateFrame = CreateFrame("Frame")
|
||||||
nameplateFrame:RegisterEvent("NAME_PLATE_UNIT_ADDED")
|
nameplateFrame:RegisterEvent("NAME_PLATE_UNIT_ADDED")
|
||||||
nameplateFrame:RegisterEvent("NAME_PLATE_UNIT_REMOVED")
|
nameplateFrame:RegisterEvent("NAME_PLATE_UNIT_REMOVED")
|
||||||
nameplateFrame:SetScript("OnEvent", function(self, event, unit)
|
nameplateFrame:SetScript("OnEvent", function(self, event, unit)
|
||||||
|
if not Heimdall_Data.config.achievementSniffer.enabled then return end
|
||||||
if Heimdall_Data.config.achievementSniffer.debug then
|
if Heimdall_Data.config.achievementSniffer.debug then
|
||||||
print(string.format("[%s] Event triggered: %s for unit: %s", ModuleName, event, unit))
|
print(string.format("[%s] Event triggered: %s for unit: %s", ModuleName, event, unit))
|
||||||
end
|
end
|
||||||
if event == "NAME_PLATE_UNIT_ADDED" then
|
if event == "NAME_PLATE_UNIT_ADDED" then
|
||||||
TryInspect(unit)
|
TryInspect(unit)
|
||||||
elseif event == "NAME_PLATE_UNIT_REMOVED" then
|
|
||||||
print("NAME_PLATE_UNIT_REMOVED", unit)
|
|
||||||
end
|
end
|
||||||
|
--UpdateFrames()
|
||||||
end)
|
end)
|
||||||
|
|
||||||
local inspectFrame = CreateFrame("Frame")
|
local inspectFrame = CreateFrame("Frame")
|
||||||
inspectFrame:RegisterEvent("INSPECT_ACHIEVEMENT_READY")
|
inspectFrame:RegisterEvent("INSPECT_ACHIEVEMENT_READY")
|
||||||
inspectFrame:SetScript("OnEvent", function(self, event, guid)
|
inspectFrame:SetScript("OnEvent", function(self, event, guid)
|
||||||
|
if not Heimdall_Data.config.achievementSniffer.enabled then return end
|
||||||
local name = guidMap[guid]
|
local name = guidMap[guid]
|
||||||
if not name then
|
if not name then
|
||||||
if Heimdall_Data.config.achievementSniffer.debug then
|
if Heimdall_Data.config.achievementSniffer.debug then
|
||||||
@@ -311,8 +368,28 @@ function shared.AchievementSniffer.Init()
|
|||||||
end
|
end
|
||||||
Scan(name)
|
Scan(name)
|
||||||
end)
|
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")
|
print("[Heimdall] AchievementSniffer loaded")
|
||||||
end
|
end
|
||||||
|
@@ -2021,44 +2021,44 @@ function shared.Config.Init()
|
|||||||
enableButton:UpdateColor(Heimdall_Data.config.achievementSniffer.enabled)
|
enableButton:UpdateColor(Heimdall_Data.config.achievementSniffer.enabled)
|
||||||
achievementSnifferConfigFrame:Add(enableButton, 2, 3)
|
achievementSnifferConfigFrame:Add(enableButton, 2, 3)
|
||||||
|
|
||||||
local texture = CreateBasicSmallEditBox("HeimdallAchievementSnifferConfigTexture",
|
--local texture = CreateBasicSmallEditBox("HeimdallAchievementSnifferConfigTexture",
|
||||||
achievementSnifferConfigFrame.frame, shared._L("texture", Heimdall_Data.config.locale),
|
-- achievementSnifferConfigFrame.frame, shared._L("texture", Heimdall_Data.config.locale),
|
||||||
Heimdall_Data.config.achievementSniffer.texture,
|
-- Heimdall_Data.config.achievementSniffer.texture,
|
||||||
function(self)
|
-- function(self)
|
||||||
local text = self:GetText()
|
-- local text = self:GetText()
|
||||||
Heimdall_Data.config.achievementSniffer.texture = text
|
-- Heimdall_Data.config.achievementSniffer.texture = text
|
||||||
end)
|
-- end)
|
||||||
achievementSnifferConfigFrame:Add(texture, 2, 3)
|
--achievementSnifferConfigFrame:Add(texture, 2, 3)
|
||||||
|
|
||||||
local offsetX = CreateBasicSmallEditBox("HeimdallAchievementSnifferConfigOffsetX",
|
--local offsetX = CreateBasicSmallEditBox("HeimdallAchievementSnifferConfigOffsetX",
|
||||||
achievementSnifferConfigFrame.frame, shared._L("offsetX", Heimdall_Data.config.locale),
|
-- achievementSnifferConfigFrame.frame, shared._L("offsetX", Heimdall_Data.config.locale),
|
||||||
tostring(Heimdall_Data.config.achievementSniffer.offsetX),
|
-- tostring(Heimdall_Data.config.achievementSniffer.offsetX),
|
||||||
function(self)
|
-- function(self)
|
||||||
local text = self:GetText()
|
-- local text = self:GetText()
|
||||||
if string.match(text, "%d+") then
|
-- if string.match(text, "%d+") then
|
||||||
Heimdall_Data.config.achievementSniffer.offsetX = tonumber(text)
|
-- Heimdall_Data.config.achievementSniffer.offsetX = tonumber(text)
|
||||||
print("Offset X set to", tostring(text))
|
-- print("Offset X set to", tostring(text))
|
||||||
else
|
-- else
|
||||||
print("Invalid offset X", text)
|
-- print("Invalid offset X", text)
|
||||||
self:SetText(tostring(Heimdall_Data.config.achievementSniffer.offsetX))
|
-- self:SetText(tostring(Heimdall_Data.config.achievementSniffer.offsetX))
|
||||||
end
|
-- end
|
||||||
end)
|
-- end)
|
||||||
achievementSnifferConfigFrame:Add(offsetX, 2, 3)
|
--achievementSnifferConfigFrame:Add(offsetX, 2, 3)
|
||||||
|
|
||||||
local offsetY = CreateBasicSmallEditBox("HeimdallAchievementSnifferConfigOffsetY",
|
--local offsetY = CreateBasicSmallEditBox("HeimdallAchievementSnifferConfigOffsetY",
|
||||||
achievementSnifferConfigFrame.frame, shared._L("offsetY", Heimdall_Data.config.locale),
|
-- achievementSnifferConfigFrame.frame, shared._L("offsetY", Heimdall_Data.config.locale),
|
||||||
tostring(Heimdall_Data.config.achievementSniffer.offsetY),
|
-- tostring(Heimdall_Data.config.achievementSniffer.offsetY),
|
||||||
function(self)
|
-- function(self)
|
||||||
local text = self:GetText()
|
-- local text = self:GetText()
|
||||||
if string.match(text, "%d+") then
|
-- if string.match(text, "%d+") then
|
||||||
Heimdall_Data.config.achievementSniffer.offsetY = tonumber(text)
|
-- Heimdall_Data.config.achievementSniffer.offsetY = tonumber(text)
|
||||||
print("Offset Y set to", tostring(text))
|
-- print("Offset Y set to", tostring(text))
|
||||||
else
|
-- else
|
||||||
print("Invalid offset Y", text)
|
-- print("Invalid offset Y", text)
|
||||||
self:SetText(tostring(Heimdall_Data.config.achievementSniffer.offsetY))
|
-- self:SetText(tostring(Heimdall_Data.config.achievementSniffer.offsetY))
|
||||||
end
|
-- end
|
||||||
end)
|
-- end)
|
||||||
achievementSnifferConfigFrame:Add(offsetY, 2, 3)
|
--achievementSnifferConfigFrame:Add(offsetY, 2, 3)
|
||||||
|
|
||||||
local rescan = CreateBasicButton("HeimdallAchievementSnifferConfigRescanButton",
|
local rescan = CreateBasicButton("HeimdallAchievementSnifferConfigRescanButton",
|
||||||
achievementSnifferConfigFrame.frame, shared._L("rescan", Heimdall_Data.config.locale), function()
|
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)
|
Heimdall_Data.config.achievementSniffer.scanInterval = tonumber(text)
|
||||||
end)
|
end)
|
||||||
achievementSnifferConfigFrame:Add(scanInterval, 2, 3)
|
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
|
end
|
||||||
|
|
||||||
-- Addon prefix
|
-- Addon prefix
|
||||||
|
Reference in New Issue
Block a user