WoWInterface SVN AutoDND

[/] [trunk/] [AutoDND/] [AutoDND.lua] - Rev 2

Compare with Previous | Blame | View Log

AutoDNDSV = {
        enabled = false,
        message = "",
}
local DELAY = 0.1
local sv
local timer
local oldSendChatMessage = SendChatMessage

local f = CreateFrame("Frame")
f:RegisterEvent("PLAYER_LOGIN")
f:Hide()

local function GoDND()
        oldSendChatMessage(sv.message, "DND")
        f:RegisterEvent("CHAT_MSG_SYSTEM")
end

f:SetScript("OnEvent", function(_, event, arg1)
        if event == "PLAYER_LOGIN" then
                sv = AutoDNDSV
                if sv.enabled and not UnitIsDND("player") then
                        GoDND()
                end
        elseif arg1 == CLEARED_AFK then
                timer = 0
                f:Show()
        end
end)

f:SetScript("OnUpdate", function(_, elapsed)
        timer = timer + elapsed
        if timer >= DELAY then
                GoDND()
                f:Hide()
        end
end)

function SendChatMessage(message, chatType, ...)
        if chatType == "DND" then
                if UnitIsDND("player") and message == "" then
                        sv.enabled = false
                        oldSendChatMessage(message, chatType, ...)
                        f:UnregisterEvent("CHAT_MSG_SYSTEM")
                        f:Hide()
                elseif UnitIsAFK("player") then
                        sv.message = message
                        sv.enabled = true
                        f:RegisterEvent("CHAT_MSG_SYSTEM")
                        oldSendChatMessage("", "AFK", ...)
                else
                        sv.message = message
                        sv.enabled = true
                        GoDND()
                end
        else
                oldSendChatMessage(message, chatType, ...)
        end
end

Compare with Previous | Blame