using Gameplay.Level; using UnityEngine; namespace Gameplay.Buff { public class BuffStandTrigger : BaseBuff { private float _triggerTime; private int[] _triggerBuffIds; private float _lastStandTime; protected override void _OnInit() { base._OnInit(); _triggerTime = configData.FloatParams[0]; _triggerBuffIds = new int[configData.FloatParams.Count - 1]; for (var i = 0; i < _triggerBuffIds.Length; i++) { _triggerBuffIds[i] = Mathf.RoundToInt(configData.FloatParams[i + 1]); } _lastStandTime = owner.fightData.lastMoveTime; } protected override void _OnLogicUpdate(float dt) { base._OnLogicUpdate(dt); var nowTime = LevelManager.Instance.CurrentLevel.LevelTime; var passTime = nowTime - _lastStandTime; if (passTime > _triggerTime) { for (int i = 0; i < _triggerBuffIds.Length; i++) { var triggerBuffId = _triggerBuffIds[i]; owner.buffManager.AddBuffById(triggerBuffId); } } } } }