| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133 | using CombatLibrary.CombatLibrary.CombatCore.CustomizeTimeLogic.FxLogic;using Common.Utility.CombatEvent;using Core.Audio;using GameLogic.Combat.CombatTool;using GameLogic.Combat.Skill;using UnityEngine;using Utility.CTween;namespace GameLogic.Combat.Hero.State{    public class MagicWeaponChuChangState : CombatHeroStateBasic    {        private CombatMagicWeaponEntity myCombatMagicWeaponEntity;        private Vector3 startPos;        private Vector3 endPos;        private float _addTime;        private float _currTime;        private TimeLineEventLogicGroupBasic timeLineEventLogicGroup;        private bool isUpdate;        private int[] xOff = new int[] { 0, 1, -1, 2, -2 };        public MagicWeaponChuChangState(CombatHeroEntity combatHeroEntity) : base(combatHeroEntity)        {            myCombatMagicWeaponEntity = combatHeroEntity as CombatMagicWeaponEntity;        }        protected override void ProEnter()        {            myCombatMagicWeaponEntity.CloseLoopFx();            myCombatMagicWeaponEntity.GameObject.transform.eulerAngles = Vector3.zero;            myCombatMagicWeaponEntity.GameObject.transform.localScale = Vector3.one;            myCombatMagicWeaponEntity.GameObject.transform.rotation = myCombatMagicWeaponEntity.RootMagicWeaponControl                .combatHeroEntity.GameObject.transform.rotation;            myCombatMagicWeaponEntity.GameObject.SetActive(true);            startPos = myCombatMagicWeaponEntity.RootMagicWeaponControl.combatHeroEntity.dotPos;            float y = myCombatMagicWeaponEntity.IsEnemy ? 5 : 5;            float x = xOff[myCombatMagicWeaponEntity.useIndex % xOff.Length];            if (myCombatMagicWeaponEntity.CustomizeShowTarget != null)            {                endPos = myCombatMagicWeaponEntity.CustomizeShowTarget();            }            else            {                endPos = myCombatMagicWeaponEntity.RootMagicWeaponControl.combatHeroEntity.GameObject.transform                    .TransformPoint(                        new Vector3(x, y, 0));            }            // endPos = startPos +  Vector3(x-3, y, 0);            _addTime = 1.0f / (Vector3.Distance(startPos, endPos) /                               CustomTweenManager.AnimationCurveLibrary.fabaoMoveTopSpeed);            isUpdate = true;            if (myCombatMagicWeaponEntity.isMagicWeaponTreasureBook)            {                _currTime = 1;            }            else            {                AudioManager.Instance.Play("fabaochuxian.wav",false);                _currTime = 0;                combatHeroEntity.combatHeroTimeLineControl.AddEventLogicGroup("jihuo");            }        }        protected override void ProUpdate(float t)        {            if (!isUpdate)            {                return;            }            _currTime += t * _addTime;            Vector3 pos = Vector3.Lerp(startPos, endPos, _currTime);            myCombatMagicWeaponEntity.combatHeroGameObject.SetPosition(pos);            if (_currTime >= 1)            {                isUpdate = false;                if (timeLineEventLogicGroup != null)                {                    timeLineEventLogicGroup.CloseLoopFx();                }                UseMagicWeaponEventData useMagicWeaponEventData = UseMagicWeaponEventData.Create();                useMagicWeaponEventData.combatHeroEntity =                    myCombatMagicWeaponEntity.RootMagicWeaponControl.combatHeroEntity;                useMagicWeaponEventData.combatMagicWeaponEntity = myCombatMagicWeaponEntity;                CombatEventManager.Instance.Dispatch(CombatEventType.ShowUseMagicWeaponName, useMagicWeaponEventData);                // myCombatMagicWeaponEntity.GameObject.SetActive(true);                timeLineEventLogicGroup =                    combatHeroEntity.combatHeroTimeLineControl.AddEventLogicGroup("show");                if (timeLineEventLogicGroup != null)                {                    timeLineEventLogicGroup.TimeLineUpdateEnd = delegate()                    {                        timeLineEventLogicGroup.CloseLoopFx();                        myCombatMagicWeaponEntity.isCombatState = true;                        myCombatMagicWeaponEntity.CombatAIBasic.ChangeState(CombatHeroStateType.idle);                    };                }                else                {                    myCombatMagicWeaponEntity.isCombatState = true;                    myCombatMagicWeaponEntity.CombatAIBasic.ChangeState(CombatHeroStateType.idle);                }            }        }        protected override void ProExit()        {            timeLineEventLogicGroup?.BreakTimeLine(myCombatMagicWeaponEntity);            timeLineEventLogicGroup = null;        }        public override bool IsUpdateLockTarget()        {            return false;        }        protected override void ProDispose()        {        }    }}
 |