View Single Post
08-15-19, 01:43 PM   #4
pas06
A Theradrim Guardian
Join Date: Apr 2009
Posts: 62
I did a rewrite of your code, i could tell its really messy

Check it out and tell me if it works as desired, i kept your way of canceling the timers.

Code:
assert(LoadAddOn("Blizzard_TimeManager"))
local DHMB

local Minimap_Buttons = {
	GameTimeFrame,
	GarrisonLandingPageMinimapButton,
	GuildInstanceDifficulty,
	MiniMapChallengeMode,
	MiniMapInstanceDifficulty,
	MiniMapTracking,
	MiniMapTrackingButton,
	MiniMapWorldMapButton,
	MinimapZoneTextButton,
	MinimapZoomIn,
	MinimapZoomOut,
	QueueStatusMinimapButton,
	TimeManagerClockButton,
}


local function Stop_Minimap_Loop_Pulse_Anim()
	GarrisonLandingPageMinimapButton.MinimapLoopPulseAnim:Stop()
end

local function Hide_MinimapBorderTop_MinimapButtons() 
	MinimapBorderTop:SetAlpha(0)
	for _, frame in pairs(Minimap_Buttons) do
		frame:SetAlpha(0)
	end
end

local function OnEnter() 
	if DHMB then DHMB:Cancel() end
	for _, frame in pairs(Minimap_Buttons) do
		frame:SetAlpha(1)
	end
	MinimapBorderTop:SetAlpha(1)
	Stop_Minimap_Loop_Pulse_Anim() 
end

local function OnLeave()
	DHMB = C_Timer.NewTimer(.25, Hide_MinimapBorderTop_MinimapButtons)
	Stop_Minimap_Loop_Pulse_Anim()
end

local function SetupHooks(frame)
	frame:HookScript("OnEnter", OnEnter)
	frame:HookScript("OnLeave", OnLeave)
end


SetupHooks(MiniMapMailFrame)
SetupHooks(Minimap)
MinimapBorderTop:SetAlpha(0)

for _, frame in pairs(Minimap_Buttons) do
	SetupHooks(frame):
	frame:SetAlpha(0)
end
Edit:
Something to point out, some mistakes you made:
  • HookScript only takes one function, you inserted multiple ones
  • many code parts got executed in the same situations as other, i combined this into one function to clean it up
  • you were running code that didn't use loop objects or variables in a loop which is unecessary (running Minimap:HookScript inside the loop over your minimap buttons.)
  • dont use global variables if you dont need to. (DHMB was global)

    Happy learning

Last edited by pas06 : 08-15-19 at 01:50 PM.
  Reply With Quote