You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

575 lines
27 KiB

local _,rematch = ...
local L = rematch.localization
local C = rematch.constants
local settings = rematch.settings
rematch.teamMenu = {}
local tm = rematch.teamMenu
--[[ this is a place to hold common functions used across multiple team menus ]]
rematch.events:Register(rematch.teamMenu,"PLAYER_LOGIN",function(self)
-- menu when you right-click a group in the team list
local groupMenu = {
{title=tm.GetGroupName},
{text=L["Create New Group"], func=function(groupID) tm:EditGroup() end}, -- EditGroup needs nil to create new group
{text=L["Edit Group"], func=tm.EditGroup},
{text=L["Move Group"], func=tm.MoveGroup},
{text=L["Delete Group"], isDisabled=tm.IsUndeletable, disabledTooltip=L["This is a system group that cannot be deleted."], func=tm.DeleteGroup},
{text=L["Export Group"], func=tm.ExportGroup},
{spacer=true},
{text=L["Import Teams"], func=tm.ImportGroupTeams},
{text=L["Delete Teams"], isDisabled=tm.IsGroupEmpty, disabledTooltip=L["This group has no teams."], func=tm.DeleteGroupTeams},
{spacer=true},
{text = tm.HideShowGroupTabText, hidden=tm.IsHideShowGroupTabHidden, isDisabled=tm.IsHideShowGroupTabDisabled, disabledTooltip=tm.HideShowGroupTabDisabledTooltip, func=tm.HideShowGroupTab},
{text=CANCEL},
}
rematch.menus:Register("GroupMenu",groupMenu)
-- menu when you right-click a team in the team list
local teamMenu = {
{title=tm.GetTeamName},
{text=L["Unload Team"], hidden=tm.IsTeamNotLoaded, func=tm.UnloadTeam},
{text=L["Edit Team"], func=tm.EditTeam},
{text=L["Set Notes"], func=tm.SetNotes},
{text=L["Move Team"], func=tm.MoveTeam},
{text=tm.SetOrRemoveFavoriteText, func=tm.SetOrRemoveFavorite},
{text=L["Load Target"], hidden=tm.HasNoTargets, func=tm.LoadSavedTarget, subMenu="TeamLoadTargetMenu", subMenuFunc=tm.BuildLoadTargetSubMenu},
{text=L["Edit Target"], hidden=tm.HasNoTargets, func=tm.EditSavedTarget, subMenu="TeamEditTargetMenu", subMenuFunc=tm.BuildEditTargetSubMenu},
{text=L["Share"], subMenu="ShareTeamMenu"},
{text=L["Delete Team"], func=tm.DeleteTeam},
{text=CANCEL},
}
rematch.menus:Register("TeamMenu",teamMenu)
local shareTeamMenu = {
{text=L["Plain Text"], isPlainText=true, func=tm.ExportTeam},
{text=L["Export Team"], func=tm.ExportTeam},
{text=L["Send Team"], isDisabled=tm.IsShareDisabled, disabledTooltip=L["Sending teams is disabled due to Disabling Sharing in options.\n\nYou can still export and import teams, however."], func=tm.SendTeam},
{text=CANCEL}
}
rematch.menus:Register("ShareTeamMenu",shareTeamMenu)
-- menu for the Teams button at the top of the panel
local teamsButtonMenu = {
{text=L["Create New Group"], func=tm.EditGroup},
{text=L["Team Herder"], func=tm.TeamHerder},
{text=L["Import Teams"], func=tm.ImportTeams},
{text=L["Backup All Teams"], func=tm.BackupAllTeams},
{text=L["Help"], stay=true, isHelp=true, hidden=function() return settings.HideMenuHelp end, icon="Interface\\Common\\help-i", iconCoords={0.15,0.85,0.15,0.85}, tooltipTitle=L["Teams and Groups"], tooltipBody=format(L["Teams can be organized into an unlimited number of collapsible groups. You can create new groups with %sCreate New Group\124r in this menu. Up to %d groups can be shown as tabs to act as bookmarks to these groups.\n\nBoth teams and groups can be rearranged with drag and drop. To easily move many teams to another group, use %sTeam Herder\124r in this menu.\n\nTeams with a %s beside their name contain at least one target.\nTeams with a %s beside their name contain a leveling preference.\nPets or targets with a %s beside their name belong to at least one team."],C.HEX_WHITE,C.MAX_TEAM_TABS,C.HEX_WHITE,rematch.utils:GetBadgeAsText(27,14,true),rematch.utils:GetBadgeAsText(14,14,true),rematch.utils:GetBadgeAsText(12,14,true))},
{text=OKAY},
}
rematch.menus:Register("TeamsButtonMenu",teamsButtonMenu)
-- menu from the right-click of the loadedTeamPanel TeamButton
local loadedTeamMenu = {
{title=tm.GetTeamName},
{text=L["Unload Team"], func=tm.UnloadTeam},
{text=L["Edit Team"], hidden=tm.IsNotUserTeam, func=tm.EditTeam},
{text=L["Set Notes"], hidden=tm.IsNotUserTeam, func=tm.SetNotes},
{text=tm.SetOrRemoveFavoriteText, hidden=tm.IsNotUserTeam, func=tm.SetOrRemoveFavorite},
{text=L["Load Target"], hidden=tm.HasNoTargets, func=tm.LoadSavedTarget, subMenu="TeamLoadTargetMenu", subMenuFunc=tm.BuildLoadTargetSubMenu},
{text=L["Edit Target"], hidden=tm.HasNoTargets, func=tm.EditSavedTarget, subMenu="TeamEditTargetMenu", subMenuFunc=tm.BuildEditTargetSubMenu},
{text=L["Share"], subMenu="ShareTeamMenu"},
{text=CANCEL}
}
rematch.menus:Register("LoadedTeamMenu",loadedTeamMenu)
-- submenus have just title, subMenuFuncs fill them in
rematch.menus:Register("TeamEditTargetMenu",{{title=L["Targets"]}})
rematch.menus:Register("TeamLoadTargetMenu",{{title=L["Targets"]}})
-- dialog for editing a team group
rematch.dialog:Register("EditGroup",{
title = L["New Group"],
accept = SAVE,
cancel = CANCEL,
minHeight = 230, --314, -- 250
layouts = {
Default={"LayoutTabs","EditBox","ColorPicker","DropDown","CheckButton","Help"},
Icon={"LayoutTabs","IconPicker"},
Preferences={"LayoutTabs","Text","Line","Preferences","Help"},
},
refreshFunc = function(self,info,subject,firstRun)
if firstRun then
local group = subject and rematch.savedGroups[subject]
if group then
self.ColorPicker:Set(group.color)
else
self.ColorPicker:Reset()
end
local name = group and group.name or L["New Group"]
rematch.dialog:SetTitle(name)
self.EditBox:SetText(name,true)
self.EditBox:SetTextColor(rematch.utils:HexToRGB(self.ColorPicker.color))
self.EditBox:SetEnabled(not (subject=="group:favorites"))
self.LayoutTabs:SetTabs({
{L["Group"],"Default"},
{L["Icon"],"Icon"},
{L["Preferences"],"Preferences",function() return self.Preferences:IsAnyUsed() end,function() self.Preferences:Set({}) end}
})
self.EditBox:SetLabel(L["Group Name:"])
self.DropDown:SetLabel(L["Sort:"])
self.DropDown.DropDown:BasicSetup({
{text=L["By Name"], value=C.GROUP_SORT_ALPHA, tooltipTitle=L["Sort By Name"], tooltipBody=L["Sort teams in this group alphabetically."]},
{text=L["By Wins"], value=C.GROUP_SORT_WINS, tooltipTitle=L["Sort By Wins"], tooltipBody=L["Sort teams in this group by how many times the team has won, if win records are tracked."]},
{text=L["Custom Sort"], value=C.GROUP_SORT_CUSTOM, tooltipTitle=L["Custom Sort"], tooltipBody=L["Sort teams in this group manually. New teams to this group are added to the end."]}
})
self.DropDown.DropDown:SetSelection(group and group.sortMode or C.GROUP_SORT_ALPHA)
self.CheckButton:SetText(L["Show Tab For This Group"])
self.CheckButton.Check.tooltipTitle = L["Show Tab For This Group"]
local numTeamTabs = rematch.savedGroups:GetNumTeamTabs()
self.CheckButton.Check.tooltipBody = format(L["Up to %d groups can be chosen to display as tabs along the right side of the Rematch window.\n\n%s%d of %d\124r possible tabs are shown."],C.MAX_TEAM_TABS,numTeamTabs<C.MAX_TEAM_TABS and C.HEX_WHITE or C.HEX_RED,numTeamTabs,C.MAX_TEAM_TABS)
if numTeamTabs >= C.MAX_TEAM_TABS and (not group or not group.showTab) then
self.CheckButton.Check.tooltipBody = self.CheckButton.Check.tooltipBody..L["\n\nYou will need to hide another group's tab before you can show a tab for this group."]
end
self.IconPicker:SetIcon(group and group.icon or C.REMATCH_ICON)
self.Preferences:Set(group and group.preferences or {})
rematch.dialog.AcceptButton:Enable()
end
-- these run every refresh (above is only on first run)
local openLayout = rematch.dialog:GetOpenLayout()
if openLayout=="Default" then
self.Help:SetText(format(L["Groups are categories you create for organizing your teams. Unlimited groups can be made but only %d can be shown as tabs."],C.MAX_TEAM_TABS))
elseif openLayout=="Preferences" then
self.Help:SetText(L["Leveling preferences choose which pets are picked first in the leveling queue. All criteria are optional."])
self.Text:SetText(L["Group Leveling Preferences"])
end
local showTab = subject and rematch.savedGroups[subject] and rematch.savedGroups[subject].showTab and true or false
self.CheckButton:SetChecked(showTab)
self.CheckButton:SetEnabled(showTab or rematch.savedGroups:GetNumTeamTabs()<C.MAX_TEAM_TABS)
self.LayoutTabs:Update()
end,
changeFunc = function(self,info,subject)
self.EditBox:SetTextColor(rematch.utils:HexToRGB(self.ColorPicker.color))
rematch.dialog.AcceptButton:SetEnabled(self.EditBox:GetText():trim():len()>0)
self.LayoutTabs:Update()
end,
acceptFunc = function(self,info,subject)
local group = subject and rematch.savedGroups[subject]
local name = self.EditBox:GetText():trim() or L["New Group"]
if not group then
group = rematch.savedGroups:Create(name)
end
group.name = name
group.color = self.ColorPicker.color
if group.sortMode~=self.DropDown:GetSelection() then
group.sortMode = self.DropDown:GetSelection()
rematch.savedGroups:Sort(subject)
end
group.icon = self.IconPicker:GetIcon()
if self.Preferences:IsAnyUsed() then
group.preferences = CopyTable(self.Preferences:Get()) -- preferences dialog returns a reused table; make a copy!
else
group.preferences = nil
end
group.showTab = self.CheckButton:GetChecked() or nil
if rematch.layout:GetView()~="teams" then
rematch.layout:ChangeView("teams")
end
rematch.teamsPanel:Update()
rematch.teamsPanel.List:BlingData(group.groupID)
rematch.teamTabs:Update()
rematch.loadedTeamPanel:Update()
end
})
rematch.dialog:Register("DeleteGroup",{
title = L["Delete Group"],
accept = YES,
cancel = NO,
prompt = L["Delete this group?"],
layouts = {
Default = {"Text","CheckButton"},
Warning = {"Text","CheckButton","Feedback"}
},
refreshFunc = function(self,info,subject,firstRun)
local group = subject and rematch.savedGroups[subject]
if group then
if firstRun then
self.CheckButton:SetText(L["Also delete teams in this group"])
self.Feedback:Set("warning",format(L["All teams in this group will be deleted. %sThis cannot be undone!\124r"],C.HEX_WHITE))
self.CheckButton:SetChecked(false)
end
if self.CheckButton:GetChecked() then
self.Text:SetText(format(L["Are you sure you want to delete the group %s and all teams within it?"],rematch.utils:GetFormattedGroupName(subject)))
else
self.Text:SetText(format(L["Are you sure you want to delete the group %s? All of its teams will be moved to the %s group."],rematch.utils:GetFormattedGroupName(subject),rematch.utils:GetFormattedGroupName("group:none")))
end
end
end,
changeFunc = function(self,info,subject)
local group = subject and rematch.savedGroups[subject]
if group then
if self.CheckButton:GetChecked() then
rematch.dialog:ChangeLayout("Warning")
else
rematch.dialog:ChangeLayout("Default")
end
end
end,
acceptFunc = function(self,info,subject)
if self.CheckButton:GetChecked() then -- if 'Also delete teams in this group' checked
for teamID,team in rematch.savedTeams:AllTeams() do
if team.groupID==subject then
rematch.savedTeams[teamID] = nil -- delete team
end
end
end
-- the following delete will move teams to Ungrouped Teams (if any remain)
rematch.savedGroups:Delete(subject)
rematch.savedGroups:Update() -- just in case anything weird happened
rematch.teamsPanel:Update()
end
})
rematch.dialog:Register("DeleteGroupTeams",{
title = L["Delete Group Teams"],
accept = YES,
cancel = NO,
layout = {"Text","Feedback"},
refreshFunc = function(self,info,subject,firstRun)
self.Text:SetText(format(L["There are %s%d\124r teams in the group %s."],C.HEX_WHITE,#rematch.savedGroups[subject].teams,rematch.utils:GetFormattedGroupName(subject)))
self.Feedback:Set("warning",format(L["%sAre you sure you want to %sdelete\124r these teams? This cannot be undone."],C.HEX_GOLD,C.HEX_WHITE))
end,
acceptFunc = function(self,info,subject)
for teamID,team in rematch.savedTeams:AllTeams() do
if team.groupID==subject then
rematch.savedTeams[teamID] = nil -- delete team
end
end
rematch.savedGroups:Update()
rematch.teamsPanel:Update()
rematch.teamsPanel.List:BlingData(subject)
end
})
rematch.dialog:Register("DeleteTeam",{
title = L["Delete Team"],
accept = YES,
cancel = NO,
layout = {"Feedback","Team","CheckButton"},
refreshFunc = function(self,info,subject,firstRun)
--self.Text:SetText("Are you sure you want to delete this team?")
self.Feedback:Set("warning",format(L["%sAre you sure you want to %sdelete\124r this team? This cannot be undone."],C.HEX_GOLD,C.HEX_WHITE))
self.CheckButton:SetChecked(false)
self.CheckButton:SetText(L["Don't Ask When Deleting Teams"])
self.Team:Fill(subject)
end,
acceptFunc = function(self,info,subject)
if self.CheckButton:GetChecked() then
settings.DontConfirmDeleteTeams = true
end
rematch.savedTeams:DeleteTeam(subject)
end
})
-- subject is {teamID=teamID, isPlainText=true/false} where isPlainText is true to export in plain text (really)
rematch.dialog:Register("ExportSingleTeam",{
title = L["Export Team"],
accept = OKAY,
layout = {"Text","MultiLineEditBox","IncludeCheckButtons"},
refreshFunc = function(self,info,subject,firstRun)
if firstRun then
self.Text:SetText(L["Press Ctrl+C to copy to clipboard"])
self.IncludeCheckButtons:Update(subject.teamID)
local export = subject.isPlainText and rematch.teamStrings:ExportPlainTextTeam(subject.teamID) or rematch.teamStrings:ExportTeam(subject.teamID)
self.MultiLineEditBox:SetText(export or "",true)
self.MultiLineEditBox:ScrollToTop()
end
end,
changeFunc = function(self,info,subject)
settings.ExportIncludePreferences = self.IncludeCheckButtons.IncludePreferences:GetChecked()
settings.ExportIncludeNotes = self.IncludeCheckButtons.IncludeNotes:GetChecked()
local export = subject.isPlainText and rematch.teamStrings:ExportPlainTextTeam(subject.teamID) or rematch.teamStrings:ExportTeam(subject.teamID)
self.MultiLineEditBox:SetText(export or "",true)
self.MultiLineEditBox:ScrollToTop()
end
})
-- subject is a groupID to export a group and its teams, or nil to export all teams (backup)
rematch.dialog:Register("ExportMultipleTeams",{
title = L["Export Teams"],
accept = OKAY,
layout = {"Text","MultiLineEditBox","IncludeCheckButtons"},
refreshFunc = function(self,info,subject,firstRun)
if firstRun then
self.Text:SetText(L["Press Ctrl+C to copy to clipboard"])
self.IncludeCheckButtons:Update()
local teamStrings = subject and rematch.teamStrings:ExportGroup(subject) or rematch.teamStrings:ExportAll()
self.MultiLineEditBox:SetText(teamStrings,true)
end
end,
changeFunc = function(self,info,subject)
if settings.ExportIncludePreferences~=self.IncludeCheckButtons.IncludePreferences:GetChecked() or settings.ExportIncludeNotes~=self.IncludeCheckButtons.IncludeNotes:GetChecked() then
settings.ExportIncludePreferences = self.IncludeCheckButtons.IncludePreferences:GetChecked()
settings.ExportIncludeNotes = self.IncludeCheckButtons.IncludeNotes:GetChecked()
local teamStrings = subject and rematch.teamStrings:ExportGroup(subject) or rematch.teamStrings:ExportAll()
self.MultiLineEditBox:SetText(teamStrings,true)
end
end
})
end)
-- returns unformatted name of group
function rematch.teamMenu:GetGroupName(groupID)
local group = rematch.savedGroups[groupID]
return group.name or L["New Group"]
end
function rematch.teamMenu:GetTeamName(teamID)
local team = rematch.savedTeams[teamID]
return team.name or L["New Team"]
end
-- summon EditGroup dialog
function rematch.teamMenu:EditGroup(groupID)
rematch.dialog:ShowDialog("EditGroup",groupID)
end
-- returns true if group can't be deleted (favorites or ungrouped teams)
function rematch.teamMenu:IsUndeletable(groupID)
return groupID=="group:favorites" or groupID=="group:none"
end
-- summon DeleteGroup dialog
function rematch.teamMenu:DeleteGroup(groupID)
rematch.dialog:ShowDialog("DeleteGroup",groupID)
end
-- dummon DeleteTeam dialog
function rematch.teamMenu:DeleteTeam(teamID)
if not settings.DontConfirmDeleteTeams then
rematch.dialog:ShowDialog("DeleteTeam",teamID)
else
rematch.savedTeams:DeleteTeam(teamID)
end
end
-- returns "Show Tab" or group's tab is not shown; "Hide Tab" otherwise
function rematch.teamMenu:HideShowGroupTabText(groupID)
local group = rematch.savedGroups[groupID]
return group.showTab and L["Hide Tab"] or L["Show Tab"]
end
-- if Never Show Team Tabs enabled, then never show options to show or hide tabs too
function rematch.teamMenu:IsHideShowGroupTabHidden(groupID)
return settings.NeverTeamTabs
end
-- returns true if max groups are tabs
function rematch.teamMenu:IsHideShowGroupTabDisabled(groupID)
local group = rematch.savedGroups[groupID]
if group.showTab then
return false -- always make hiding the tab enabled
else
return rematch.savedGroups:GetNumTeamTabs() >= C.MAX_TEAM_TABS -- disable if at team tab limit
end
end
-- tooltip to explain why Show Tab is disabled
function rematch.teamMenu:HideShowGroupTabDisabledTooltip(groupID)
return format(L["%s%d of %d\124r tabs are currently shown.\n\nBefore the tab for this group can be shown, another one needs to be hidden."],C.HEX_WHITE,rematch.savedGroups:GetNumTeamTabs(),C.MAX_TEAM_TABS)
end
-- shows or hides team tab for the groupID
function rematch.teamMenu:HideShowGroupTab(groupID)
local group = rematch.savedGroups[groupID]
if group.showTab then
group.showTab = nil
elseif rematch.savedGroups:GetNumTeamTabs()<C.MAX_TEAM_TABS then
group.showTab = true
end
rematch.teamTabs:Update()
end
function rematch.teamMenu:MoveGroup(groupID)
if groupID then
rematch.dragFrame:PickupGroup(groupID)
end
end
function rematch.teamMenu:MoveTeam(teamID)
if teamID then
rematch.dragFrame:PickupTeam(teamID)
end
end
function rematch.teamMenu:SetOrRemoveFavoriteText(teamID)
local team = teamID and rematch.savedTeams[teamID]
return (team and team.favorite) and L["Remove Favorite"] or L["Set Favorite"]
end
function rematch.teamMenu:SetOrRemoveFavorite(teamID)
local team = teamID and rematch.savedTeams[teamID]
if team and team.favorite then
team.groupID = team.homeID or "group:none"
team.homeID = nil
team.favorite = nil
else
team.homeID = team.groupID
team.groupID = "group:favorites"
team.favorite = true
end
rematch.savedTeams:TeamsChanged()
end
function rematch.teamMenu:UnloadTeam(teamID)
rematch.loadTeam:UnloadTeam()
end
function rematch.teamMenu:SetNotes(teamID)
rematch.cardManager:HideCard(rematch.notes)
rematch.cardManager:ShowCard(rematch.notes,teamID)
rematch.notes:SetFocus()
end
function rematch.teamMenu:IsNotUserTeam(teamID)
return not rematch.savedTeams:IsUserTeam(teamID)
end
function rematch.teamMenu:EditTeam(teamID)
if rematch.savedTeams:IsUserTeam(teamID) then
rematch.saveDialog:SidelineTeamID(teamID)
rematch.dialog:ShowDialog("SaveTeam",{saveMode=C.SAVE_MODE_EDIT, teamID=teamID})
end
end
function rematch.teamMenu:IsTeamNotLoaded(teamID)
return settings.currentTeamID~=teamID
end
function rematch.teamMenu:ExportTeam(teamID)
if rematch.menus:IsMenuOpen("LoadedTeamMenu") then -- if this is the export from the loadedTeamPanel Share -> Export
rematch.saveDialog:SidelineLoadouts(newTeam) -- then export pets actually loaded
rematch.dialog:ShowDialog("ExportSingleTeam",{teamID="sideline", isPlainText=self.isPlainText})
else -- otherwise export teamID
rematch.dialog:ShowDialog("ExportSingleTeam",{teamID=teamID, isPlainText=self.isPlainText})
end
end
function rematch.teamMenu:ExportGroup(groupID)
rematch.dialog:ShowDialog("ExportMultipleTeams",groupID)
end
function rematch.teamMenu:BackupAllTeams()
rematch.dialog:ShowDialog("ExportMultipleTeams")
end
function rematch.teamMenu:ImportTeams()
rematch.dialog:ShowDialog("ImportTeams")
end
function rematch.teamMenu:ImportGroupTeams(groupID)
if rematch.savedGroups[groupID] then
settings.LastSelectedGroup = groupID
end
rematch.dialog:ShowDialog("ImportTeams")
end
function rematch.teamMenu:SendTeam(teamID)
rematch.dialog:ShowDialog("SendTeam",{teamID=teamID})
end
function rematch.teamMenu:TeamHerder()
rematch.dialog:Register("TeamHerder",{
title = L["Team Herder"],
accept = L["Done"],
layouts = {
Default = {"Text","GroupPicker"},
Herding = {"Text","GroupSelect","Help"}
},
refreshFunc = function(self,info,subject,firstRun)
self.GroupPicker:SetReturn("Herding",true) -- GroupPicker will return to "Herding" layout
self.GroupSelect:SetReturn("Default") -- GroupSelect will return to "Default" layout
self.GroupSelect:Fill(settings.LastSelectedGroup or "group:none")
if rematch.dialog:GetOpenLayout()=="Default" then
self.Text:SetText(L["Pick a group to move teams to:"])
else
self.Text:SetText(L["While this window is on screen, click a team in the team list to move it to this group:"])
self.Help:SetText(L["When the cursor changes to a \124TInterface\\Cursor\\Crosshairs:16\124t over a team, click to move the team to the selected group."])
end
end,
})
rematch.dialog:ShowDialog("TeamHerder")
end
function rematch.teamMenu:IsShareDisabled(teamID)
return settings.DisableShare
end
function rematch.teamMenu:HasNoTargets(teamID)
local team = rematch.savedTeams[teamID]
return not team or not team.targets or #team.targets==0
end
function rematch.teamMenu:BuildTargetSubMenu(teamID,menu,func)
local def = rematch.menus:GetDefinition(menu)
-- remove any existing targets
for i=#def,2,-1 do
tremove(def,i)
end
local targets = rematch.savedTeams[teamID] and rematch.savedTeams[teamID].targets
if targets and #targets>0 then
for _,npcID in ipairs(targets) do
local name = rematch.utils:GetFormattedTargetName(npcID)
if name==C.CACHE_RETRIEVING then -- name is not cached, need to rebuild this in a bit
end
tinsert(def,{text=name,npcID=npcID,func=func})
end
else
tinsert(def,{text=L["No targets :("]})
end
tinsert(def,{text=CANCEL})
rematch.menus:Register(menu,def)
end
-- called just before the Edit Targets submenu is shown to rebuild menu for team's targets
function rematch.teamMenu:BuildEditTargetSubMenu(teamID)
rematch.teamMenu:BuildTargetSubMenu(teamID,"TeamEditTargetMenu",tm.EditTeamTarget)
end
function rematch.teamMenu:EditTeamTarget(teamID,targetID)
rematch.targetMenu:SetTeams(targetID or self.npcID)
end
function rematch.teamMenu:BuildLoadTargetSubMenu(teamID)
rematch.teamMenu:BuildTargetSubMenu(teamID,"TeamLoadTargetMenu",tm.LoadTeamTarget)
end
function rematch.teamMenu:LoadTeamTarget(teamID,targetID)
rematch.layout:SummonView("teams")
-- if in single panel mode, expand so the loaded team shows
if rematch.layout:GetMode()==1 then
rematch.layout:ChangeMode(2)
end
rematch.loadedTargetPanel:SetTarget(targetID or self.npcID,true)
end
-- click of the Load Target menu option will load the first target (this menu option opens a submenu of targets)
function rematch.teamMenu:LoadSavedTarget(teamID)
local targets = rematch.savedTeams[teamID] and rematch.savedTeams[teamID].targets
if #targets>0 then
rematch.teamMenu:LoadTeamTarget(teamID,targets[1])
end
rematch.menus:Hide()
end
function rematch.teamMenu:EditSavedTarget(teamID)
local targets = rematch.savedTeams[teamID] and rematch.savedTeams[teamID].targets
if #targets>0 then
rematch.teamMenu:EditTeamTarget(teamID,targets[1])
end
rematch.menus:Hide()
end
function rematch.teamMenu:IsGroupEmpty(groupID)
local group = rematch.savedGroups[groupID]
return not group or not group.teams or #group.teams==0
end
function rematch.teamMenu:DeleteGroupTeams(groupID)
rematch.dialog:ShowDialog("DeleteGroupTeams",groupID)
end