123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181 |
- using Animancer;
- using Common.Utility.CombatEvent;
- using Excel2Json;
- using Fort23.Core;
- using Fort23.UTool;
- using GameLogic.Combat.Buff;
- using GameLogic.Combat.CombatTool;
- using GameLogic.Combat.Hero.State;
- using GameLogic.Combat.Skill;
- using GameLogic.Hero;
- using GameLogic.Player;
- using UnityEngine;
- using UnityEngine.AI;
- namespace GameLogic.Combat.Hero
- {
- /// <summary>
- /// 法宝对象
- /// </summary>
- public class CombatMagicWeaponEntity : CombatHeroEntity
- {
- public int MagicWeaponCollisionId = -1;
- protected FabaoConfig _magicWeaponConfig;
- public float cd = 2;
- public WuXingType WuXingType;
- private FaBaoInfo _faBaoInfo;
- public float HpBl
- {
- get { return _HpBl; }
- set { _HpBl = value; }
- }
- private float _HpBl = 100;
- public int useIndex;
- /// <summary>
- /// 是否进入战斗状态
- /// </summary>
- public bool isCombatState;
- private MagicWeaponControl _magicWeaponControl;
- public MagicWeaponControl MagicWeaponControl
- {
- get { return _magicWeaponControl; }
- }
- private BetterList<SkillBasic> allSkill = new BetterList<SkillBasic>();
- public float MaxCd
- {
- get { return magicWeaponConfig.cd; }
- }
- private FabaoConfig magicWeaponConfig;
- public void MagicWeaponDie()
- {
- {
- HeroDieEventData heroDieEventData = HeroDieEventData.Create();
- heroDieEventData.combatHeroEntity = this;
- CombatEventManager.Instance.Dispatch(CombatEventType.MagicWeaponDie,
- heroDieEventData);
- CombatAIBasic.ChangeState(CombatHeroStateType.dile);
- }
- }
- public async CTask<CombatMagicWeaponEntity> Init(MagicWeaponControl magicWeaponControl,
- FaBaoInfo faBaoInfo,
- System.Action<CombatMagicWeaponEntity> callBack = null)
- {
- this._faBaoInfo = faBaoInfo;
- this.magicWeaponConfig = faBaoInfo.FabaoConfig;
- this._magicWeaponControl = magicWeaponControl;
- string modelName = magicWeaponConfig.model;
- cd = magicWeaponConfig.cd;
- // GameTimeLineParticleFactory
- CombatHeroGameObjectPool poolInterface =
- await GObjectPool.Instance.FetchAsync<CombatHeroGameObjectPool>(modelName + ".prefab", null);
- #if !COMBAT_SERVER
- if (poolInterface == null || poolInterface.own == null)
- {
- return null;
- }
- poolInterface.own.transform.position = Vector3.one;
- poolInterface.own.SetActive(false);
- combatHeroTimeLineControl = new CombatHeroTimeLineControl();
- combatHeroTimeLineControl.Init(this);
- AssetHandle assetHandle =
- await AssetBundleLoadManager.Instance.LoadAssetAsyncTask<TextAsset>(
- modelName + "_TD.txt");
- if (assetHandle != null)
- {
- TextAsset textAsset = assetHandle.AssetObject<TextAsset>();
- TimeLienData timeLienData = JsonManager.FromJson<TimeLienData>(textAsset.text);
- timeLienData.DeserializeData();
- assetHandle.Release();
- combatHeroTimeLineControl.AddTimeLienData(timeLienData);
- }
- combatHeroGameObject = new CombatHeroGameObject();
- combatHeroGameObject.Init(this, poolInterface);
- CombatHeroSkillControl = new CombatHeroSkillControlBasic();
- CombatHeroSkillControl.Init(this);
- int id = magicWeaponConfig.SkillGroupID * 10 + 1;
- // SkillConfig skillConfig = ConfigComponent.Instance.Get<SkillConfig>(id);
- SkillInfo skillInfo = new SkillInfo(id, 1);
- CombatHeroSkillControl.AddSkill(skillInfo);
- if (CombatAIBasic == null)
- {
- CombatAIBasic = new MagicWeaponAi();
- }
- HeroEntityMono heroEntityMono = poolInterface.own.GetComponent<HeroEntityMono>();
- if (heroEntityMono == null)
- {
- heroEntityMono = poolInterface.own.AddComponent<HeroEntityMono>();
- }
- heroEntityMono.combatHeroEntity = this;
- CombatAIBasic.Init(this);
- // AnimancerComponent animancerComponent = poolInterface.own.GetComponentInChildren<AnimancerComponent>();
- combatHeroAnimtion = new CombatHeroAnimtion();
- poolInterface.own.SetActive(true);
- combatHeroAnimtion.Init(this);
- CombatAIBasic.ChangeState(CombatHeroStateType.XiuMian);
- #endif
- callBack?.Invoke(this);
- return this;
- }
- public override float GetAttSpeed()
- {
- return 1;
- }
- public void UseMagicWeapon()
- {
- if (cd > 0 || _magicWeaponControl.combatHeroEntity.CombatAIBasic.currFocusTarget == null)
- {
- return;
- }
- _HpBl = _faBaoInfo.FabaoPowerupConfig.Power;
- cd = magicWeaponConfig.cd;
- _magicWeaponControl.UseMagicWeapon(this);
- }
- public override void Update(float t)
- {
- combatHeroTimeLineControl.Update(t);
- CombatAIBasic?.Update(t);
- CombatHeroSkillControl?.Update(t);
- if (CombatAIBasic.CurrState.GetType() == typeof(MagicWeapomDormancyState))
- {
- cd -= t;
- if (_magicWeaponControl.isAutoUse)
- {
- UseMagicWeapon();
- }
- }
- }
- }
- }
|