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.

54 lines
1.8 KiB

--[[
ScriptManager.lua
@Author : DengSir (tdaddon@163.com)
@Link : https://dengsir.github.io
]]
local ns = select(2, ...)
local Addon = ns.Addon
local ScriptManager = Addon:NewModule('ScriptManager', 'AceEvent-3.0')
local db = setmetatable({}, {
__index = function(t, k)
t[k] = {}
return t[k]
end
})
function ScriptManager:AddScript(plugin, key, script)
db[plugin][key] = script
self:SendMessage('PET_BATTLE_SCRIPT_SCRIPT_ADDED', plugin, key, script)
self:SendMessage('PET_BATTLE_SCRIPT_SCRIPT_LIST_UPDATE')
end
function ScriptManager:GetScript(plugin, key)
return db[plugin][key]
end
function ScriptManager:RemoveScript(plugin, key)
db[plugin][key] = nil
self:SendMessage('PET_BATTLE_SCRIPT_SCRIPT_REMOVED', plugin, key)
self:SendMessage('PET_BATTLE_SCRIPT_SCRIPT_LIST_UPDATE')
end
function ScriptManager:MoveScript(plugin, oldKey, newKey)
local script = db[plugin][oldKey]
db[plugin][oldKey] = nil
script = Addon:GetClass('Script'):New(script:GetDB(), script:GetPlugin(), newKey)
db[plugin][newKey] = script
self:SendMessage('PET_BATTLE_SCRIPT_SCRIPT_REMOVED', plugin, oldKey)
self:SendMessage('PET_BATTLE_SCRIPT_SCRIPT_ADDED', plugin, newKey, script)
self:SendMessage('PET_BATTLE_SCRIPT_SCRIPT_LIST_UPDATE')
end
function ScriptManager:CopyScript(plugin, sourceKey, destinationKey)
local script = db[plugin][sourceKey]
script = Addon:GetClass('Script'):New(CopyTable(script:GetDB()), script:GetPlugin(), destinationKey)
db[plugin][destinationKey] = script
self:SendMessage('PET_BATTLE_SCRIPT_SCRIPT_ADDED', plugin, destinationKey, script)
self:SendMessage('PET_BATTLE_SCRIPT_SCRIPT_LIST_UPDATE')
end
function ScriptManager:IteratePluginScripts(plugin)
return pairs(db[plugin])
end