Implement message command in messenger
This commit is contained in:
@@ -6,61 +6,59 @@ local ModuleName = "NetworkMessenger"
|
|||||||
---@diagnostic disable-next-line: missing-fields
|
---@diagnostic disable-next-line: missing-fields
|
||||||
shared.NetworkMessenger = {}
|
shared.NetworkMessenger = {}
|
||||||
function shared.NetworkMessenger.Init()
|
function shared.NetworkMessenger.Init()
|
||||||
local updateTime = 0
|
RegisterAddonMessagePrefix(Heimdall_Data.config.addonPrefix)
|
||||||
|
|
||||||
local friendsFrame = CreateFrame("Frame")
|
local addonMsgFrame = CreateFrame("Frame")
|
||||||
friendsFrame:RegisterEvent("FRIENDLIST_UPDATE")
|
addonMsgFrame:RegisterEvent("CHAT_MSG_ADDON")
|
||||||
friendsFrame:SetScript("OnEvent", function(self, event, ...)
|
addonMsgFrame:SetScript("OnEvent", function(self, event, prefix, message, channel, source)
|
||||||
---@type table<string, boolean>
|
if not Heimdall_Data.config.networkMessenger.enabled then return end
|
||||||
local friends = {}
|
if prefix ~= Heimdall_Data.config.addonPrefix then return end
|
||||||
for i = 1, GetNumFriends() do
|
source = string.match(source, "[^%-]+")
|
||||||
local name, level, class, area, connected, status, note, RAF = GetFriendInfo(i)
|
|
||||||
friends[name] = connected
|
if Heimdall_Data.config.networkMessenger.debug then
|
||||||
if Heimdall_Data.config.network.debug then
|
print(string.format("[%s] Received message from %s: %s", ModuleName, source, message))
|
||||||
print(string.format("[%s] Friend %s is %s", ModuleName, name, connected and "online" or "offline"))
|
|
||||||
end
|
end
|
||||||
|
if #shared.networkNodes == 0 then
|
||||||
|
if Heimdall_Data.config.networkMessenger.debug then
|
||||||
|
print(string.format("[%s] No network nodes found, wtf????", ModuleName))
|
||||||
|
end
|
||||||
|
return
|
||||||
end
|
end
|
||||||
|
|
||||||
for _, member in ipairs(Heimdall_Data.config.network.members) do
|
-- There should always be at least one network node ergo should always exist a leader
|
||||||
if friends[member] == nil then
|
-- Because the us, the player, is also a node
|
||||||
if Heimdall_Data.config.network.debug then
|
local networkLeader = shared.networkNodes[1]
|
||||||
print(string.format("[%s] Adding friend %s", ModuleName, member))
|
if source ~= networkLeader then
|
||||||
end
|
if Heimdall_Data.config.networkMessenger.debug then
|
||||||
AddFriend(member)
|
print(string.format("[%s] Message from %s is not from the network leader (%s)", ModuleName, source,
|
||||||
|
networkLeader))
|
||||||
end
|
end
|
||||||
|
return
|
||||||
end
|
end
|
||||||
|
--/run SendAddonMessage("HEIMDALL", "message|hello|WHISPER|Prímus", "WHISPER", UnitName("player"))
|
||||||
|
|
||||||
shared.networkNodes = {}
|
local parts = shared.Split(message, "|")
|
||||||
for _, player in ipairs(Heimdall_Data.config.network.members) do
|
if Heimdall_Data.config.networkMessenger.debug then
|
||||||
if friends[player] then
|
print(string.format("[%s] Received message parts:", ModuleName))
|
||||||
shared.networkNodes[player] = true
|
shared.dumpTable(parts)
|
||||||
if Heimdall_Data.config.network.debug then
|
|
||||||
print(string.format("[%s] Adding network node %s", ModuleName, player))
|
|
||||||
end
|
end
|
||||||
|
local command = strtrim(parts[1])
|
||||||
|
if command == "message" then
|
||||||
|
local message = strtrim(parts[2])
|
||||||
|
local channel = strtrim(parts[3])
|
||||||
|
local target = strtrim(parts[4])
|
||||||
|
if Heimdall_Data.config.networkMessenger.debug then
|
||||||
|
print(string.format("[%s] Received message command: %s %s %s", ModuleName, message, channel, target))
|
||||||
end
|
end
|
||||||
end
|
---@type Message
|
||||||
if Heimdall_Data.config.network.debug then
|
local msg = {
|
||||||
print(string.format("[%s] Network nodes:", ModuleName))
|
channel = channel,
|
||||||
shared.dumpTable(shared.networkNodes)
|
message = message,
|
||||||
|
data = target
|
||||||
|
}
|
||||||
|
table.insert(shared.messenger.queue, msg)
|
||||||
end
|
end
|
||||||
end)
|
end)
|
||||||
|
|
||||||
local function Update()
|
|
||||||
if not Heimdall_Data.config.network.enabled then return end
|
|
||||||
if Heimdall_Data.config.network.debug then
|
|
||||||
print("Network module is updating.")
|
|
||||||
end
|
|
||||||
ShowFriends()
|
|
||||||
end
|
|
||||||
|
|
||||||
local networkFrame = CreateFrame("Frame")
|
|
||||||
networkFrame:SetScript("OnUpdate", function(self, elapsed)
|
|
||||||
if not Heimdall_Data.config.network.enabled then return end
|
|
||||||
updateTime = updateTime + elapsed
|
|
||||||
if updateTime >= Heimdall_Data.config.network.updateInterval then
|
|
||||||
Update()
|
|
||||||
updateTime = 0
|
|
||||||
end
|
|
||||||
end)
|
|
||||||
print("[Heimdall] NetworkMessenger module loaded")
|
print("[Heimdall] NetworkMessenger module loaded")
|
||||||
end
|
end
|
||||||
|
|||||||
Reference in New Issue
Block a user