local ADDON_NAME = "HailMaryGuildTools" local HMGT = LibStub("AceAddon-3.0"):GetAddon(ADDON_NAME) if not HMGT then return end local L = LibStub("AceLocale-3.0"):GetLocale(ADDON_NAME, true) or {} local EA = HMGT:NewModule("EncounterAlerts", "AceEvent-3.0") HMGT.EncounterAlerts = EA EA.runtimeEnabled = false function EA:GetSettings() local profile = HMGT.db and HMGT.db.profile profile = profile or {} profile.encounterAlerts = type(profile.encounterAlerts) == "table" and profile.encounterAlerts or {} return profile.encounterAlerts end function EA:GetLuraRunesSettings() local settings = self:GetSettings() settings.luraRunes = type(settings.luraRunes) == "table" and settings.luraRunes or {} return settings.luraRunes end function EA:OnEnable() local settings = self:GetSettings() self.runtimeEnabled = settings.enabled == true self:RegisterEvent("PLAYER_ENTERING_WORLD", "RefreshLuraRunesContext") self:RegisterEvent("ZONE_CHANGED", "RefreshLuraRunesContext") self:RegisterEvent("ZONE_CHANGED_INDOORS", "RefreshLuraRunesContext") self:RegisterEvent("ZONE_CHANGED_NEW_AREA", "RefreshLuraRunesContext") self:RegisterEvent("GROUP_ROSTER_UPDATE", "RefreshLuraRunesContext") self:RegisterEvent("INSTANCE_ENCOUNTER_ENGAGE_UNIT", "RefreshLuraRunesContext") self:RegisterEvent("PLAYER_TARGET_CHANGED", "RefreshLuraRunesContext") self:RegisterEvent("ENCOUNTER_START", "HandleLuraEncounterStart") self:RegisterEvent("ENCOUNTER_END", "HandleLuraEncounterEnd") self:RegisterEvent("CHAT_MSG_RAID", "HandleLuraRaidChat") self:RegisterEvent("CHAT_MSG_RAID_LEADER", "HandleLuraRaidChat") if self.LuraRunes and self.LuraRunes.Refresh then self.LuraRunes:Refresh() end end function EA:Enable() local settings = self:GetSettings() settings.enabled = true self.runtimeEnabled = true if self.LuraRunes and self.LuraRunes.Refresh then self.LuraRunes:Refresh() end end function EA:Disable() local settings = self:GetSettings() settings.enabled = false self.runtimeEnabled = false if self.LuraRunes and self.LuraRunes.Hide then self.LuraRunes:Hide() end end function EA:GetDisplayName() return L["OPT_MODULE_ENCOUNTER_ALERTS"] or "Encounter Alerts" end function EA:RefreshLuraRunesContext(event) if self.LuraRunes and self.LuraRunes.RefreshContext then self.LuraRunes:RefreshContext(event) end end function EA:HandleLuraEncounterStart(_, encounterId, encounterName) if self.LuraRunes and self.LuraRunes.OnEncounterStart then self.LuraRunes:OnEncounterStart(encounterId, encounterName) end end function EA:HandleLuraEncounterEnd(_, encounterId) if self.LuraRunes and self.LuraRunes.OnEncounterEnd then self.LuraRunes:OnEncounterEnd(encounterId) end end function EA:HandleLuraRunesComm(senderName, payload) if self.LuraRunes and self.LuraRunes.HandleComm then self.LuraRunes:HandleComm(senderName, payload) end end function EA:HandleLuraRaidChat(event, message, senderName) if self.LuraRunes and self.LuraRunes.HandleRaidChatMessage then self.LuraRunes:HandleRaidChatMessage(message, senderName, event) end end function EA:HandleSlashCommand(input) if self.LuraRunes and self.LuraRunes.HandleSlashCommand then self.LuraRunes:HandleSlashCommand(input) else HMGT:OpenConfig() end end