using System; using CombatLibrary.CombatLibrary.CombatCore.CustomizeTimeLogic.FxLogic; using Fort23.Core; using Fort23.UTool; using UnityEngine; using UTool.CustomizeTimeLogic.FxLogic.TimeLineEventinterface; namespace GameLogic.Combat.Buff { public class BuffBasic : CObject { protected CombatHeroEntity combatHeroEntity; protected BuffInfo buffInf; protected CombatHeroEntity source; protected TriggerData _triggerData; protected float _currTime; public int buffCount { get { return _count; } } protected int _count; public void Init(CombatHeroEntity combatHeroEntity, CombatHeroEntity source, BuffInfo buffInfo) { this.combatHeroEntity = combatHeroEntity; this.buffInf = buffInfo; this.source = source; ProInit(); _count = buffInfo.count; UpdateEffect(); } public void AddBuffCount(CombatHeroEntity source, BuffInfo buffInfo) { _count += buffInfo.count; UpdateEffect(); } protected virtual void ProInit() { } public override void ActiveObj() { } public void UpdateEffect() { ProUpdateEffect(); } protected virtual void ProUpdateEffect() { } public void ReduceCount(int count) { _count -= count; if (_count <= 0) { combatHeroEntity.BuffControl.RemoveBuff(this); return; } UpdateEffect(); } public TimeLineEventLogicGroupBasic ActivationTimeLineData(string groupName, BetterList currTarget = null, Vector3[] customizePos = null, System.Action finishCallBack = null, float startTime = default, object extraData = null, int indexCount = 0) { TimeLineEventLogicGroupBasic timeLineEventLogicGroup = source.combatHeroTimeLineControl .GetTimeLineEventLogicGroup(groupName, null); try { if (timeLineEventLogicGroup != null) { timeLineEventLogicGroup.extraData = extraData; timeLineEventLogicGroup.SetCombatInfo(combatHeroEntity, null, currTarget, _triggerData, customizePos, indexCount); timeLineEventLogicGroup.TimeLineUpdateEnd = finishCallBack; timeLineEventLogicGroup.timeLineTime = startTime; combatHeroEntity.combatHeroTimeLineControl.AddEventLogicGroup(timeLineEventLogicGroup); // currUseAllTimeLineLogic.Add(timeLineEventLogicGroup); } } catch (Exception e) { LogTool.Error(e); } return timeLineEventLogicGroup; } public override void DormancyObj() { _currTime = 0; ProDormancyObj(); CObjectPool.Instance.Recycle(buffInf); buffInf = null; combatHeroEntity = null; } protected virtual void ProDormancyObj() { } public void Update(float t) { _currTime += t; if (buffInf.buffTime > 0 && _currTime > buffInf.buffTime) { combatHeroEntity.BuffControl.RemoveBuff(this); return; } ProUpdate(t); } protected virtual void ProUpdate(float t) { } } }