Initial version - 1.2.0.60
EN: 1.2.0.60 CN: 1.2.0.61 JP: 1.2.0.63 KR: 1.2.0.67
This commit is contained in:
@@ -0,0 +1,156 @@
|
||||
local BuffCtrl = class("BuffCtrl", BaseCtrl)
|
||||
BuffCtrl._mapNodeConfig = {
|
||||
goBuffGrid = {},
|
||||
rtPool = {sComponentName = "Transform"},
|
||||
buffContent = {sComponentName = "Transform"}
|
||||
}
|
||||
BuffCtrl._mapEventConfig = {}
|
||||
function BuffCtrl:Awake()
|
||||
self.mapBuff = {}
|
||||
self.tbPool = {}
|
||||
self.tbAllCtrl = {}
|
||||
end
|
||||
function BuffCtrl:FadeIn()
|
||||
end
|
||||
function BuffCtrl:FadeOut()
|
||||
end
|
||||
function BuffCtrl:OnEnable()
|
||||
self.nActiveCount = 0
|
||||
end
|
||||
function BuffCtrl:OnDisable()
|
||||
if self.nEntityId ~= nil then
|
||||
self:UnbindEntity()
|
||||
end
|
||||
end
|
||||
function BuffCtrl:OnDestroy()
|
||||
end
|
||||
function BuffCtrl:OnRelease()
|
||||
end
|
||||
function BuffCtrl:AddShield()
|
||||
if self.buffGrid ~= nil then
|
||||
return
|
||||
end
|
||||
local shieldGrid = self:GetBuffGrid()
|
||||
shieldGrid.gameObject.transform:SetAsFirstSibling()
|
||||
self.buffGrid = shieldGrid
|
||||
self.buffGrid:SetShield()
|
||||
end
|
||||
function BuffCtrl:RemoveShield()
|
||||
if self.buffGrid == nil then
|
||||
return
|
||||
end
|
||||
if self.buffGrid ~= nil then
|
||||
local buffGrid = self.buffGrid
|
||||
self.buffGrid = nil
|
||||
local animCallback = function()
|
||||
self:RecycleBuffGrid(buffGrid)
|
||||
end
|
||||
buffGrid:CancelBuff(animCallback)
|
||||
end
|
||||
end
|
||||
function BuffCtrl:OnEvent_BuffUI(nUid, nBuffId, nTime, nCount)
|
||||
local mapBuff = ConfigTable.GetData_Buff(nBuffId)
|
||||
if mapBuff == nil then
|
||||
printError("Buff Data Missing:" .. nBuffId)
|
||||
return
|
||||
end
|
||||
if not mapBuff.IsShow then
|
||||
return
|
||||
end
|
||||
if nTime == 0 or nCount == 0 then
|
||||
if self.mapBuff[nUid] == nil then
|
||||
print("0时间或层数buff 不处理")
|
||||
return
|
||||
else
|
||||
local removedCtrl = self.mapBuff[nUid]
|
||||
self.mapBuff[nUid] = nil
|
||||
local animCallback = function()
|
||||
self:RecycleBuffGrid(removedCtrl)
|
||||
end
|
||||
removedCtrl:CancelBuff(animCallback)
|
||||
self.nActiveCount = self.nActiveCount - 1
|
||||
end
|
||||
else
|
||||
if self.nActiveCount > 40 then
|
||||
printError("buff数量过多本次不处理")
|
||||
return
|
||||
end
|
||||
if self.mapBuff[nUid] == nil then
|
||||
self.mapBuff[nUid] = self:GetBuffGrid()
|
||||
self.nActiveCount = self.nActiveCount + 1
|
||||
end
|
||||
self.mapBuff[nUid]:SetBuff(nBuffId, nCount, nTime)
|
||||
end
|
||||
end
|
||||
function BuffCtrl:GetBuffGrid()
|
||||
if #self.tbPool > 0 then
|
||||
local mapGoCtrl = table.remove(self.tbPool)
|
||||
mapGoCtrl.gameObject.transform:SetParent(self._mapNode.buffContent)
|
||||
local rtGo = mapGoCtrl.gameObject:GetComponent("RectTransform")
|
||||
mapGoCtrl:InterrputAnim()
|
||||
rtGo.localPosition = Vector3.zero
|
||||
rtGo.localScale = Vector3.one
|
||||
rtGo.sizeDelta = Vector2(46, 64)
|
||||
mapGoCtrl.gameObject:SetActive(true)
|
||||
return mapGoCtrl
|
||||
else
|
||||
local goGrid = instantiate(self._mapNode.goBuffGrid)
|
||||
goGrid.transform:SetParent(self._mapNode.buffContent)
|
||||
local rtGo = goGrid.gameObject:GetComponent("RectTransform")
|
||||
rtGo.localPosition = Vector3.zero
|
||||
rtGo.localScale = Vector3.one
|
||||
rtGo.sizeDelta = Vector2(46, 64)
|
||||
goGrid:SetActive(true)
|
||||
local mapCtrl = self:BindCtrlByNode(goGrid, "Game.UI.Hud.Buff.BuffGridCtrl")
|
||||
table.insert(self.tbAllCtrl, mapCtrl)
|
||||
return mapCtrl
|
||||
end
|
||||
end
|
||||
function BuffCtrl:RecycleBuffGrid(mapGridCtrl)
|
||||
table.insert(self.tbPool, mapGridCtrl)
|
||||
mapGridCtrl:InterrputAnim()
|
||||
mapGridCtrl.gameObject:SetActive(false)
|
||||
mapGridCtrl.gameObject.transform:SetParent(self._mapNode.rtPool)
|
||||
end
|
||||
function BuffCtrl:BindEntity(nEntityId)
|
||||
if self.nEntityId ~= nil then
|
||||
printError(string.format("buff已被绑定 当前:%d,绑定:%d", self.nEntityId, nEntityId))
|
||||
return
|
||||
end
|
||||
self.nEntityId = nEntityId
|
||||
EventManager.AddEntityEvent("BuffUIEvent", nEntityId, self, self.OnEvent_BuffUI)
|
||||
self:ClearAllBuffGrid()
|
||||
local AdventureModuleHelper = CS.AdventureModuleHelper
|
||||
local tbBuffInfo = AdventureModuleHelper.GetEntityBuffList(self.nEntityId)
|
||||
if tbBuffInfo ~= nil then
|
||||
local nBuffCount = tbBuffInfo.Count - 1
|
||||
for l = 0, nBuffCount do
|
||||
local eftInfo = tbBuffInfo[l]
|
||||
local nUid = eftInfo:GetUid()
|
||||
local nTime = eftInfo:GetBuffLeftTime():AsInt()
|
||||
self:OnEvent_BuffUI(nUid, eftInfo.buffConfig.Id, nTime, eftInfo:GetBuffNum())
|
||||
end
|
||||
end
|
||||
end
|
||||
function BuffCtrl:UnbindEntity()
|
||||
EventManager.RemoveEntityEvent("BuffUIEvent", self.nEntityId, self, self.OnEvent_BuffUI)
|
||||
self.nEntityId = nil
|
||||
self:ClearAllBuffGrid()
|
||||
end
|
||||
function BuffCtrl:ClearAllBuffGrid()
|
||||
self.mapBuff = {}
|
||||
self.tbPool = {}
|
||||
self.nActiveCount = 0
|
||||
for _, mapCtrl in ipairs(self.tbAllCtrl) do
|
||||
self:UnbindCtrlByNode(mapCtrl)
|
||||
end
|
||||
self.buffGrid = nil
|
||||
self.tbAllCtrl = {}
|
||||
if self._mapNode.rtPool and type(self._mapNode.rtPool) ~= "number" then
|
||||
delChildren(self._mapNode.rtPool)
|
||||
end
|
||||
if self._mapNode.buffContent and type(self._mapNode.buffContent) ~= "number" then
|
||||
delChildren(self._mapNode.buffContent)
|
||||
end
|
||||
end
|
||||
return BuffCtrl
|
||||
Reference in New Issue
Block a user