ESOUI SVN AutoGuildWelcomeRevised

[/] [AutoGuildWelcome.lua] - Rev 3

Compare with Previous | Blame | View Log

local ADDON_NAME = "AutoGuildWelcome"
local ADDON_AUTHOR = "|c990000CaffeinatedMayhem,Phobus11|r"
local ADDON_VERSION = "1.0"
local ADDON_TITLE = "Auto Welcome Guild Members"
local ADDON_TITLE_DISPLAY = "|c00FF20Auto Welcome Guild Members|r"
local ADDON_SAVEDVARS = "AutoGuildWelcome_Settings"

AGW = {}
local AGW = AGW

AGW.Settings = {}

AGW.Defaults = {
        welcome = {false, false, false, false, false},
        message = {
                "Welcome %1 to guild 1",
                "Welcome %1 to guild 2",
                "Welcome %1 to guild 3",
                "Welcome %1 to guild 4",
                "Welcome %1 to guild 5"
        }
}

local GuildCount = GetNumGuilds()
local GuildNames = {}
local GuildNumbers = {}

local LAM = LibAddonMenu2

-- ===============================================================================
-- Load guild names and IDs into tables
-- ===============================================================================
local function GatherGuildInfo()
        if GuildCount < 1 then return end
        for i = 1, GuildCount do
                local guildID = GetGuildId(i)
                GuildNames[guildID] = GetGuildName(guildID)
                GuildNumbers[guildID] = i
                d(GuildNumbers[guildID] .. ": " ..guildID .. " " .. GuildNames[guildID])
        end
end

-- ===============================================================================
-- Welcome our newest member
-- ===============================================================================
function addWelcomeToChat(_, gId, pName)
        local gNum = GuildNumbers[gId]
        local msg = AGW.Settings.message[gNum]

        if AGW.Settings.welcome[gNum] == true then
                --d("Welcoming for this guild")
                local welcome = "/g" .. gNum .. " " .. string.gsub(msg, "%%1", pName)
                ZO_ChatWindowTextEntryEditBox:SetText(welcome)
        --else
                --d("No guild match")
        end
end
                        
-- ===============================================================================
-- Build options menu
-- ===============================================================================
local function buildMenu()

        local bval = 1
        local msg = 1
        
        local panelData = {
                type = "panel",
                name = ADDON_TITLE,
                displayName = ADDON_TITLE_DISPLAY,
                author = ADDON_AUTHOR,
                version = ADDON_VERSION,
                registerForRefresh = true,
                registerForDefaults = true,
        }
        LAM:RegisterAddonPanel(ADDON_NAME .. "Options", panelData)

        local optionsTable = {}

        for i = 1, GuildCount do
                local gId = GetGuildId(i)
                optionsTable[#optionsTable+1] = {
                        type = "checkbox",
                        name = GuildNames[gId],
                        tooltip = "Enable welcome message for this guild",
                        getFunc = function() return AGW.Settings.welcome[i] end,
                        setFunc = function(choice) AGW.Settings.welcome[i] = choice end,
                        width = "half",
                        default = AGW.Defaults.welcome[i],
                }
                optionsTable[#optionsTable+1] = {
                        type = "editbox",
                        name = "",
                        tooltip = "Text to place in guild chat",
                        isMultiline = true,
                        isExtraWide = true,
                        getFunc = function() return AGW.Settings.message[i] end,
                        setFunc = function(text) AGW.Settings.message[i] = text end,
                        width = "half",
                        default = AGW.Defaults.message[i],
                }
        end

        LAM:RegisterOptionControls(ADDON_NAME .. "Options", optionsTable)
        
end

-- ===============================================================================
-- Load addon into memory
-- ===============================================================================
function OnAddonLoaded(event, addon)
        if addon ~= ADDON_NAME then return end
        
        GatherGuildInfo()

        AGW.Settings = ZO_SavedVars:NewAccountWide(ADDON_SAVEDVARS, ADDON_VERSION, "Settings", AGW.Defaults)

        buildMenu()
        
        EVENT_MANAGER:UnregisterForEvent(ADDON_NAME, EVENT_ADD_ON_LOADED)
end

EVENT_MANAGER:RegisterForEvent(ADDON_NAME, EVENT_GUILD_MEMBER_ADDED, addWelcomeToChat)
EVENT_MANAGER:RegisterForEvent(ADDON_NAME, EVENT_ADD_ON_LOADED, OnAddonLoaded)

Compare with Previous | Blame