From 9fd54bad25d2e1d05ac3126bded9002baa13b775 Mon Sep 17 00:00:00 2001 From: Alar of Daggerspine Date: Fri, 21 Aug 2015 16:05:10 +0200 Subject: [PATCH] Header menu is now context sensitive Signed-off-by: Alar of Daggerspine --- GarrisonCommander.lua | 66 +++++++++++++++++++++++++++++++++---------- MissionControl.lua | 35 ++++++++--------------- 2 files changed, 63 insertions(+), 38 deletions(-) diff --git a/GarrisonCommander.lua b/GarrisonCommander.lua index 9bce16e..ae34bed 100644 --- a/GarrisonCommander.lua +++ b/GarrisonCommander.lua @@ -426,12 +426,12 @@ print("Initialize") self:AddSlider("MAXRESCHANCE",80,50,100,L["Minum needed chance"],L["Applied when maximise result is enabled. Default is 80%"]) ns.bigscreen=self:GetBoolean("BIGSCREEN") self:AddLabel("Followers Panel") - self:AddSlider("MAXMISSIONS",5,1,8,L["Mission shown for follower"],nil,1) - self:AddSlider("MINPERC",50,0,100,L["Minimun chance success under which ignore missions"],nil,5) - self:AddToggle("ILV",true,L["Show weapon/armor level"],L["When checked, show on each follower button weapon and armor level for maxed followers"]) - self:AddToggle("IXP",true,L["Show xp to next level"],L["When checked, show on each follower button missing xp to next level"]) - self:AddToggle("UPG",true,L["Show upgrade options"],L["Only meaningful upgrades are shown"]) - self:AddToggle("NOCONFIRM",true,L["Don't ask for confirmation"],L["If checked, clicking an upgrade icon will consume the item and upgrade the follower\n|cFFFF0000NO QUESTION ASKED|r"]) + self:AddSlider("MAXMISSIONS",5,1,8,L["Mission shown"],L["Mission shown for follower"],1) + self:AddSlider("MINPERC",50,0,100,L["Minimun chance"],L["Minimun chance success under which ignore missions"],5) + self:AddToggle("ILV",true,L["Show itemlevel"],L["When checked, show on each follower button weapon and armor level for maxed followers"]) + self:AddToggle("IXP",true,L["Show xp"],L["When checked, show on each follower button missing xp to next level"]) + self:AddToggle("UPG",true,L["Show upgrades"],L["Only meaningful upgrades are shown"]) + self:AddToggle("NOCONFIRM",true,L["Don't ask confirmation"],L["If checked, clicking an upgrade icon will consume the item and upgrade the follower\n|cFFFF0000NO QUESTION ASKED|r"]) self:AddToggle("SWAPBUTTONS",false,L["Swap upgrades position"],L["IF checked, shows armors on the left and weapons on the right "]) self:AddLabel("Buildings Panel") self:AddToggle("HF",false,L["Hide followers"],L["Do not show follower icon on plots"]) @@ -532,6 +532,8 @@ end function addon:ApplyMAXMISSIONS(value) MAXMISSIONS=value BUSY_MESSAGE=format(BUSY_MESSAGE_FORMAT,MAXMISSIONS,MINPERC) + if ns.bigscreen and GMF.FollowerTab:IsVisible() then + end end function addon:ApplyMINPERC(value) MINPERC=value @@ -603,7 +605,7 @@ function addon:SetThreatColor(obj,threat) end function addon:HookedGarrisonMissionButton_AddThreatsToTooltip(missionID) - if (ns.ns.GMC:IsVisible()) then return end + if (ns.GMF.MissionControlTab:IsVisible()) then return end return self:RenderTooltip(missionID) end function addon:AddIconsToFollower(missionID,useful,followers,members,followerTypeID) @@ -1080,6 +1082,9 @@ function addon:AddOptionToOptionsLayer(o,flag,maxsize) if (info) then local data={option=info} local widget +--@debug@ + print("Adding option",flag,info.type,info) +--@end-debug@ if (info.type=="toggle") then widget=AceGUI:Create("CheckBox") local value=self:GetBoolean(flag) @@ -1101,6 +1106,16 @@ function addon:AddOptionToOptionsLayer(o,flag,maxsize) widget:SetCallback("OnClick",function(widget,event,value) self[info.func](self,data,value) end) + elseif (info.type=="range") then + local value=self:GetNumber(flag) + widget=AceGUI:Create("Slider") + widget:SetLabel(info.name) + widget:SetValue(value) + widget:SetSliderValues(info.min,info.max,info.step) + widget:SetWidth(maxsize) + widget:SetCallback("OnClick",function(widget,event,value) + self[info.func](self,data,value) + end) else widget=AceGUI:Create("Label") widget:SetText(info.name) @@ -1477,7 +1492,12 @@ print("Setup") --collectgarbage("step",10) --/Interface/FriendsFrame/UI-Toast-FriendOnlineIcon end - +function addon:RefreshMenu() + if not self.currentmenu or not self.currentmenu:IsVisible() then + self:RemoveMenu() + self:AddMenu() + end +end function addon:AddMenu() --@debug@ print("Adding Menu") @@ -1485,7 +1505,17 @@ print("Adding Menu") if GCF.Menu then return end - local menu,size=self:CreateOptionsLayer(MP and 'CKMP' or nil,'BIGSCREEN','IGM','IGP','NOFILL','MSORT','MAXRES','USEFUL') + local menu,size + if GMF.MissionTab:IsVisible() then + self.currentmenu=GMF.MissionTab + menu,size=self:CreateOptionsLayer(MP and 'CKMP' or nil,'BIGSCREEN','IGM','IGP','NOFILL','MSORT','MAXRES','USEFUL') + elseif GMF.FollowerTab:IsVisible() then + self.currentmenu=GMF.FollowerTab + menu,size=self:CreateOptionsLayer('BIGSCREEN',ns.bigscreen and 'MAXMISSIONS' or nil,ns.bigscreen and 'MINPERC' or nil,'ILV','IXP','UPG','NOCONFIRM','SWAPBUTTONS') + elseif GMF.MissionControlTab:IsVisible() then + self.currentmenu=GMF.MissionControlTab + menu,size=self:CreateOptionsLayer('BIGSCREEN') + end --@debug@ self:AddOptionToOptionsLayer(menu,'DBG') self:AddOptionToOptionsLayer(menu,'TRC') @@ -2115,8 +2145,8 @@ end function addon:OpenLastTab() lastTab=lastTab or PanelTemplates_GetSelectedTab(GMF) if lastTab then - if ns.GMC:IsVisible() then - ns.GMC:Hide() + if GMF.MissionControlTab:IsVisible() then + GMF.MissionControlTab:Hide() GMF.tabMC:SetChecked(false) if lastTab==2 then GMF.FollowerTab:Show() @@ -2140,19 +2170,20 @@ function addon:OpenMissionsTab() return self:OpenLastTab() end function addon:OpenMissionControlTab() - if (not ns.GMC:IsVisible()) then + if (not GMF.MissionControlTab:IsVisible()) then lastTab=PanelTemplates_GetSelectedTab(GMF) GMF.FollowerTab:Hide() GMF.FollowerList:Hide() GMF.MissionTab:Hide() GMF.TitleText:SetText(L["Garrison Commander Mission Control"]) - ns.GMC:Show() - ns.GMC.startButton:Click() + GMF.MissionControlTab:Show() + GMF.MissionControlTab.startButton:Click() GMF.tabMC:SetChecked(true) else GMF.tabMC:SetChecked(false) self:OpenLastTab() end + self:RefreshMenu() end function addon:OnClick_GarrisonMissionFrame_MissionComplete_NextMissionButton(this,button) local frame = GMF.MissionComplete @@ -2790,6 +2821,7 @@ function addon:HookedGarrisonMissionList_SetTab(tab) for i=1,#GMFMissionListButtons do GMFMissionListButtons.lastMissionID=nil end + self:RefreshMenu() if (HD) then addon:ResetSinks() end end function addon:HookedClickOnTabs(tab) @@ -2797,6 +2829,9 @@ function addon:HookedClickOnTabs(tab) print(tab) --@end-debug@ lastTab=tab + if GCF then + self:RefreshMenu() + end end function addon:GarrisonMissionFrame_SelectTab(frame,tab) --@debug@ @@ -2810,8 +2845,9 @@ function addon:GarrisonMissionFrame_SelectTab(frame,tab) if (HD) then addon:ResetSinks() end if GMF.tabMC then GMF.tabMC:SetChecked(false) - ns.GMC:Hide() + GMF.MissionControlTab:Hide() end + self:RefreshMenu() end function addon:HookedGarrisonMissionButton_SetRewards(frame,rewards,numRewards) collectgarbage("step",300) diff --git a/MissionControl.lua b/MissionControl.lua index 4e96fc8..45dd6b4 100644 --- a/MissionControl.lua +++ b/MissionControl.lua @@ -11,7 +11,6 @@ local factory=addon:GetFactory() local aMissions={} local chardb local db -local GMC local GMF=GarrisonMissionFrame local GMCUsedFollowers={} local wipe=wipe @@ -100,6 +99,7 @@ function module:GMCRunMission(missionID,start) --@debug@ print("Asked to start mission",missionID) --@end-debug@ + local GMC=GMF.MissionControlTab if (start) then G.StartMission(missionID) PlaySound("UI_Garrison_CommandTable_MissionStart") @@ -137,6 +137,7 @@ do local currentMission=0 local x=0 function module:GMCCalculateMissions(this,elapsed) + local GMC=GMF.MissionControlTab db.news.MissionControl=true timeElapsed = timeElapsed + elapsed if (#aMissions == 0 ) then @@ -204,6 +205,7 @@ do end function module:GMC_OnClick_Run(this,button) + local GMC=GMF.MissionControlTab this:Disable() GMC.logoutButton:Disable() do @@ -224,7 +226,7 @@ function module:GMC_OnClick_Run(this,button) end end function module:GMC_OnClick_Start(this,button) - + local GMC=GMF.MissionControlTab --@debug@ print(C("-------------------------------------------------","Yellow")) --@end-debug@ @@ -256,6 +258,7 @@ print(C("-------------------------------------------------","Yellow")) end local chestTexture local function drawItemButtons() + local GMC=GMF.MissionControlTab local scale=1.1 local h=37 -- itemButtonTemplate standard size local gap=5 @@ -404,8 +407,8 @@ function module:OnInitialized() db=addon.db.global chardb=addon.privatedb.profile chestTexture='GarrMission-'..UnitFactionGroup('player').. 'Chest' - GMC = CreateFrame('FRAME', 'GMCOptions', GMF) - ns.GMC=GMC + local GMC = CreateFrame('FRAME', nil, GMF) + GMF.MissionControlTab=GMC settings=chardb.missionControl tOrder=settings.rewardOrder if settings.version < 2 then @@ -494,7 +497,7 @@ function module:OnInitialized() return GMC end function module:GMCBuildChance() - _G['GMC']=GMC + local GMC=GMF.MissionControlTab --Chance GMC.cf = CreateFrame('FRAME', nil, GMC) GMC.cf:SetSize(256, 150) @@ -546,6 +549,7 @@ function module:GMCBuildChance() return GMC.cf end local function timeslidechange(this,value) + local GMC=GMF.MissionControlTab local value = math.floor(value) if (this.max) then settings.maxDuration = max(value,settings.minDuration) @@ -561,6 +565,7 @@ local function timeslidechange(this,value) end function module:GMCBuildDuration() -- Duration + local GMC=GMF.MissionControlTab GMC.tf = CreateFrame('FRAME', nil, GMC) GMC.tf:SetSize(256, 180) GMC.tf:SetPoint('LEFT', 80, 120) @@ -604,6 +609,7 @@ function module:GMCBuildDuration() end function module:GMCBuildRewards() --Allowed rewards + local GMC=GMF.MissionControlTab GMC.aif = CreateFrame('FRAME', nil, GMC) GMC.itf = GMC.aif:CreateFontString() GMC.itf:SetFontObject('GameFontNormalHuge') @@ -616,25 +622,8 @@ function module:GMCBuildRewards() end function module:GMCBuildMissionList() - -- Mission list on follower panels --- local ml=CreateFrame("Frame",nil,GMC) --- addBackdrop(ml) --- ml:Show() --- ml.Missions={} --- ml.Parties={} --- GMC.ml=ml --- local fs=ml:CreateFontString(nil, "BACKGROUND", "GameFontNormalHugeBlack") --- fs:SetPoint("TOPLEFT",0,-5) --- fs:SetPoint("TOPRIGHT",0,-5) --- fs:SetText(READY) --- fs:SetTextColor(C.Green()) --- fs:SetHeight(30) --- fs:SetJustifyV("CENTER") --- fs:Show() --- GMC.progressText=fs --- GMC.ml.Header=fs --- return GMC.ml local ml={widget=AceGUI:Create("GMCLayer"),Parties={}} + local GMC=GMF.MissionControlTab ml.widget:SetTitle(READY) ml.widget:SetTitleColor(C.Green()) ml.widget:SetTitleHeight(40)