Files
wow-weakauras/LegionWA/NearbyPlayers/Init.lua
2025-05-15 21:19:10 +02:00

84 lines
1.8 KiB
Lua

if not WeakAurasSaved.Cyka then WeakAurasSaved.Cyka = {} end
if not WeakAurasSaved.Cyka.Cache then WeakAurasSaved.Cyka.Cache = {} end
if not WeakAurasSaved.Cyka.Cache.PlayerInfo then WeakAurasSaved.Cyka.Cache.PlayerInfo = {} end
local allianceRaces = {
"Draenai",
"Dwarf",
"Gnome",
"Human",
"Night Elf",
"Worgen",
}
PlayerController = {
nearbyPlayers = {},
addPlayer = function(self, name) self.nearbyPlayers[name] = Player:New(name) end,
getPlayers = function(self) end,
process = function(guid)
if self.nearbyPlayers[guid] == nil then
self.addPlayer(guid)
else
end
end,
}
Player = {
guid = nil,
lastSighted = nil,
info = nil,
update = function(self) self.lastSighted = GetTime() end,
getFormatted = function(self)
-- Color by class
-- Format time
return info.name .. " " .. self.lastSighted
end,
}
PlayerInfo = {
class = nil,
race = nil,
name = nil,
isHostile = nil,
}
function Player:New(guid)
o = {}
setmetatable(o, self)
self.__index = self
o.guid = guid or ""
o.lastSighted = GetTime()
o.info = PlayerInfo:New(guid)
return o
end
function PlayerInfo:New(guid)
o = {}
setmetatable(o, self)
self.__index = self
local info
if WeakAurasSaved.Cyka.Cache.PlayerInfo[guid] then
info = WeakAurasSaved.Cyka.Cache.PlayerInfo[guid]
else
info = GetPlayerInfoByGUID(guid)
WeakAurasSaved.Cyka.Cache.PlayerInfo[guid] = {
class = info.class,
race = info.race,
name = info.name,
isHostile = allianceRaces[race] ~= nil,
}
end
o.class = info.class or ""
o.race = info.race or ""
o.name = info.name or ""
o.isHostile = info.isHostile or true
return o
end
aura_env.processEvent = function(caster, target)
PlayerController:process(caster)
PlayerController:process(target)
end