using CombatLibrary.CombatLibrary.CombatCore.CustomizeTimeLogic.FxLogic; using GameLogic.Combat.CombatTool; using GameLogic.Combat.Hero; using UnityEngine; using UTool.CustomizeTimeLogic.FxLogic.TimeLineEventinterface; namespace GameLogic.Combat.Skill { /// /// 火烧 /// public class S30001 : SkillBasic { protected float _harm; protected float _maxTime; protected float _currTime; private BetterList _currTrigger = new BetterList(); protected TimeLineEventLogicGroupBasic loopGroupBasic; protected TimeLineEventLogicGroupBasic currMyLoopGroupBasic; protected bool _isUpdate; protected float _currAllTime; // protected float addXuanZhuang = 0.5f; // protected float _allAddJiaoDu; protected override void ProInitSkillConfig() { _harm = SelfSkillConfig.effectValue[0]; _maxTime = SelfSkillConfig.effectValue[1]; } protected override void ProInitSkill() { SkillBasic skillBasic = CombatHeroEntity.CombatHeroSkillControl.GetSkillBasic(30004); if (skillBasic != null) { _maxTime += skillBasic.SelfSkillConfig.effectValue[0]; } } // protected override ILifetCycleHitPoint[] ProGetTineLineTargetEntity( // TimeLineEventLogicBasic timeLineEventLogicBasic) // { // ILifetCycleHitPoint[] allHero = new ILifetCycleHitPoint[_enterAlertTarget.Count]; // for (int i = 0; i < _enterAlertTarget.Count; i++) // { // allHero[i] = _enterAlertTarget[i].GetMainHotPoin(); // } // // return allHero; // } protected override void ProUseSkill() { _finishTimeLineGroupName = "-1"; currMyLoopGroupBasic = ActivationTimeLineData("sk1"); _isUpdate = true; _currTime = 0; _currAllTime = 0; } protected override void ProBreakSkill() { Finish(); } protected void Finish() { currMyLoopGroupBasic?.BreakTimeLine(CombatHeroEntity); if (loopGroupBasic != null) { loopGroupBasic.BreakTimeLine(CombatHeroEntity); } loopGroupBasic = null; _isUpdate = false; SpecialDotInfo specialDotInfo = CombatHeroEntity.GetMainHotPoin(true) .GetSpecialDotInfo("sk1_trigger"); specialDotInfo.targetTran.gameObject.SetActive(false); } protected override void ProSkillPlayFinish() { Finish(); } protected override void ProCombatUpdate(float time) { if (!_isUpdate) { return; } if (CombatHeroEntity.CombatAIBasic.currFocusTarget != null && !CombatHeroEntity.isDie) { Vector3 nextPos = CombatHeroEntity.CombatAIBasic.currFocusTarget.dotPos; Vector3 p = nextPos - CombatHeroEntity.dotPos; if (p.sqrMagnitude > 0.00001) { CombatHeroEntity.combatHeroGameObject.rotation = Quaternion.Lerp( CombatHeroEntity.combatHeroGameObject.rotation, Quaternion.LookRotation(p.normalized), 0.02f); } } _currTime += time; _currAllTime += time; if (_currTime > 0.2f) { _currTime -= 0.2f; long v = CombatCalculateTool.Instance.GetVlaueRatioForLong( CombatHeroEntity.CurrCombatHeroInfo.attack.Value, _harm); if (loopGroupBasic != null) { loopGroupBasic.BreakTimeLine(CombatHeroEntity); } // for (int i = 0; i < _currTrigger.Count; i++) // { // _currTrigger[i].IfLifeCycle.This().H // } _currTrigger.Clear(); // ILifetCycleHitPoint[] allHero = new ILifetCycleHitPoint[_enterAlertTarget.Count]; for (int i = 0; i < _enterAlertTarget.Count; i++) { ILifetCycleHitPoint targetEntity = _enterAlertTarget[i].GetMainHotPoin(); _currTrigger.Add(targetEntity); HarmReturnInfo harmReturnInfo = Harm(CombatHeroEntity, targetEntity as CombatHeroHitPoint, v, AttType.Skill, triggerData); } // "sk1_hit" string hitName = "sk1_hit_lv4"; loopGroupBasic = ActivationTimeLineData(hitName, _currTrigger); } if (_currAllTime > _maxTime) { SkillPlayFinish(); } } // protected override void ProDefaultTimeLineTrigger(string groupName, CombatHeroHitPoint targetEntity, // ITimelineFxLogic timelineFxLogic, // TriggerData triggerData) // { // long v = CombatCalculateTool.Instance.GetVlaueRatioForLong(CombatHeroEntity.CurrCombatHeroInfo.attack.Value, // _harm); // HarmReturnInfo harmReturnInfo = Harm(CombatHeroEntity, targetEntity, // v, AttType.Skill, triggerData); // } } }