[战斗]========= buff 叠层表现修改
parent
04ab1e5451
commit
491a6f311a
|
@ -263,37 +263,40 @@ function BuffManager:Update()
|
||||||
buffList = self.buffDic.kvList[buff.type]
|
buffList = self.buffDic.kvList[buff.type]
|
||||||
end
|
end
|
||||||
|
|
||||||
-- 是覆盖类型的buff且有老buff
|
-- 是覆盖类型的buff且有老buff buff表现层修改所有cover 字段没用了 注释 by:王振兴 2021/03/11 20:40
|
||||||
if buff.cover and buffList.size > 0 then
|
-- if buff.cover and buffList.size > 0 then
|
||||||
local isCovered = false
|
-- local isCovered = false
|
||||||
for i=1, buffList.size do
|
-- for i=1, buffList.size do
|
||||||
local oldBuff = buffList.buffer[i]
|
-- local oldBuff = buffList.buffer[i]
|
||||||
if oldBuff.cover and oldBuff.target == buff.target and oldBuff.clear == buff.clear and oldBuff:OnCover(buff) then --判定该效果能否被覆盖
|
-- if oldBuff.cover and oldBuff.target == buff.target and oldBuff.clear == buff.clear and oldBuff:OnCover(buff) then --判定该效果能否被覆盖
|
||||||
-- 结束并回收老buff
|
-- -- 结束并回收老buff
|
||||||
oldBuff:OnEnd()
|
-- oldBuff:OnEnd()
|
||||||
oldBuff.target.Event:DispatchEvent(BattleEventName.BuffEnd, oldBuff)
|
-- oldBuff.target.Event:DispatchEvent(BattleEventName.BuffEnd, oldBuff)
|
||||||
putBuff(oldBuff)
|
-- putBuff(oldBuff)
|
||||||
-- 覆盖老buff
|
-- -- 覆盖老buff
|
||||||
buffList.buffer[i] = buff
|
-- buffList.buffer[i] = buff
|
||||||
buff:OnStart()
|
-- buff:OnStart()
|
||||||
buff.target.Event:DispatchEvent(BattleEventName.BuffStart, buff)
|
-- buff.target.Event:DispatchEvent(BattleEventName.BuffStart, buff)
|
||||||
buff.target.Event:DispatchEvent(BattleEventName.BuffCover, buff)
|
-- buff.target.Event:DispatchEvent(BattleEventName.BuffCover, buff)
|
||||||
isCovered = true
|
-- isCovered = true
|
||||||
break
|
-- break
|
||||||
end
|
-- end
|
||||||
end
|
-- end
|
||||||
-- 没有覆盖,新buff
|
-- -- 没有覆盖,新buff
|
||||||
if not isCovered then
|
-- if not isCovered then
|
||||||
buffList:Add(buff)
|
-- buffList:Add(buff)
|
||||||
buff:OnStart()
|
-- buff:OnStart()
|
||||||
buff.target.Event:DispatchEvent(BattleEventName.BuffStart, buff)
|
-- buff.target.Event:DispatchEvent(BattleEventName.BuffStart, buff)
|
||||||
end
|
-- end
|
||||||
else
|
-- else
|
||||||
-- 新buff
|
-- -- 新buff
|
||||||
buffList:Add(buff)
|
-- buffList:Add(buff)
|
||||||
buff:OnStart()
|
-- buff:OnStart()
|
||||||
buff.target.Event:DispatchEvent(BattleEventName.BuffStart, buff)
|
-- buff.target.Event:DispatchEvent(BattleEventName.BuffStart, buff)
|
||||||
end
|
-- end
|
||||||
|
buffList:Add(buff)
|
||||||
|
buff:OnStart()
|
||||||
|
buff.target.Event:DispatchEvent(BattleEventName.BuffStart, buff)
|
||||||
end
|
end
|
||||||
|
|
||||||
-- 清除过期buff
|
-- 清除过期buff
|
||||||
|
|
|
@ -159,23 +159,66 @@ end
|
||||||
|
|
||||||
--
|
--
|
||||||
function BuffCtrl:AddBuffIcon(buff, icon)
|
function BuffCtrl:AddBuffIcon(buff, icon)
|
||||||
if not buff or not icon or icon == "" then
|
local currBuff=buff
|
||||||
|
if not currBuff or not icon or icon == "" then
|
||||||
return
|
return
|
||||||
end
|
end
|
||||||
|
|
||||||
if not self.BuffIconList then
|
if not self.BuffIconList then
|
||||||
self.BuffIconList = {}
|
self.BuffIconList = {}
|
||||||
end
|
end
|
||||||
if not self.BuffIconList[buff.id] then
|
-- if not self.BuffIconList[buff.id] then
|
||||||
local buffGO = BattlePool.GetItem(self.buffRoot.transform, BATTLE_POOL_TYPE.BUFF_VIEW)
|
-- local buffGO = BattlePool.GetItem(self.buffRoot.transform, BATTLE_POOL_TYPE.BUFF_VIEW)
|
||||||
buffGO.transform.localScale = Vector3.one
|
-- buffGO.transform.localScale = Vector3.one
|
||||||
buffGO.transform.localPosition = Vector3.zero
|
-- buffGO.transform.localPosition = Vector3.zero
|
||||||
buffGO:SetActive(true)
|
-- buffGO:SetActive(true)
|
||||||
self.BuffIconList[buff.id] = BuffView.New(buffGO, buff, icon)
|
-- self.BuffIconList[buff.id] = BuffView.New(buffGO, buff, icon)
|
||||||
else
|
-- else
|
||||||
self.BuffIconList[buff.id].count = self.BuffIconList[buff.id].count + 1
|
-- self.BuffIconList[buff.id].count = self.BuffIconList[buff.id].count + 1
|
||||||
self.BuffIconList[buff.id]:SetCount()
|
-- self.BuffIconList[buff.id]:SetCount()
|
||||||
end
|
-- end
|
||||||
|
|
||||||
|
LogRed(buff.id)
|
||||||
|
if not self.BuffIconList[currBuff.id] then
|
||||||
|
--便利所有之前存在的buff图标,有同类型,同数值的叠加,否则新建
|
||||||
|
for key, value in pairs(self.BuffIconList) do
|
||||||
|
local buffType=self.BuffIconList[key].buff.type
|
||||||
|
if currBuff.type == self.BuffIconList[key].buff.type then
|
||||||
|
if buffType == BuffName.PropertyChange then
|
||||||
|
--属性 判断属性类型,属性值,属性修改类型
|
||||||
|
local b = self.BuffIconList[key].buff
|
||||||
|
if self.BuffIconList[key].buffPropertyName == currBuff.propertyName and self.BuffIconList[key].buffCt == currBuff.changeType and self.BuffIconList[key].buffValue == currBuff.Value then
|
||||||
|
self.BuffIconList[key]:SetCount(self.BuffIconList[key].count+1)
|
||||||
|
return
|
||||||
|
end
|
||||||
|
--持续伤害类型,伤害系数
|
||||||
|
elseif buffType==BuffName.DOT then
|
||||||
|
if self.BuffIconList[key].buffDamageType==currBuff.damageType and self.BuffIconList[key].buffDamageFactor==currBuff.damageFactor then
|
||||||
|
self.BuffIconList[key]:SetCount(self.BuffIconList[key].count+1)
|
||||||
|
return
|
||||||
|
end
|
||||||
|
--控制类型
|
||||||
|
elseif buffType == BuffName.Control then
|
||||||
|
if self.BuffIconList[key].buffCtrlType==currBuff.ctrlType then
|
||||||
|
self.BuffIconList[key]:SetCount(self.BuffIconList[key].count+1)
|
||||||
|
return
|
||||||
|
end
|
||||||
|
elseif buffType == BuffName.HOT then
|
||||||
|
if self.BuffIconList[key].healValue==currBuff.healValue then
|
||||||
|
self.BuffIconList[key]:SetCount(self.BuffIconList[key].count+1)
|
||||||
|
return
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
|
||||||
|
local buffGO = BattlePool.GetItem(self.buffRoot.transform, BATTLE_POOL_TYPE.BUFF_VIEW)
|
||||||
|
buffGO.transform.localScale = Vector3.one
|
||||||
|
buffGO.transform.localPosition = Vector3.zero
|
||||||
|
buffGO:SetActive(true)
|
||||||
|
self.BuffIconList[currBuff.id] = BuffView.New(buffGO, buff, icon)
|
||||||
end
|
end
|
||||||
function BuffCtrl:RemoveBuffIcon(buff)
|
function BuffCtrl:RemoveBuffIcon(buff)
|
||||||
if not buff then
|
if not buff then
|
||||||
|
@ -184,10 +227,69 @@ function BuffCtrl:RemoveBuffIcon(buff)
|
||||||
if not self.BuffIconList then
|
if not self.BuffIconList then
|
||||||
return
|
return
|
||||||
end
|
end
|
||||||
if self.BuffIconList[buff.id] then
|
-- if self.BuffIconList[buff.id] then
|
||||||
self.BuffIconList[buff.id]:Dispose()
|
-- local count=self.BuffIconList[buff.id].count
|
||||||
self.BuffIconList[buff.id] = nil
|
-- if count==1 then
|
||||||
end
|
-- self.BuffIconList[buff.id]:Dispose()
|
||||||
|
-- self.BuffIconList[buff.id] = nil
|
||||||
|
-- else
|
||||||
|
-- self.BuffIconList[buff.id]:SetCount(count-1)
|
||||||
|
-- end
|
||||||
|
-- return
|
||||||
|
-- end
|
||||||
|
|
||||||
|
--便利所有之前存在的buff图标,有同类型,同数值的叠加,否则新建
|
||||||
|
for key, value in pairs(self.BuffIconList) do
|
||||||
|
local buffType = self.BuffIconList[key].buff.type
|
||||||
|
local floor = self.BuffIconList[key].count
|
||||||
|
|
||||||
|
if buff.type == buffType then
|
||||||
|
if buffType == BuffName.PropertyChange then
|
||||||
|
--属性 判断属性类型,属性值,属性修改类型
|
||||||
|
if self.BuffIconList[key].buffPropertyName==buff.propertyName and self.BuffIconList[key].buffValue==buff.Value and self.BuffIconList[key].buffCt==buff.changeType then
|
||||||
|
if floor==1 then
|
||||||
|
self.BuffIconList[key]:Dispose()
|
||||||
|
self.BuffIconList[key] = nil
|
||||||
|
else
|
||||||
|
self.BuffIconList[key]:SetCount(floor-1)
|
||||||
|
end
|
||||||
|
return
|
||||||
|
end
|
||||||
|
--持续伤害类型,伤害系数
|
||||||
|
elseif buffType == BuffName.DOT then
|
||||||
|
if self.BuffIconList[key].buffDamageType==buff.damageType and self.BuffIconList[key].buffDamageFactor==buff.damageFactor then
|
||||||
|
if floor==1 then
|
||||||
|
self.BuffIconList[key]:Dispose()
|
||||||
|
self.BuffIconList[key] = nil
|
||||||
|
else
|
||||||
|
self.BuffIconList[key]:SetCount(floor-1)
|
||||||
|
end
|
||||||
|
return
|
||||||
|
end
|
||||||
|
--控制类型
|
||||||
|
elseif buffType == BuffName.Control then
|
||||||
|
if self.BuffIconList[key].buffCtrlType==buff.ctrlType then
|
||||||
|
if floor==1 then
|
||||||
|
self.BuffIconList[key]:Dispose()
|
||||||
|
self.BuffIconList[key] = nil
|
||||||
|
else
|
||||||
|
self.BuffIconList[key]:SetCount(floor-1)
|
||||||
|
end
|
||||||
|
return
|
||||||
|
end
|
||||||
|
elseif buffType == BuffName.HOT then
|
||||||
|
if self.BuffIconList[key].healValue==buff.healValue then
|
||||||
|
if floor==1 then
|
||||||
|
self.BuffIconList[key]:Dispose()
|
||||||
|
self.BuffIconList[key] = nil
|
||||||
|
else
|
||||||
|
self.BuffIconList[key]:SetCount(floor-1)
|
||||||
|
end
|
||||||
|
return
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
end
|
end
|
||||||
-- 卸载所有动画
|
-- 卸载所有动画
|
||||||
function BuffCtrl:RemoveAllBuffIcon()
|
function BuffCtrl:RemoveAllBuffIcon()
|
||||||
|
|
|
@ -7,6 +7,14 @@ function BuffView.New(go, buff, icon)
|
||||||
|
|
||||||
instance.go = go
|
instance.go = go
|
||||||
instance.buff = buff
|
instance.buff = buff
|
||||||
|
instance.buffPropertyName = buff.propertyName
|
||||||
|
instance.buffValue = buff.Value
|
||||||
|
instance.buffCt = buff.changeType
|
||||||
|
instance.buffDamageType = buff.damageType
|
||||||
|
instance.buffDamageFactor = buff.damageFactor
|
||||||
|
instance.buffCtrlType = buff.ctrlType
|
||||||
|
instance.healValue = buff.healValue
|
||||||
|
|
||||||
instance.levelText = Util.GetGameObject(go, "level"):GetComponent("Text")
|
instance.levelText = Util.GetGameObject(go, "level"):GetComponent("Text")
|
||||||
instance.layerText = Util.GetGameObject(go, "layer"):GetComponent("Text")
|
instance.layerText = Util.GetGameObject(go, "layer"):GetComponent("Text")
|
||||||
instance.roundText = Util.GetGameObject(go, "round"):GetComponent("Text")
|
instance.roundText = Util.GetGameObject(go, "round"):GetComponent("Text")
|
||||||
|
@ -16,13 +24,15 @@ function BuffView.New(go, buff, icon)
|
||||||
instance.icon.sprite = Util.LoadSprite(icon)
|
instance.icon.sprite = Util.LoadSprite(icon)
|
||||||
instance.icon.color = Color.New(1,1,1,1)
|
instance.icon.color = Color.New(1,1,1,1)
|
||||||
|
|
||||||
if buff.layer and buff.cover then
|
-- if buff.layer and buff.cover then
|
||||||
instance.levelText.text = tostring(buff.layer)
|
-- instance.levelText.text = tostring(buff.layer)
|
||||||
instance.count = buff.layer
|
-- instance.count = buff.layer
|
||||||
else
|
-- else
|
||||||
instance.levelText.text = ""
|
-- instance.levelText.text = ""
|
||||||
instance.count = 1
|
-- instance.count = 1
|
||||||
end
|
-- end
|
||||||
|
instance.levelText.text = ""
|
||||||
|
instance.count = 1
|
||||||
instance.layerText.text = ""
|
instance.layerText.text = ""
|
||||||
instance.roundText.text = ""
|
instance.roundText.text = ""
|
||||||
instance.hideFlag = false
|
instance.hideFlag = false
|
||||||
|
@ -43,7 +53,7 @@ function BuffView:SetCount(count)
|
||||||
count = self.count
|
count = self.count
|
||||||
end
|
end
|
||||||
|
|
||||||
if not self.buff.cover then
|
--if not self.buff.cover then
|
||||||
if count == 1 then --只有1个独立buff,不显示数字
|
if count == 1 then --只有1个独立buff,不显示数字
|
||||||
self.layerText.text = ""
|
self.layerText.text = ""
|
||||||
self.count = 1
|
self.count = 1
|
||||||
|
@ -51,7 +61,7 @@ function BuffView:SetCount(count)
|
||||||
self.layerText.text = tostring(count)
|
self.layerText.text = tostring(count)
|
||||||
self.count = count
|
self.count = count
|
||||||
end
|
end
|
||||||
end
|
--end
|
||||||
end
|
end
|
||||||
|
|
||||||
function BuffView:SetLayer(buff)
|
function BuffView:SetLayer(buff)
|
||||||
|
|
Loading…
Reference in New Issue