From ffe9a9e2b1012d62d270d273500c6ad3d470b280 Mon Sep 17 00:00:00 2001 From: Alar of Daggerspine Date: Wed, 10 Dec 2014 01:07:52 +0100 Subject: [PATCH] Defined layout, fixed follower update bug Tooltip now are shown ehen you hover over GC panel Signed-off-by: Alar of Daggerspine --- GarrisonCommander.lua | 100 ++-- GarrisonCommander.xml | 46 +- RelNotes.lua | 5 +- bigframe.lua | 1348 +++++++++++++++++++++++++++++++++---------------- embeds.xml | 1 + 5 files changed, 1014 insertions(+), 486 deletions(-) diff --git a/GarrisonCommander.lua b/GarrisonCommander.lua index 7097a5c..0697754 100644 --- a/GarrisonCommander.lua +++ b/GarrisonCommander.lua @@ -1,4 +1,5 @@ local __FILE__=tostring(debugstack(1,2,0):match("(.*):1:")) -- MUST BE LINE 1 +print("Loading GarrisonCommander") local toc=select(4,GetBuildInfo()) local me, ns = ... local pp=print @@ -69,6 +70,7 @@ local requested={} local threats={} local availableFollowers=0 local skipBusy +local wipe=wipe local GMF=GarrisonMissionFrame local GMFFollowers=GarrisonMissionFrameFollowers local GMFMissions=GarrisonMissionFrameMissions @@ -79,6 +81,7 @@ local GMFTab1=GarrisonMissionFrameTab1 local GMFTab2=GarrisonMissionFrameTab2 local GMFMissionsTab1=GarrisonMissionFrameMissionsTab1 local GMFMissionsTab2=GarrisonMissionFrameMissionsTab2 +local GarrisonMissionFrameMissionsListScrollFrame=GarrisonMissionFrameMissionsListScrollFrame local GARRISON_FOLLOWER_WORKING=GARRISON_FOLLOWER_WORKING -- "Working local GARRISON_FOLLOWER_ON_MISSION=GARRISON_FOLLOWER_ON_MISSION -- "On Mission" local GARRISON_FOLLOWER_INACTIVE=GARRISON_FOLLOWER_INACTIVE --"Inactive" @@ -451,50 +454,30 @@ function addon:OnInitialized() self.db:RegisterDefaults(self.DbDefaults) skipBusy=self:GetBoolean("IGM") self:MasterPlanDetection(true) - self:FillFollowersList() + self:ScheduleTimer("MasterPlanDetection",2) + pcall(self.FillFollowersList,self) self:CacheFollowers() self:SecureHook("GarrisonMissionButton_AddThreatsToTooltip",function(id) self:TooltipAdder(id) end) self:SecureHook("GarrisonMissionButton_SetRewards","AddPerc") self:HookScript(GMF,"OnHide","CleanUp") - local f=GMF:CreateFontString() - f:SetFontObject(GameFontNormalSmall) - --f:SetHeight(32) - f:SetText(me .. L[" Options:"]) - --f:SetTextColor(C:Azure()) - f:Show() - GMF.GCLabel=f - local b=CreateFrame("CheckButton","GACOptions",GMF,"UICheckButtonTemplate") - b.text:SetText(L["Ignore busy followers"]) - b:SetChecked(self:GetBoolean('IGM')) - b:SetScript("OnCLick",function(b) self:ApplyIGM(b:GetChecked()) end) - b:Show() - GMF.GCIgnore=b - self:ApplyIGM(self:GetBoolean('IGM')) - local l=CreateFrame("CheckButton","GACLock",GMF,"UICheckButtonTemplate") - l.text:SetText(L["Unlock Panel"]) - l:SetChecked(self:GetBoolean('MOVEPANEL')) - l:SetScript("OnCLick",function(b) self:ApplyMOVEPANEL(b:GetChecked()) end) - l:Show() - f:SetPoint("BOTTOMLEFT",GMF,"TOPLEFT",10,15) - b:SetPoint("TOPLEFT",f,"TOPRIGHT",10,10) - l:SetPoint("TOPLEFT",b,"TOPRIGHT",10+b.text:GetWidth(),0) - GMF.GCLock=l + self:Options() self:ApplyMOVEPANEL(self:GetBoolean("MOVEPANEL")) -- Forcing refresh when needed without possibly disrupting Blizzard Logic self:SecureHook("GarrisonMissionPage_Close","RefreshMissions") -- Missino started self:SecureHook("GarrisonMissionFrame_HideCompleteMissions","RefreshMissions") -- Mission reward completed self:CacheFollowers() + self:RegisterEvent("GARRISON_MISSION_STARTED","RefreshMissions") --@debug@ --Only Used for development self:RegisterEvent("GARRISON_MISSION_LIST_UPDATE",print) self:RegisterEvent("GARRISON_FOLLOWER_LIST_UPDATE",print) --This event is quite useless, fires too often self:RegisterEvent("GARRISON_FOLLOWER_XP_CHANGEDE",print) - self:RegisterEvent("GARRISON_MISSION_STARTED",print) self:RegisterEvent("GARRISON_MISSION_BONUS_ROLL_LOOT",print) self:RegisterEvent("GARRISON_MISSION_FINISHED",print) self:RegisterEvent("GARRISON_MISSION_COMPLETE_RESPONSE",print) self:RegisterEvent("GARRISON_MISSION_BONUS_ROLL_COMPLETE",print) + self:RegisterEvent("GARRISON_MISSION_NPC_OPENED",print) self:SafeHookScript("GarrisonMissionFrameTab1","OnCLick") self:SafeHookScript("GarrisonMissionFrameTab2","OnCLick") self:SafeHookScript("GarrisonMissionFrameTab3","OnCLick") @@ -508,26 +491,73 @@ function addon:OnInitialized() --@end-debug@ return true end +function addon:Options() + local f=GMF:CreateFontString() + f:SetFontObject(GameFontNormalSmall) + --f:SetHeight(32) + f:SetText(me .. L[" Options:"]) + --f:SetTextColor(C:Azure()) + f:Show() + GMF.GCLabel=f + local b=CreateFrame("CheckButton","GACOptions",GMF,"UICheckButtonTemplate") + b.text:SetText(L["Ignore busy followers"]) + b:SetChecked(self:GetBoolean('IGM')) + b:SetScript("OnCLick",function(b) self:ApplyIGM(b:GetChecked()) end) + b:Show() + GMF.GCIgnore=b + self:ApplyIGM(self:GetBoolean('IGM')) + local l=CreateFrame("CheckButton","GACLock",GMF,"UICheckButtonTemplate") + l.text:SetText(L["Unlock Panel"]) + l:SetChecked(self:GetBoolean('MOVEPANEL')) + l:SetScript("OnCLick",function(b) self:ApplyMOVEPANEL(b:GetChecked()) end) + l:Show() + GMF.GCLock=l +--@debug@ + local s=CreateFrame("Frame","GACStatus",GMF) + s:SetHeight(32) + local st=s:CreateFontString() + s.text=st + st:SetFontObject(GameFontNormalSmall) + st:Show() + st:SetAllPoints() + f:SetPoint("BOTTOMLEFT",GMF,"TOPLEFT",10,15) + b:SetPoint("TOPLEFT",f,"TOPRIGHT",10,10) + l:SetPoint("TOPLEFT",b,"TOPRIGHT",10+b.text:GetWidth(),0) + s:SetPoint("TOPLEFT",l,"TOPRIGHT",10+l.text:GetWidth(),0) + self:HookScript(s,"OnUpdate","Status") +--@end-debug@ +end function addon:ScriptTrace(hook,frame,...) --@debug@ print("Triggered " .. C(hook,"red").." script on",C(frame,"Azure"),...) --@end-debug@ end +function addon:Status(frame) + frame.text:SetText(format("PM:%s AM:%s FL:%s RP:%s MP:%s", + self:IsProgressMission() and 'Yes' or 'Not', + self:IsAvailableMission() and 'Yes' or 'Not', + self:IsFollowerList() and 'Yes' or 'Not', + self:IsRewardPage() and 'Yes' or 'Not', + self:IsMissionPage() and 'Yes' or 'Not') + ) + frame:SetWidth(frame.text:GetWidth()) +end function addon:IsProgressMission() - return GMF:IsShown() and GarrisonMissionFrameMissionsListScrollFrameScrollChild:IsShown() and GMFMissions.showInProgress + return GMF:IsShown() and GarrisonMissionFrameMissionsListScrollFrame:IsShown() and GMFMissions.showInProgress and not GMFFollowers:IsShown() and not GMF.MissionComplete:IsShown() end function addon:IsAvailableMission() - return GMF:IsShown() and GarrisonMissionFrameMissionsListScrollFrameScrollChild:IsShown() and not GMFMissions.showInProgress + return GMF:IsShown() and GarrisonMissionFrameMissionsListScrollFrame:IsShown() and not GMFMissions.showInProgress and not GMFFollowers:IsShown() and not GMF.MissionComplete:IsShown() end function addon:IsFollowerList() return GMF:IsShown() and GMFFollowers:IsShown() end +--GMFMissions.CompleteDialog function addon:IsRewardPage() - return GMF:IsShown() + return GMF:IsShown() and GMF.MissionComplete:IsShown() and not GMFFollowers:IsShown() end function addon:IsMissionPage() - return GMF:IsShown() and GMFMissionPage:IsSHown() + return GMF:IsShown() and GMFMissionPage:IsShown() and GMFFollowers:IsShown() end function addon:AddPerc(b,...) if (GMFMissions.CompleteDialog:IsShown()) then return end @@ -601,11 +631,12 @@ end function addon:CleanUp() collectgarbage("step",10) end + function addon:RefreshMissions() ---@debug@ - print("Refresh missions called") ---@end-debug@ if (self:IsAvailableMission()) then + --@debug@ + print("Refresh missions called") + --@end-debug@ self:CacheFollowers() wipe(successes) GarrisonMissionList_UpdateMissions() @@ -668,14 +699,15 @@ function addon:MasterPlanDetection(novar,...) if (loadable or reason=="DEMAND_LOADED") then if (novar) then masterplan=true - return else if (_G.MasterPlanConfig or _G.MasterPlanData ) then masterplan=true - self:SecureHook("GarrisonMissionList_UpdateMissions","RestoreTooltip") end end end + if (masterplan and not self:IsHooked("GarrisonMissionList_UpdateMissions")) then + self:SecureHook("GarrisonMissionList_UpdateMissions","RestoreTooltip") + end pcall(self.FixButtons,self) end --@do-not-package@ diff --git a/GarrisonCommander.xml b/GarrisonCommander.xml index 0c694c0..dbb5515 100644 --- a/GarrisonCommander.xml +++ b/GarrisonCommander.xml @@ -1,9 +1,38 @@ -