-- Author : Christopher Tse -- Create Date : 3/28/2020 11:43:45 AM local ADDON_NAME, Import = ...; local ChatBubblePool = Import.ChatBubblePool local settings; function RPChatBubbles_OnLoad(self, event,...) self:SetClampedToScreen(true); self:RegisterEvent("ADDON_LOADED"); end function RPChatBubbles_OnEvent(self, event, ...) if event == "ADDON_LOADED" and ... == ADDON_NAME then Import:initSettings(); settings = Import.settings; self:RegisterForDrag("LeftButton"); self:SetScript("OnDragStart", function(self) self:StartMoving(); end); self:SetScript("OnDragStop", function(self) self:StopMovingOrSizing(); end); for moduleName, moduleStructure in pairs(Import.modules) do moduleStructure:OnStart(); end SetVisibility(self, settings.isFrameVisible); end end function RPChatBubbles_createChatBubble() return ChatBubblePool.getChatBubble() end function RPChatBubbles_toggleVisibility() if settings.isFrameVisible then settings.isFrameVisible = false; else settings.isFrameVisible = true end SetVisibility(MainFrame, settings.isFrameVisible); end function RPChatBubbles_showSettingsPanel(self, event, ...) Import.ShowSettingsPanel(); end function SetVisibility(self, visible) if visible then self:SetAlpha(1.0); removeVisibilityScripts(MainFrame); removeVisibilityScripts(CreateButton); removeVisibilityScripts(SettingsButton); removeVisibilityScripts(HideButton); HideButtonTexture:SetTexture("Interface/Addons/RoleplayChatBubbles/button/UI-hideButton"); else self:SetAlpha(0.5); addVisibilityScripts(MainFrame); addVisibilityScripts(CreateButton); addVisibilityScripts(SettingsButton); addVisibilityScripts(HideButton); HideButtonTexture:SetTexture("Interface/Addons/RoleplayChatBubbles/button/UI-showButton"); end end function removeVisibilityScripts(frame) frame:SetScript("OnEnter",nil); frame:SetScript("OnLeave",nil); end function addVisibilityScripts(frame) frame:SetScript("OnEnter",ShowRPCMainFrame); frame:SetScript("OnLeave",HideRPCMainFrame); end function ShowRPCMainFrame(self, event, ...) MainFrame:SetAlpha(0.5); end function HideRPCMainFrame(self, event, ...) MainFrame:SetAlpha(0); end Import.modules = {};