From 02a9c9e391d17cd40256c9ab47d8b3c39c971ec9 Mon Sep 17 00:00:00 2001 From: Alar of Daggerspine Date: Sat, 29 Nov 2014 03:38:35 +0100 Subject: [PATCH] Better autoupdating of mission info Signed-off-by: Alar of Daggerspine --- GarrisonCommander.lua | 37 ++++++++++++++++++++++++++----------- 1 file changed, 26 insertions(+), 11 deletions(-) diff --git a/GarrisonCommander.lua b/GarrisonCommander.lua index f32cf6c..be13fbb 100644 --- a/GarrisonCommander.lua +++ b/GarrisonCommander.lua @@ -71,8 +71,10 @@ local function capitalize(s) end local masterplan local followers +local dirty local successes={} -local notEnough={} +local requested={} +local availableFollowers=0 local GMF local GMFFollowers local GMFMissions @@ -143,7 +145,7 @@ end -- This is a ugly hack while I rewrite this code for 2.0 function addon:TooltipAdder(missionID,skipTT) --@debug@ - GameTooltip:AddLine("ID:" .. tostring(missionID)) + if (not skipTT) then GameTooltip:AddLine("ID:" .. tostring(missionID)) end --@end-debug@ local perc=select(4,C_Garrison.GetPartyMissionInfo(missionID)) local q=self:GetDifficultyColor(perc) @@ -153,7 +155,7 @@ function addon:TooltipAdder(missionID,skipTT) local buffs=new() local traits=new() local fellas=new() - local availableFollowers=0 + availableFollowers=0 self:GetRunningMissionData() for id,d in pairs(C_Garrison.GetBuffedFollowersForMission(missionID)) do buffed[id]=d @@ -223,6 +225,7 @@ function addon:TooltipAdder(missionID,skipTT) end local added=new() local maxfollowers=C_Garrison.GetMissionMaxFollowers(missionID) + requested[missionID]=maxfollowers local partyshown=false local perc=0 if (next(traits) or next(buffs) ) then @@ -318,12 +321,10 @@ function addon:TooltipAdder(missionID,skipTT) local b=GameTooltip:GetOwner() successes[missionID]=perc if (availableFollowers < maxfollowers) then - notEnough[missionID]=true if (not skipTT) then GameTooltip:AddLine(GARRISON_PARTY_NOT_FULL_TOOLTIP,C:Red()) end else - notEnough[missionID]=nil end - self:AddPerc(GameTooltip:GetOwner()) + if (not skipTT) then self:AddPerc(GameTooltip:GetOwner()) end for _,id in pairs(added) do local rc,code=pcall(C_Garrison.RemoveFollowerFromMission,missionID,id) --@debug@ @@ -485,7 +486,10 @@ function addon:AddPerc(b,...) b.Success:SetTextColor(1,1,1) end b.Success:Show() - if (notEnough[missionID]) then + if (not requested[missionID]) then + requested[missionID]=C_Garrison.GetMissionMaxFollowers(missionID) + end + if (requested[missionID]>availableFollowers) then b.NotEnough:Show() else b.NotEnough:Hide() @@ -512,6 +516,13 @@ function addon:SetUp() --@debug@ print("Done in",format("%.3f",GetTime()-start)) --@end-debug@ + dirty=false +end +function addon:SetDirty(...) +--@debug@ + print("Dirty",...) +--@end-debug@ + dirty=true end function addon:Init() GMF=GarrisonMissionFrame @@ -538,11 +549,15 @@ function addon:Init() end self:HookScript(GMFMissions,"OnShow","SetUp") self:HookScript(GMF,"OnHide","CleanUp") - self:HookScript(GMF.MissionTab.MissionPage.StartMissionButton,"OnClick","CacheFollowers") ---@debug@ - self:postHookScript(GMF.MissionTab.MissionPage.CloseButton,"OnClick") ---@end-debug@ + self:HookScript(GMF.MissionTab.MissionPage.CloseButton,"OnClick","SetUp") + self:HookScript(GMF.MissionComplete,"OnHide","SetUp") self:ApplyMOVEPANEL(self:GetBoolean("MOVEPANEL")) + self:RegisterEvent("GARRISON_MISSION_BONUS_ROLL_LOOT","SetDirty") + self:RegisterEvent("GARRISON_MISSION_FINISHED","SetDirty") + self:RegisterEvent("GARRISON_MISSION_COMPLETE_RESPONSE","SetDirty") + self:RegisterEvent("GARRISON_MISSION_BONUS_ROLL_COMPLETE","SetDirty") + self:RegisterEvent("GARRISON_MISSION_LIST_UPDATE","SetUp") + self:RegisterEvent("GARRISON_MISSION_STARTED","SetDirty") end function addon:GarrisonMissionListTab_OnClick(frame, button) -- 1.7.9.5