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.
49 lines
1.4 KiB
49 lines
1.4 KiB
-- BattleCacheManager.lua
|
|
-- @Author : DengSir (tdaddon@163.com)
|
|
-- @Link : https://dengsir.github.io
|
|
-- @Date : 9/20/2018, 2:52:21 PM
|
|
|
|
local ns = select(2, ...)
|
|
local Addon = ns.Addon
|
|
local BattleCacheManager = Addon:NewModule('BattleCacheManager', 'AceEvent-3.0')
|
|
local BattleCachePrototype = {}
|
|
|
|
ns.BattleCachePrototype = BattleCachePrototype
|
|
|
|
BattleCacheManager:SetDefaultModulePrototype(BattleCachePrototype)
|
|
|
|
function BattleCacheManager:OnInitialize()
|
|
self.caches = _G.TD_DB_BATTLEPETSCRIPT_BATTLE_CACHE or {}
|
|
|
|
self:RegisterMessage('PET_BATTLE_SCRIPT_DB_SHUTDOWN')
|
|
|
|
if C_PetBattles.IsInBattle() then
|
|
self:RegisterEvent('PET_BATTLE_CLOSE', function()
|
|
self:UnregisterEvent('PET_BATTLE_CLOSE')
|
|
self:RegisterEvent('PET_BATTLE_OPENING_START')
|
|
end)
|
|
else
|
|
self:RegisterEvent('PET_BATTLE_OPENING_START')
|
|
end
|
|
end
|
|
|
|
function BattleCacheManager:PET_BATTLE_SCRIPT_DB_SHUTDOWN()
|
|
if C_PetBattles.IsInBattle() then
|
|
_G.TD_DB_BATTLEPETSCRIPT_BATTLE_CACHE = self.caches
|
|
else
|
|
_G.TD_DB_BATTLEPETSCRIPT_BATTLE_CACHE = nil
|
|
end
|
|
end
|
|
|
|
function BattleCacheManager:PET_BATTLE_OPENING_START()
|
|
for _, module in self:IterateModules() do
|
|
module:OnBattleStart()
|
|
end
|
|
end
|
|
|
|
function BattleCacheManager:AllocCache(name, default)
|
|
if not self.caches[name] then
|
|
self.caches[name] = CopyTable(default) or {}
|
|
end
|
|
return self.caches[name]
|
|
end
|
|
|