Quantcast

In progress mission sort restored

Alar of Daggerspine [07-23-15 - 22:09]
In progress mission sort restored

Also fix the double toolbar issue and the all rare missions in mission
control

Signed-off-by: Alar of Daggerspine <alar@aspide.it>
Filename
CHANGELOG.txt
GarrisonCommander.lua
PartyCache.lua
diff --git a/CHANGELOG.txt b/CHANGELOG.txt
index 0999394..f153f9a 100644
--- a/CHANGELOG.txt
+++ b/CHANGELOG.txt
@@ -6,6 +6,7 @@ Feature: Shipyard map enhanced with success chance. Chance is show as a number,
 Feature: Enhanced Shipyard map tooltip
 Feature: For level 100 mission itemLevel is now shown instead of level
 Feature: Mission level are now colored based on quality
+Feature: In progress mission sorting is back


 * *2.6.8*
diff --git a/GarrisonCommander.lua b/GarrisonCommander.lua
index 8c1d713..7837725 100644
--- a/GarrisonCommander.lua
+++ b/GarrisonCommander.lua
@@ -338,9 +338,6 @@ addon.Garrison_SortMissions_Original=_G.Garrison_SortMissions
 local Garrison_SortMissions=_G.Garrison_SortMissions
 _G.Garrison_SortMissions= function(missionsList)
 	if GMF:IsVisible() then
-		--@debug@
-		print("Sorting")
-		--@end-debug@
 		Garrison_SortMissions(missionsList)
 	end
 end
@@ -1160,7 +1157,7 @@ function addon:AddOptionToOptionsLayer(o,flag,maxsize)
 	return maxsize
 end

-function addon:Options()
+function addon:CreateHeader()
 	-- Main Garrison Commander Header
 	GCF=CreateFrame("Frame","GCF",UIParent,"GarrisonCommanderTitle")
 	local signature=me .. " " .. self.version
@@ -1248,7 +1245,7 @@ function addon:Options()
 		GCFBusyStatus=fs
 	end
 	self:Trigger("MOVEPANEL")
-	self.Options=function() end
+	self.CreateHeader=function() end
 end

 function addon:ScriptTrace(hook,frame,...)
@@ -1430,10 +1427,6 @@ function addon.ClonedGarrisonMissionMechanic_OnEnter(this)
 			local t=G.GetFollowersTraitsForMission(this.missionID)
 			for followerID,k in pairs(t) do
 				for i=1,#k do
-
---@debug@
-print(k[i].icon)
---@end-debug@
 					if k[i].icon==this.texture then
 						tip:AddDoubleLine(addon:GetFollowerData(followerID,'fullname'),this.Name)
 					end
@@ -1546,7 +1539,7 @@ print("Setup")
 	SIZEV=GMF:GetHeight()
 	self:CheckMP()
 	self:CheckGMM()
-	self:Options()
+	self:CreateHeader()
 	local tabMC=CreateFrame("CheckButton",nil,GMF,"SpellBookSkillLineTabTemplate")
 	GMF.tabMC=tabMC
 	tabMC.tooltip="Open Garrison Commander Mission Control"
@@ -1592,6 +1585,12 @@ print("Setup")
 end

 function addon:AddMenu()
+--@debug@
+print("Adding Menu")
+--@end-debug@
+	if GCF.Menu then
+		return
+	end
 	local menu,size=self:CreateOptionsLayer(MP and 'CKMP' or nil,'BIGSCREEN','IGM','IGP','NOFILL','MSORT','MAXRES','USEFUL')
 --@debug@
 	self:AddOptionToOptionsLayer(menu,'DBG')
@@ -1610,8 +1609,14 @@ function addon:AddMenu()
 	GCF.Menu=menu
 end
 function addon:RemoveMenu()
+--@debug@
+print("Removing menu")
+--@end-debug@
 	if (GCF.Menu) then
-		pcall(GCF.Menu.Release,GCF.Menu)
+		local rc,message=pcall(GCF.Menu.Release,GCF.Menu)
+		--@debug@
+		print("Removed menu",rc,message)
+		--@end-debug@
 		GCF.Menu=nil
 	end
 end
@@ -2589,7 +2594,6 @@ function addon:DrawSlimButton(page,frame,progressing,bigscreen)
 	end
 end
 function addon:AddStandardDataToButton(page,button,mission,missionID,bigscreen)
-	print("Stdata",page)
 	if (bigscreen) then
 		button.Rewards[1]:SetPoint("RIGHT",button,"RIGHT",-500 - (GMM and 40 or 0),0)
 		local width=GMF.MissionTab.MissionList.showInProgress and BIGBUTTON or SMALLBUTTON
@@ -2598,6 +2602,15 @@ function addon:AddStandardDataToButton(page,button,mission,missionID,bigscreen)
 	end
 	button.MissionType:SetAtlas(mission.typeAtlas);
 	if page then return end
+	if (mission.isRare) then
+		button.RareOverlay:Show();
+		button.RareText:Show();
+		button.IconBG:SetVertexColor(0, 0.012, 0.291, 0.4)
+	else
+		button.RareOverlay:Hide();
+		button.RareText:Hide();
+		button.IconBG:SetVertexColor(0, 0, 0, 0.4)
+	end
 	if (mission.inProgress) then
 		button.Overlay:Show();
 		button.Summary:SetText(mission.timeLeft.." "..RED_FONT_COLOR_CODE..GARRISON_MISSION_IN_PROGRESS..FONT_COLOR_CODE_CLOSE);
@@ -2655,6 +2668,7 @@ function addon:AddLevel(page,button,mission,missionID,bigscreen)
 	button.Level:SetText(level)
 	button.Level:SetTextColor(self:GetQualityColor(quality))
 	button.ItemLevel:Hide();
+
 end
 function addon:AddThreatsToButton(button,mission,missionID,bigscreen)
 	local threatIndex=1
@@ -2881,6 +2895,7 @@ function addon:GarrisonMissionFrame_SelectTab(frame,tab)
 end
 function addon:HookedGarrisonMissionButton_SetRewards(frame,rewards,numRewards)
 	collectgarbage("step",300)
+	if not GMF:IsVisible() then return end
 	if frame.info then
 		if GMFMissions.showInProgress then
 			frame.Title:SetPoint("TOPLEFT",frame,"TOPLEFT",160,-25)
@@ -2902,22 +2917,45 @@ function addon:HookedGarrisonMissionButton_SetRewards(frame,rewards,numRewards)
 			self:MatchMaker(frame.info.missionID,frame.party)
 		end
 		--@debug@
-		print("Drawing",frame.info.name)
+		if not GMF:IsVisible() then print(debugstack()) end
 		--@end-debug@
 		self:DrawSingleButton(GMF,frame,GMFMissions.showInProgress,ns.bigscreen)
 	end
 end

-function addon:HookedGMFMissions_update(frame)
-	for _,b in ipairs(frame.buttons) do
-		if b.info then
-			--b.party=self:GetParty(b.info.missionID)
-			--self:MatchMaker(b.info,b.party)
-			--self:DrawSingleButton(GMF,b,false,ns.bigscreen)
+function addon:HookedGMFMissionsListScroll_update(frame)
+	if frame:GetParent().showInProgress then
+		self:HookedGarrisonMissionList_Update(frame,true)
+	else
+		self:HookedGarrisonMissionList_Update(frame,false)
+	end
+end
+do local lasttime=0
+function addon:HookedGarrisonMissionList_Update(t,...)
+	if not GMFMissions.showInProgress then
+		self.hooks.GarrisonMissionList_Update(t,...)
+		lasttime=0
+	else
+		local now=time()
+		local delay=120
+		if t then
+			lasttime=0
+		else
+			for _,mission in ipairs(GMFMissions.inProgressMissions) do
+				delay = min(mission.missionEndTime-now,delay)
+			end
+		end
+		if (now-lasttime) > ((delay>65) and 30 or 0) then
+			table.sort(GMFMissions.inProgressMissions,sorters.EndTime)
+			print("Aggiornamento")
+			self.hooks.GarrisonMissionList_Update(t,...)
+			lasttime=now
 		end
 	end
 end
---addon:SafeSecureHook(GMF.MissionTab.MissionList.listScroll,"update","HookedGMFMissions_update")
+end
+--addon:SafeRawHook(GMF.MissionTab.MissionList.listScroll,"update","HookedGMFMissionsListScroll_update")
+addon:SafeRawHook("GarrisonMissionList_Update")
 addon:SafeSecureHook("GarrisonMissionButton_SetRewards")
 addon:SafeRawHook("GarrisonMissionButton_OnEnter","ScriptGarrisonMissionButton_OnEnter")
 addon:SafeRawHook("GarrisonMissionPageFollowerFrame_OnEnter")
diff --git a/PartyCache.lua b/PartyCache.lua
index 02e6236..99e5202 100644
--- a/PartyCache.lua
+++ b/PartyCache.lua
@@ -225,9 +225,6 @@ function addon:GetParty(missionID,key,default)
 				party.members[i]=followers[i]
 			end
 		end
-		--@debug@
-		print(party.missionID,"InProgress party",party,party.full)
-		--@end-debug@
 	end
 	if key then
 		return party[key] or default