Rework spotter

This commit is contained in:
2025-01-01 14:24:58 +01:00
parent 5e779cc5f9
commit e32966bee2
2 changed files with 26 additions and 25 deletions

View File

@@ -4,10 +4,10 @@ local addonname, shared = ...
shared.Messenger = {}
function shared.Messenger.Init()
-- if not Heimdall_Data.config.messenger.enabled then
-- print("Heimdall - Messenger disabled")
-- return
-- end
-- if not Heimdall_Data.config.messenger.enabled then
-- print("Heimdall - Messenger disabled")
-- return
-- end
---@class Message
---@field message string

View File

@@ -1,13 +1,13 @@
local addonname, data = ...
---@cast data HeimdallData
local addonname, shared = ...
---@cast shared HeimdallShared
---@cast addonname string
data.Spotter = {}
function data.Spotter.Init()
if not data.config.spotter.enabled then
print("Heimdall - Spotter disabled")
return
end
shared.Spotter = {}
function shared.Spotter.Init()
-- if not Heimdall_Data.config.spotter.enabled then
-- print("Heimdall - Spotter disabled")
-- return
-- end
local function FormatHP(hp)
if hp > 1e9 then
@@ -31,16 +31,16 @@ function data.Spotter.Init()
---@return boolean
---@return string? error
local function ShouldNotify(unit, name, faction, hostile)
if data.config.spotter.stinky then
if data.config.stinkies[name] then return true end
if Heimdall_Data.config.spotter.stinky then
if Heimdall_Data.config.stinkies[name] then return true end
end
if data.config.spotter.alliance then
if Heimdall_Data.config.spotter.alliance then
if faction == "Alliance" then return true end
end
if data.config.spotter.hostile then
if Heimdall_Data.config.spotter.hostile then
if hostile then return true end
end
return data.config.spotter.everyone
return Heimdall_Data.config.spotter.everyone
end
---@param unit string
@@ -53,17 +53,17 @@ function data.Spotter.Init()
if not name then return string.format("Could not find name for unit %s", tostring(unit)) end
local time = GetTime()
if throttleTable[name] and time - throttleTable[name] < data.config.spotter.throttleTime then
if throttleTable[name] and time - throttleTable[name] < Heimdall_Data.config.spotter.throttleTime then
return string.format("Throttled %s", tostring(name))
end
throttleTable[name] = time
local race = UnitRace(unit)
if not race then return string.format("Could not find race for unit %s", tostring(unit)) end
local faction = data.raceMap[race]
local faction = shared.raceMap[race]
if not faction then return string.format("Could not find faction for race %s", tostring(race)) end
local hostile = UnitCanAttack("player", unit)
local hostile = UnitCanAttack("player", unit) == 1
local doNotify = ShouldNotify(unit, name, faction, hostile)
if not doNotify then return string.format("Not notifying for %s", tostring(name)) end
@@ -73,7 +73,7 @@ function data.Spotter.Init()
local maxHp = UnitHealthMax(unit)
if not maxHp then return string.format("Could not find maxHp for unit %s", tostring(unit)) end
local location = data.config.spotter.zoneOverride
local location = Heimdall_Data.config.spotter.zoneOverride
if not location then
local zone = GetZoneText()
if not zone then return string.format("Could not find zone for unit %s", tostring(unit)) end
@@ -82,7 +82,7 @@ function data.Spotter.Init()
location = string.format("%s (%s)", zone, subzone)
end
local stinky = data.config.stinkies[name] or false
local stinky = Heimdall_Data.config.stinkies[name] or false
local text = string.format("I see (%s) %s %s of race %s (%s) with health %s/%s at %s",
hostile and "Hostile" or "Friendly",
stinky and string.format("(%s)", "!!!!") or "",
@@ -96,17 +96,18 @@ function data.Spotter.Init()
---@type Message
local msg = {
channel = "CHANNEL",
data = data.config.spotter.notifyChannel,
data = Heimdall_Data.config.spotter.notifyChannel,
message = text
}
data.dumpTable(msg)
table.insert(data.messenger.queue, msg)
--shared.dumpTable(msg)
table.insert(shared.messenger.queue, msg)
end
local frame = CreateFrame("Frame")
frame:RegisterEvent("NAME_PLATE_UNIT_ADDED")
frame:RegisterEvent("TARGET_UNIT_CHANGED")
frame:SetScript("OnEvent", function(self, event, unit)
if not Heimdall_Data.config.spotter.enabled then return end
local err = NotifySpotted(unit)
if err then
print(string.format("Error notifying %s: %s", tostring(unit), tostring(err)))