From d16991c03f79f6aa6134030dc025103ba4d57eb8 Mon Sep 17 00:00:00 2001 From: ggargani Date: Sun, 2 Oct 2016 22:01:13 +0200 Subject: [PATCH] Refactored with better types management --- FollowerCache.lua | 58 ++++++++++++++++++++++++++--------------------------- 1 file changed, 28 insertions(+), 30 deletions(-) diff --git a/FollowerCache.lua b/FollowerCache.lua index 77408d9..6d7ac13 100644 --- a/FollowerCache.lua +++ b/FollowerCache.lua @@ -26,6 +26,7 @@ local maxrank=GARRISON_FOLLOWER_MAX_UPGRADE_QUALITY*1000+GARRISON_FOLLOWER_MAX_L local module=addon:NewSubClass('FollowerCache') --#module local cache={} --#cache local followerTypes={} +local cacheTypes={LE_FOLLOWER_TYPE_GARRISON_6_0,LE_FOLLOWER_TYPE_SHIPYARD_6_2,LE_FOLLOWER_TYPE_GARRISON_7_0} local EMPTY={} function module:OnInitialized() self:RegisterEvent("GARRISON_FOLLOWER_REMOVED","OnEvent") @@ -33,25 +34,26 @@ function module:OnInitialized() self:RegisterEvent("GARRISON_FOLLOWER_LIST_UPDATE","OnEvent") self:RegisterEvent("GARRISON_FOLLOWER_UPGRADED","OnEvent") self:RegisterEvent("GARRISON_FOLLOWER_XP_CHANGED","OnEvent") - self.followerCache=cache:new(LE_FOLLOWER_TYPE_GARRISON_6_0) - self.shipCache=cache:new(LE_FOLLOWER_TYPE_SHIPYARD_6_2) - self.heroCache=cache:new(LE_FOLLOWER_TYPE_GARRISON_7_0) + self.caches={} + for _,f in ipairs(cacheTypes) do + self.caches[f]=cache:new(f) + end end function module:OnEvent(event,...) --@debug@ print(event,...) --@end-debug@ local followerType,followerID=... - if self.shipCache.cache[followerID].followerID then - self.shipCache:OnEvent(event,...) - elseif self.followerCache.cache[followerID].followerID then - self.followerCache:OnEvent(event,...) - elseif self.heroCache.cache[followerID].followerID then - self.heroCache:OnEvent(event,...) + if self.caches[LE_FOLLOWER_TYPE_SHIPYARD_6_2].cache[followerID].followerID then + self.caches[LE_FOLLOWER_TYPE_SHIPYARD_6_2]:OnEvent(event,...) + elseif self.caches[LE_FOLLOWER_TYPE_GARRISON_6_0].cache[followerID].followerID then + self.caches[LE_FOLLOWER_TYPE_GARRISON_6_0]:OnEvent(event,...) + elseif self.caches[LE_FOLLOWER_TYPE_GARRISON_7_0].cache[followerID].followerID then + self.caches[LE_FOLLOWER_TYPE_GARRISON_7_0]:OnEvent(event,...) else - self.followerCache:Wipe() - self.shipCache:Wipe() - self.heroCache:Wipe() + self.caches[LE_FOLLOWER_TYPE_GARRISON_6_0]:Wipe() + self.caches[LE_FOLLOWER_TYPE_SHIPYARD_6_2]:Wipe() + self.caches[LE_FOLLOWER_TYPE_GARRISON_7_0]:Wipe() end end @@ -244,42 +246,38 @@ function addon:GetAnyData(followerType,...) end end function addon:GetHeroData(followerID,key,default) - return module.heroCache:GetFollowerData(followerID,key,default) + return module.caches[LE_FOLLOWER_TYPE_GARRISON_7_0]:GetFollowerData(followerID,key,default) end function addon:GetFollowerData(followerID,key,default) - return module.followerCache:GetFollowerData(followerID,key,default) + return module.caches[LE_FOLLOWER_TYPE_GARRISON_6_0]:GetFollowerData(followerID,key,default) end function addon:GetShipData(followerID,key,default) - return module.shipCache:GetFollowerData(followerID,key,default) + return module.caches[LE_FOLLOWER_TYPE_SHIPYARD_6_2]:GetFollowerData(followerID,key,default) end function addon:GetFollowersWithTrait(trait) - return module.followerCache:GetFollowersWithTrait(trait) + return module.caches[LE_FOLLOWER_TYPE_GARRISON_6_0]:GetFollowersWithTrait(trait) end function addon:GetFollowersWithCounterFor(threat) - return module.followerCache:GetFollowersWithCounterFor(threat) + return module.caches[LE_FOLLOWER_TYPE_GARRISON_6_0]:GetFollowersWithCounterFor(threat) end function addon:GetFollowersIterator(func) - return module.followerCache:GetFollowersIterator(func) + return module.caches[LE_FOLLOWER_TYPE_GARRISON_6_0]:GetFollowersIterator(func) end function addon:GetShipsIterator(func) - return module.shipCache:GetFollowersIterator(func) + return module.caches[LE_FOLLOWER_TYPE_SHIPYARD_6_2]:GetFollowersIterator(func) end function addon:GetHeroesIterator(func) - return module.heroCache:GetFollowersIterator(func) + return module.caches[LE_FOLLOWER_TYPE_GARRISON_7_0]:GetFollowersIterator(func) end -function addon:GetAnyIterator(followerType,func) - if followerType==LE_FOLLOWER_TYPE_GARRISON_6_0 then - return self:GetFollowersIterator(func) - elseif followerType==LE_FOLLOWER_TYPE_SHIPYARD_6_2 then - return self:GetShipsIterator(func) - else - return self:GetHeroesIterator(func) - end +function addon:GetAnyIterator(followerTypeID,func) + return module.caches[followerTypeID]:GetFollowersIterator(func) end function addon:GetFollowerType(followerID) return followerTypes[followerID] or 0 end function addon:GetFollowerID(followerName) return self.names[followerName] - -end \ No newline at end of file +end +function addon:GetCache(followerTypeID) + return module.caches[followerTypeID] +end -- 1.7.9.5