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.
130 lines
4.7 KiB
130 lines
4.7 KiB
local _,rematch = ...
|
|
local L = rematch.localization
|
|
local C = rematch.constants
|
|
local settings = rematch.settings
|
|
rematch.targetMenu = {}
|
|
local tm = rematch.targetMenu
|
|
|
|
rematch.events:Register(rematch.targetMenu,"PLAYER_LOGIN",function(self)
|
|
|
|
-- menu when you right-click a target in the target list
|
|
local targetMenu = {
|
|
{title=tm.GetTargetName},
|
|
{text=L["Edit Target"], func=tm.SetTeams},
|
|
{text=L["Load Random Pets"], func=tm.LoadRandomTeam},
|
|
{text=L["Load Team"], hidden=tm.HasNoTeam, func=tm.LoadSavedTeam, subMenu="TargetLoadTeamMenu", subMenuFunc=tm.BuildLoadTeamSubMenu},
|
|
{text=L["Edit Team"], hidden=tm.HasNoTeam, func=tm.EditSavedTeam, subMenu="TargetEditTeamMenu", subMenuFunc=tm.BuildEditTeamSubMenu},
|
|
{text=CANCEL},
|
|
}
|
|
rematch.menus:Register("TargetMenu",targetMenu)
|
|
|
|
-- submenus have just title, subMenuFuncs fill them in
|
|
rematch.menus:Register("TargetEditTeamMenu",{{title=L["Teams"]}})
|
|
rematch.menus:Register("TargetLoadTeamMenu",{{title=L["Teams"]}})
|
|
|
|
rematch.dialog:Register("SetTargetTeams",{
|
|
title=L["Edit Target"],
|
|
accept=SAVE,
|
|
cancel=CANCEL,
|
|
width = 290,
|
|
layout={"Text","TeamPicker","Help"},
|
|
refreshFunc = function(self,info,subject,firstRun)
|
|
if firstRun then
|
|
rematch.dialog:SetTitle(rematch.targetInfo:GetNpcName(subject.targetID))
|
|
self.Text:SetText(format(L["These are the teams saved for %s."],rematch.utils:GetFormattedTargetName(subject.targetID)))
|
|
self.Help:SetText(L["The topmost team is the preferred team to load when you interact with this target."])
|
|
self.TeamPicker:SetList(subject.listType,subject.list)
|
|
end
|
|
end,
|
|
acceptFunc = function(self,info,subject)
|
|
local npcID = rematch.targetInfo:GetNpcID(subject.targetID)
|
|
if npcID then
|
|
rematch.savedTargets:Set(npcID,self.TeamPicker:GetList())
|
|
rematch.targetsPanel.List:BlingData(subject.targetID)
|
|
end
|
|
end
|
|
})
|
|
|
|
end)
|
|
|
|
function rematch.targetMenu:GetTargetName(npcID)
|
|
return rematch.targetInfo:GetNpcName(npcID)
|
|
end
|
|
|
|
function rematch.targetMenu:SetTeams(targetID)
|
|
local list = {}
|
|
if rematch.savedTargets[targetID] then
|
|
for _,npcID in ipairs(rematch.savedTargets[targetID]) do
|
|
tinsert(list,npcID)
|
|
end
|
|
end
|
|
rematch.dialog:ShowDialog("SetTargetTeams",{targetID=targetID, listType=C.LIST_TYPE_TEAM, list=list})
|
|
end
|
|
|
|
function rematch.targetMenu:LoadRandomTeam(targetID)
|
|
local npcID = rematch.targetInfo:GetNpcID(targetID)
|
|
if npcID then
|
|
rematch.loadedTargetPanel:SetTarget(npcID,true)
|
|
end
|
|
rematch.randomPets:BuildCounterTeam(npcID)
|
|
rematch.loadTeam:LoadTeamID("counter")
|
|
end
|
|
|
|
function rematch.targetMenu:HasNoTeam(targetID)
|
|
return not rematch.savedTargets:GetTeams(targetID)
|
|
end
|
|
|
|
-- BuildLoadTeamSubMenu
|
|
-- BuildEditTeamSubMenu
|
|
|
|
function rematch.targetMenu:BuildTeamSubMenu(targetID,menu,func)
|
|
local def = rematch.menus:GetDefinition(menu)
|
|
-- remove any existing teams
|
|
for i=#def,2,-1 do
|
|
tremove(def,i)
|
|
end
|
|
local teams = rematch.savedTargets:GetTeams(targetID)
|
|
if teams and #teams>0 then
|
|
for _,teamID in ipairs(teams) do
|
|
local name = rematch.utils:GetFormattedTeamName(teamID)
|
|
tinsert(def,{text=name,teamID=teamID,func=func})
|
|
end
|
|
else
|
|
tinsert(def,{text=L["No teams :("]})
|
|
end
|
|
tinsert(def,{text=CANCEL})
|
|
rematch.menus:Register(menu,def)
|
|
end
|
|
|
|
function rematch.targetMenu:BuildLoadTeamSubMenu(targetID)
|
|
rematch.targetMenu:BuildTeamSubMenu(targetID,"TargetLoadTeamMenu",tm.LoadTargetTeam)
|
|
end
|
|
|
|
function rematch.targetMenu:BuildEditTeamSubMenu(targetID)
|
|
rematch.targetMenu:BuildTeamSubMenu(targetID,"TargetEditTeamMenu",tm.EditTargetTeam)
|
|
end
|
|
|
|
function rematch.targetMenu:LoadTargetTeam(targetID)
|
|
rematch.loadTeam:LoadTeamID(self.teamID)
|
|
end
|
|
|
|
function rematch.targetMenu:EditTargetTeam(targetID)
|
|
rematch.teamMenu:EditTeam(self.teamID)
|
|
end
|
|
|
|
-- this loads the preferred teamID for the target (click of Load Team menu button that shows teams submenu)
|
|
function rematch.targetMenu:LoadSavedTeam(targetID)
|
|
local teams,index = rematch.savedTargets:GetTeams(targetID)
|
|
if teams and index and teams[index] then
|
|
rematch.loadTeam:LoadTeamID(teams[index])
|
|
end
|
|
rematch.menus:Hide()
|
|
end
|
|
|
|
function rematch.targetMenu:EditSavedTeam(targetID)
|
|
local teams,index = rematch.savedTargets:GetTeams(targetID)
|
|
if teams and index and teams[index] then
|
|
rematch.teamMenu:EditTeam(teams[index])
|
|
end
|
|
rematch.menus:Hide()
|
|
end
|
|
|