local me, ns = ... ns.Configure() local addon=addon --#addon local _G=_G local GMF=GMF local GSF=GSF local qm=addon:NewSubModule("Quick") --#qm local missionDone local shipyardDone local NavalDomination={ Alliance=39068, Horde=39246 } local questid=NavalDomination[UnitFactionGroup("player")] function qm:OnInitialized() ns.step="none" end local watchdog=0 local function HasShipTable() return ns.quests[39068] or ns.quests[39246] -- Naval Domination end function addon:missionDone() missionDone=true end function addon:shipyardDone() shipyardDone=true end function addon:LogoutTimer(dialog,elapsed) if dialog.which ~="LIBINIT_POPUP" then return end local text = _G[dialog:GetName().."Text"]; local timeleft = ceil(dialog.timeleft); local which=dialog.which if ( timeleft < 60 ) then text:SetFormattedText(StaticPopupDialogs[which].text, timeleft, SECONDS); else text:SetFormattedText(StaticPopupDialogs[which].text, ceil(timeleft / 60), MINUTES); end end function addon:LogoutPopup(timeout) local popup=addon:Popup(CAMP_TIMER,timeout or 10, function(dialog,data,data2) addon:Unhook(dialog,"OnUpdate") Logout() end, function(dialog,data,timeout) addon:Unhook(dialog,"OnUpdate") if timeout=="timeout" then Logout() end missionDone=false shipyardDone=false StaticPopup_Hide("LIBINIT_POPUP") end ) self:SecureHookScript(popup, "OnUpdate", "LogoutTimer") end function qm:RunQuick() local completeButton=GMF:IsVisible() and GarrisonCommanderQuickMissionComplete or GCQuickShipMissionCompletionButton local main=GMF:IsVisible() and GMF or GSF if not ns.quick then HideUIPanel(main) if not G.HasShipyard() then shipyardDone=true end if missionDone and shipyardDone then addon:LogoutPopup(10) end return end while not qm.Mission do if completeButton:IsVisible() then completeButton:Click() return -- Waits to be rescheeduled by mission completion end if not main.MissionControlTab:IsVisible() then main.tabMC:Click() break end if (main.MissionControlTab.runButton:IsEnabled()) then main.MissionControlTab.runButton:Click() end break -- Never loop or we get stuck end watchdog=watchdog+1 if watchdog > 10 then ns.quick=false end if ns.quick then return addon.ScheduleTimer(qm,"RunQuick",1) end end function addon:RunQuick(force) local main=GMF:IsVisible() and GMF or GSF if main.tabMC:GetChecked() then self:OpenMissionControlTab() self:ScheduleTimer("RunQuick",0.2) return end if not IsShiftKeyDown() and not force then self:Popup(L["Are you sure to start Garrison Commander Auto Pilot?\n(Keep shift pressed while clicking to avoid this question)"].."\n" .. C(format(L["Keep pressed %s while opening table to automate processing"],CTRL_KEY),"green"),10, function() StaticPopup_Hide("LIBINIT_POPUP") return addon:RunQuick(true) end, function() StaticPopup_Hide("LIBINIT_POPUP") end) else ns.quick=true qm.watchdog=0 return addon.ScheduleTimer(qm,"RunQuick",0.2) end end