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.
133 lines
6.1 KiB
133 lines
6.1 KiB
local _,rematch = ...
|
|
local L = rematch.localization
|
|
local C = rematch.constants
|
|
local settings = rematch.settings
|
|
|
|
--[[
|
|
|
|
Aside from /rematch <team name> to load a team in a macro, slash commands are for "administrative"
|
|
tasks that should not be exposed in the UI.
|
|
|
|
/rematch <team name> : loads a team of the given name
|
|
/rematch targetdata : generates data for a new target to add to targetData.lua
|
|
/rematch delete all teams : wipes all teams and groups
|
|
/rematch reset everything : wipes all settings, teams, groups, etc. and restores addon to initial state
|
|
/rematch reupgrade : wipes all teams, groups and settings and re-imports everything from Rematch4 savedvars
|
|
|
|
]]
|
|
|
|
|
|
SLASH_REMATCH1 = "/rematch"
|
|
SlashCmdList["REMATCH"] = function(msg)
|
|
msg = (msg or ""):trim():lower()
|
|
|
|
-- "/rematch" with no other command will toggle the rematch window
|
|
if msg=="" then
|
|
rematch.frame:Toggle()
|
|
return
|
|
end
|
|
|
|
-- "/rematch <team name>" will attempt to load a team (if <team name> found)
|
|
if rematch.loadTeam:LoadTeamByName(msg) then
|
|
return -- if LoadTeamByName found a teamID, then it's loading; leave
|
|
end
|
|
|
|
-- "/rematch reset all settings" will wipe and settings with a dialog prompt to confirm
|
|
if msg=="reset everything" then
|
|
rematch.dialog:Register("ResetEverything",{
|
|
title = L["Reset Everything"],
|
|
accept = YES,
|
|
cancel = NO,
|
|
prompt = L["Reset everything?"],
|
|
layout = {"Icon","Text","Feedback"},
|
|
refreshFunc = function(self,info,subject,firstRun)
|
|
self.Icon:SetTexture("Interface\\ICONS\\Ability_Creature_Cursed_02")
|
|
self.Icon:SetTexCoord(0.075,0.925,0.075,0.925)
|
|
self.Text:SetText(L["This will wipe all settings, teams, queue, etc (absolutely everything), and then reload the UI to start Rematch from scratch."])
|
|
self.Feedback:Set("warning",L["Warning: This cannot be undone!"])
|
|
end,
|
|
acceptFunc = function(self,info,subject)
|
|
wipe(Rematch5Settings)
|
|
wipe(Rematch5SavedTeams)
|
|
wipe(Rematch5SavedGroups)
|
|
wipe(Rematch5SavedTargets)
|
|
ReloadUI()
|
|
end
|
|
})
|
|
rematch.dialog:ShowDialog("ResetEverything")
|
|
return
|
|
end
|
|
|
|
-- "/rematch delete all teams" will wipe all teams and groups with a dialog prompt to confirm
|
|
if msg=="delete all teams" then
|
|
rematch.dialog:Register("DeleteAllTeams",{
|
|
title = L["Delete All Teams"],
|
|
accept = YES,
|
|
cancel = NO,
|
|
prompt = L["Delete all teams?"],
|
|
layout = {"Icon","Text","Feedback"},
|
|
refreshFunc = function(self,info,subject,firstRun)
|
|
self.Icon:SetTexture("Interface\\ICONS\\Ability_Creature_Cursed_02")
|
|
self.Icon:SetTexCoord(0.075,0.925,0.075,0.925)
|
|
self.Text:SetText(format(L["This will wipe all teams and groups.\n\nAre you sure you want to %sDELETE\124r all teams and groups permanently?"],C.HEX_WHITE))
|
|
self.Feedback:Set("warning",L["Warning: This cannot be undone!"])
|
|
end,
|
|
acceptFunc = function(self,info,subject)
|
|
rematch.savedTeams:Wipe()
|
|
rematch.savedGroups:Wipe()
|
|
end,
|
|
})
|
|
rematch.dialog:ShowDialog("DeleteAllTeams")
|
|
return
|
|
end
|
|
|
|
-- "/rematch targetdata" will create a new entry for new targets, to add to targetData.lua.
|
|
-- To use: Target the target and enter battle (it's ok if you lose target, just don't target
|
|
-- anything else) and once you're in battle and see opponent pets, enter /rematch targetdata
|
|
if msg=="targetdata" then
|
|
if not C_PetBattles.IsInBattle() or not rematch.targetInfo.recentTarget then
|
|
rematch.utils:Write(L["Usage: Target an npc to create data for, enter a pet battle, and once in battle with opponent pets displayed, enter:\n\124cffffffff/rematch targetdata"])
|
|
return
|
|
end
|
|
local npcID = rematch.targetInfo.recentTarget
|
|
local npcName = rematch.targetInfo:GetNpcName(npcID)
|
|
local mapID = C_Map.GetBestMapForUnit("player")
|
|
local mapName = C_Map.GetMapInfo(mapID).name
|
|
-- start with map and npcID; 0 is expansion that needs filled in manually, nill is questID
|
|
-- (if the target is in a subzone and a parent mapID should be used, use first mapID for parent)
|
|
local result = format("{%d,%d,%d,0,nil,",mapID,npcID,mapID)
|
|
-- add pets with their stats
|
|
local numPets = C_PetBattles.GetNumPets(Enum.BattlePetOwner.Enemy)
|
|
for i=1,numPets do
|
|
local petInfo = rematch.petInfo:Fetch("battle:2:"..i)
|
|
local speed = petInfo.speed
|
|
if speed and petInfo.petType==3 then -- for flying opponents remember to get stats before it loses racial
|
|
speed = speed/1.5
|
|
end
|
|
if petInfo.speciesID then
|
|
result=result..format("\"battlepet:%d:%d:%d:%d:%d:%d\"%s",petInfo.speciesID,petInfo.level,petInfo.rarity and petInfo.rarity-1 or 0,petInfo.health,petInfo.power,speed or 0,i<numPets and "," or "")
|
|
end
|
|
end
|
|
-- close off line
|
|
result=result..format("}, -- %s, %s",mapName,npcName)
|
|
-- send result to TinyPad if enabled
|
|
if TinyPad then
|
|
TinyPad.Insert(result)
|
|
else -- otherwise print to chat
|
|
rematch.utils:Write(result)
|
|
-- ChatEdit_ActivateChat(DEFAULT_CHAT_FRAME.editBox)
|
|
-- DEFAULT_CHAT_FRAME.editBox:Insert(result)
|
|
end
|
|
return
|
|
end
|
|
|
|
-- "/rematch import options" will show a dialog to reset options and update to the ones provided
|
|
if msg=="import options" then
|
|
rematch.dialog:ShowDialog("ImportOptions")
|
|
return
|
|
end
|
|
|
|
-- if reached here, the msg didn't resolve to a team or anything meaningful
|
|
rematch.utils:Write(format(L["The team named \"%s\" can't be found."],msg))
|
|
|
|
end
|
|
|