diff --git a/GarrisonCommander.lua b/GarrisonCommander.lua
index c4d0de6..3f9d99c 100644
--- a/GarrisonCommander.lua
+++ b/GarrisonCommander.lua
@@ -327,31 +327,31 @@ sorters.Xp=function (mission1, mission2)
end
end
function addon.Garrison_SortMissions_Chance(missionsList)
- addon:OnAllMissions(function(missionID) addon:MatchMaker(missionID) end)
+ addon:OnAllGarrisonMissions(function(missionID) addon:MatchMaker(missionID) end)
table.sort(missionsList, sorters.Chance);
end
function addon.Garrison_SortMissions_Age(missionsList)
- addon:OnAllMissions(function(missionID) addon:MatchMaker(missionID) end)
+ addon:OnAllGarrisonMissions(function(missionID) addon:MatchMaker(missionID) end)
table.sort(missionsList, sorters.Age);
end
function addon.Garrison_SortMissions_Duration(missionsList)
- addon:OnAllMissions(function(missionID) addon:MatchMaker(missionID) end)
+ addon:OnAllGarrisonMissions(function(missionID) addon:MatchMaker(missionID) end)
table.sort(missionsList, sorters.Duration);
end
function addon.Garrison_SortMissions_Followers(missionsList)
- addon:OnAllMissions(function(missionID) addon:MatchMaker(missionID) end)
+ addon:OnAllGarrisonMissions(function(missionID) addon:MatchMaker(missionID) end)
table.sort(missionsList, sorters.Followers);
end
function addon.Garrison_SortMissions_Xp(missionsList)
- addon:OnAllMissions(function(missionID) addon:MatchMaker(missionID) end)
+ addon:OnAllGarrisonMissions(function(missionID) addon:MatchMaker(missionID) end)
table.sort(missionsList, sorters.Xp);
end
function addon.Garrison_SortMissions_Original(missionsList)
- addon:OnAllMissions(function(missionID) addon:MatchMaker(missionID) end)
+ addon:OnAllGarrisonMissions(function(missionID) addon:MatchMaker(missionID) end)
origGarrison_SortMissions(missionsList)
end
function addon.Garrison_SortMissions_Class(missionsList)
- addon:OnAllMissions(function(missionID) addon:MatchMaker(missionID) end)
+ addon:OnAllGarrisonMissions(function(missionID) addon:MatchMaker(missionID) end)
table.sort(missionsList, sorters.Class);
end
local t={}
@@ -1679,9 +1679,6 @@ function addon:AddMissionId(b)
GameTooltip:Show()
end
end
-function addon:HookedClickOnTabs(tab)
- lastTab=tab
-end
---
-- Additional setup
-- This method is called every time garrison mission panel is open because
@@ -1732,7 +1729,6 @@ function addon:StartUp(...)
self:RefreshFollowerStatus()
self:Trigger("MSORT")
self:Trigger("CKMP")
- GMFMissions.listScroll.update = over.GarrisonMissionList_Update
self:FollowerPageStartUp()
return self:RefreshMissions()
end
@@ -2472,17 +2468,20 @@ function over.GarrisonMissionPage_Close(self)
-- I hooked this handler, so I dont want it to be called in the middle of cleanup operations
GarrisonMissionFrame.MissionTab.MissionList:Show();
end
-function over.GarrisonMissionButton_SetRewards(self, rewards, numRewards)
+function over.GarrisonMissionButton_SetRewards(frame,rewards,numRewards)
+ addon:DrawSingleButton(GMF,frame,false,ns.bigscreen)
+end
+function addon:AddRewards(frame, rewards, numRewards)
if (numRewards > 0) then
local index = 1;
- local party=self.party
- local mission=self.info
+ local party=frame.party
+ local mission=frame.info
for id, reward in pairs(rewards) do
- if (not self.Rewards[index]) then
- self.Rewards[index] = CreateFrame("Frame", nil, self, "GarrisonMissionListButtonRewardTemplate");
- self.Rewards[index]:SetPoint("RIGHT", self.Rewards[index-1], "LEFT", 0, 0);
+ if (not frame.Rewards[index]) then
+ frame.Rewards[index] = CreateFrame("Frame", nil, frame, "GarrisonMissionListButtonRewardTemplate");
+ frame.Rewards[index]:SetPoint("RIGHT", frame.Rewards[index-1], "LEFT", 0, 0);
end
- local Reward = self.Rewards[index];
+ local Reward = frame.Rewards[index];
Reward.Quantity:Hide();
Reward.itemID = nil;
Reward.currencyID = nil;
@@ -2495,7 +2494,7 @@ function over.GarrisonMissionButton_SetRewards(self, rewards, numRewards)
Reward.Quantity:SetText(reward.quantity);
Reward.Quantity:Show();
elseif reward.itemID==120205 then
- Reward.Quantity:SetText(self.info.xp);
+ Reward.Quantity:SetText(frame.info.xp);
Reward.Quantity:Show();
else
local name,link,quality,iLevel,level=GetItemInfo(reward.itemID)
@@ -2560,62 +2559,8 @@ function over.GarrisonMissionButton_SetRewards(self, rewards, numRewards)
end
end
- for i = (numRewards + 1), #self.Rewards do
- self.Rewards[i]:Hide();
- end
-end
-do
- local lastcall=math.floor(GetTime()*10)
- local progressing
- function over.GarrisonMissionList_Update()
- if (addon:IsRewardPage()) then return end
- local self = GarrisonMissionFrame.MissionTab.MissionList;
- local missions;
- if (self.showInProgress) then
- -- Ten times in a second is enough...
- local tick=math.floor(GetTime())
- if (tick == lastcall) then
- else
- collectgarbage("step",500)
- lastcall=tick
- return
- end
- table.sort(self.inProgressMissions,sorters.EndTime)
- missions = self.inProgressMissions;
- else
- progressing=false
- missions = self.availableMissions;
- end
- local numMissions = #missions;
- local scrollFrame = self.listScroll;
- local offset = HybridScrollFrame_GetOffset(scrollFrame);
- local buttons = scrollFrame.buttons;
- local numButtons = #buttons;
-
- if (numMissions == 0) then
- self.EmptyListString:Show();
- else
- self.EmptyListString:Hide();
- end
- for i = 1, numButtons do
- dbg=i==1
- local button = buttons[i];
- local index = offset + i; -- adjust index
- if ( index <= numMissions) then
- local mission = missions[index];
- button.id = index;
- button.info = mission;
- button.party=addon:GetParty(mission.missionID)
- else
- button.id=0
- button.info=nil
- button.party=nil
- end
- addon:DrawSingleButton(self,button,false,ns.bigscreen)
- end
- local totalHeight = numMissions * scrollFrame.buttonHeight;
- local displayedHeight = numButtons * scrollFrame.buttonHeight;
- HybridScrollFrame_Update(scrollFrame, totalHeight, displayedHeight);
+ for i = (numRewards + 1), #frame.Rewards do
+ frame.Rewards[i]:Hide();
end
end
function over.GarrisonMissionPageFollowerFrame_OnEnter(self)
@@ -2691,7 +2636,7 @@ function addon:DrawSingleButton(page,button,progressing,bigscreen)
if not button.party then button.party=self:GetParty(missionID) end
self:AddStandardDataToButton(page,button,mission,missionID,bigscreen)
self:AddIndicatorToButton(button,mission,missionID,bigscreen)
- over.GarrisonMissionButton_SetRewards(button, mission.rewards, mission.numRewards);
+ self:AddRewards(button, mission.rewards, mission.numRewards);
self:AddFollowersToButton(button,mission,missionID,bigscreen)
if page and not self:IsRewardPage() then
self:AddThreatsToButton(button,mission,missionID,bigscreen)
@@ -2721,7 +2666,7 @@ function addon:DrawSingleSlimButton(page,button,progressing,bigscreen)
local missionID=mission.missionID
local frame=button
self:AddStandardDataToButton(page,button,mission,missionID,bigscreen)
- over.GarrisonMissionButton_SetRewards(button, mission.rewards, mission.numRewards);
+ self.AddRewards(button, mission.rewards, mission.numRewards);
if mission.followerTypeID==LE_FOLLOWER_TYPE_GARRISON_6_0 then
self:AddFollowersToButton(button,mission,missionID,bigscreen)
else
@@ -2803,21 +2748,6 @@ function addon:AddStandardDataToButton(page,button,mission,missionID,bigscreen)
button.Rewards[1]:SetPoint("RIGHT",button,"RIGHT",-500 - (GMM and 40 or 0),0)
end
button.MissionType:SetPoint("TOPLEFT",5,-2)
- if page then
- local isNewMission = page.newMissionIDs[mission.missionID];
- if (isNewMission) then
- if (not button.NewHighlight) then
- button.NewHighlight = CreateFrame("Frame", nil, button, "GarrisonMissionListButtonNewHighlightTemplate");
- button.NewHighlight:SetPoint("TOPLEFT", button, "TOPLEFT", 0, 0);
- button.NewHighlight:SetPoint("BOTTOMRIGHT", button, "BOTTOMRIGHT", 0, 0);
- end
- button.NewHighlight:Show();
- else
- if (button.NewHighlight) then
- button.NewHighlight:Hide();
- end
- end
- end
local n=mission.numRewards
local w=button:GetWidth()-175 -- 655 for standard 830 button
if button:GetWidth()<1000 then n=n+mission.numFollowers end
@@ -2868,8 +2798,8 @@ function addon:AddThreatsToButton(button,mission,missionID,bigscreen)
button.Env:SetScript("OnEnter",nil)
button.Env:Hide()
end
- for i=1,#mission.enemies do
- local enemy=mission.enemies[i]
+ local enemies=mission.enemies or select(8,G.GetMissionInfo(missionID))
+ for i,enemy in ipairs(enemies) do
for mechanicID, mechanic in pairs(enemy.mechanics) do
local th=button.GcThreats[threatIndex]
if (not th) then
@@ -2941,7 +2871,7 @@ function addon:AddIndicatorToButton(button,mission,missionID,bigscreen)
button.xp:SetJustifyH("CENTER")
end
button.xp:SetWidth(0)
- local xp=(self:GetMissionData(missionID,'xp')+self:GetMissionData(missionID,'xpBonus')+(self:GetParty(missionID)['xpBonus'] or 0) )*button.info.numFollowers
+ local xp=(self:GetMissionData(missionID,'xp',0)+self:GetMissionData(missionID,'xpBonus',0)+self:GetParty(missionID,'xpBonus',0) )*button.info.numFollowers
button.xp:SetFormattedText("Xp: %d",xp)
button.xp:SetTextColor(self:GetDifficultyColors(xp/3000*100))
button.xp:Show()
@@ -3024,9 +2954,12 @@ function over.GarrisonMissionList_SetTab(...)
end
if (HD) then addon:ResetSinks() end
end
+function addon:HookedClickOnTabs(tab)
+ print(tab)
+ lastTab=tab
+end
function over.GarrisonMissionFrame_SelectTab(self,tab,...)
- -- I dont actually care wich page we are shoing, I know I must redraw missions
- orig.GarrisonMissionFrame_SelectTab(self,tab,...)
+ print(tab)
addon:RefreshFollowerStatus()
for i=1,#GMFMissionListButtons do
GMFMissionListButtons.lastMissionID=nil
@@ -3038,19 +2971,14 @@ function over.GarrisonMissionFrame_SelectTab(self,tab,...)
ns.GMC:Hide()
end
end
-function over.GarrisonMissionButton_OnClick(f,b)
- print(f,f:GetName())
- return orig.GarrisonMissionButton_OnClick(f,b)
-end
+--override("GarrisonMissionList_Update")
+override("GarrisonMissionButton_SetRewards",true)
+--GMFMissions.listScroll.update = over.GarrisonMissionList_Update
---hooksecurefunc("GarrisonMissionList_Update",function(...)print("Original GarrisonMissionList_Update",...)end)
-override("GarrisonMissionList_Update")
-override("GarrisonMissionButton_SetRewards")
override("GarrisonMissionButton_OnEnter")
override("GarrisonMissionPageFollowerFrame_OnEnter")
override("GarrisonMissionList_SetTab")
-override("GarrisonMissionButton_OnClick")
-override("GarrisonMissionFrame","SelectTab")
+hooksecurefunc(GMF,"SelectTab",over.GarrisonMissionFrame_SelectTab)
GMF.MissionTab.MissionPage.CloseButton:SetScript("OnClick",over.GarrisonMissionPage_Close)
for i=1,#GMFMissionListButtons do
local b=GMFMissionListButtons[i]