From d90b3f1814240745b59c16af6c3e4aebe3451244 Mon Sep 17 00:00:00 2001
From: yyl <yyl>
Date: 星期四, 14 八月 2025 10:43:47 +0800
Subject: [PATCH] 125 【战斗】战斗系统 掉落部分 技能特效部分
---
Main/System/Battle/SkillEffect/BulletCurve/BulletCurve.cs | 4
Main/System/Battle/Define/BattleDrops.cs.meta | 11
Main/Common/EventName.cs | 2
Main/Component/UI/Effect/BattleEffectPlayer.cs.meta | 11
Main/System/Battle/SkillEffect/BulletCurve/BounceBulletCurve.cs | 2
Main/System/Battle/SkillEffect/BulletCurve/StraightBulletCurve.cs | 2
Main/System/Battle/BattleField/OperationAgent/StopModeOperationAgent.cs | 23 +
Main/System/Battle/BattleField/OperationAgent/StopModeOperationAgent.cs.meta | 11
Main/System/Battle/BattleField/StoryBattleField.cs | 5
Main/System/Battle/SkillEffect/BulletCurve/BulletCurveFactory.cs | 2
Main/System/Battle/SkillEffect/BulletSkillEffect.cs | 4
Main/System/Battle/BattleField/BattleField.cs | 31 -
Main/System/Battle/RecordPlayer/RecordPlayer.cs | 2
Main/System/Battle/BattleObject/BattleObject.cs | 21 +
Main/System/Battle/Skill/SkillBase.cs | 210 ++++++++-----
Main/System/Battle/SkillEffect/BulletCurve/BezierBulletCurve.cs | 2
Main/System/Battle/SkillEffect/BulletCurve/PenetrateBulletCurve.cs | 2
Main/System/Battle/BattleEffectMgr.cs | 26
Main/System/Battle/BattleField/RecordActions/DeathRecordAction.cs | 20 -
Main/System/Battle/Define/BattleDrops.cs | 14
Main/Component/UI/Effect/BattleEffectPlayer.cs | 458 ++++++++++++++++++++++++++++++
21 files changed, 714 insertions(+), 149 deletions(-)
diff --git a/Main/Common/EventName.cs b/Main/Common/EventName.cs
index ad3cc1f..fa6d616 100644
--- a/Main/Common/EventName.cs
+++ b/Main/Common/EventName.cs
@@ -9,4 +9,6 @@
public const string BATTLE_DAMAGE_TAKEN = "BATTLE_DAMAGE_TAKEN";//閫犳垚浼ゅ
public const string DISPLAY_BATTLE_UI = "DISPLAY_BATTLE_UI";//鏄剧ず鎴樻枟UI
+
+ public const string BATTLE_DROP_ITEMS = "BATTLE_DROP_ITEMS";//鎺夎惤鐗╁搧
}
\ No newline at end of file
diff --git a/Main/Component/UI/Effect/BattleEffectPlayer.cs b/Main/Component/UI/Effect/BattleEffectPlayer.cs
new file mode 100644
index 0000000..1a09695
--- /dev/null
+++ b/Main/Component/UI/Effect/BattleEffectPlayer.cs
@@ -0,0 +1,458 @@
+using System;
+using System.Collections;
+using System.Collections.Generic;
+using Spine.Unity;
+using UnityEngine;
+using Spine;
+using UnityEngine.UI;
+using System.Linq;
+
+// 鐗规晥鎾斁鍣紝瀵硅薄姹犵鐞嗭細unity鐗规晥鍜宻pine鐗规晥閮芥槸鍋氬ソ鐨勯鍒朵綋
+// unity鐗规晥棰勫埗浣撴槸鐗规晥甯堝湪鍒朵綔鐨勬椂鍊欑敓鎴愮殑锛寀nity鐗规晥蹇呴』鎸傝浇璁剧疆鎾斁鏃堕暱鑴氭湰 EffectTime
+// spine鐗规晥鏄壒鏁堝笀鍒朵綔鐨勫姩鐢绘枃浠跺彲鐩存帴鍔犺浇鐢紝鍒朵綔鎴愰鍒朵綋鍙鍔燘oneFollower涔嬬被鐨勮繘琛岄�昏緫澶勭悊
+public class BattleEffectPlayer : MonoBehaviour
+{
+ [SerializeField]
+ private int m_EffectID;
+ public int effectId
+ {
+ get
+ {
+ return m_EffectID;
+ }
+ set
+ {
+ if (value != m_EffectID)
+ {
+ isInit = false;
+ m_EffectID = value;
+ }
+ }
+ }
+
+
+
+ public EffectConfig effectConfig;
+
+ public float speedRate = 1f;
+
+
+
+
+ [Header("鎾斁瀹屾瘯绔嬪嵆鍥炴敹")]
+ public bool isReleaseImmediately = false; //鐣岄潰鐗规晥涓�鑸笉闇�瑕佽嚜鎴戦攢姣侊紝璺熼殢鐣岄潰鎴栬�呯埗瀵硅薄閿�姣佸氨琛�
+
+ public Action<BattleEffectPlayer> onDestroy;
+
+ [HideInInspector] public Canvas canvas = null;
+
+ [HideInInspector] public GameObject effectTarget = null;
+
+ protected EffectPenetrationBlocker blocker = null;
+
+ protected bool isInit = false;
+
+ protected List<ParticleSystem> particleList = new List<ParticleSystem>();
+
+ protected List<Animator> animatorList = new List<Animator>();
+
+ protected List<Renderer> rendererList = new List<Renderer>();
+
+ protected GameObject spineContainer;
+
+ protected SkeletonGraphic spineComp;
+ protected Spine.AnimationState spineAnimationState;
+
+ public GameObjectPoolManager.GameObjectPool pool;
+
+ public Action onComplete;
+
+ protected virtual void OnEnable()
+ {
+ if (spineComp != null)
+ {
+ //闅愯棌锛屼細鏈夐潤鎬佹樉绀洪棶棰�
+ spineComp.enabled = false;
+ }
+ }
+
+
+ protected void InitComponent(bool showLog = true)
+ {
+ Clear();
+ if (effectId <= 0)
+ {
+ effectConfig = null;
+#if UNITY_EDITOR
+ if (showLog)
+ {
+ Debug.LogError("BattleEffectPlayer effectId is not set");
+ UnityEditor.Selection.activeGameObject = gameObject;
+ UnityEditor.EditorGUIUtility.PingObject(gameObject);
+ }
+#endif
+ return;
+ }
+
+ effectConfig = EffectConfig.Get(effectId);
+
+ if (null == effectConfig)
+ {
+#if UNITY_EDITOR
+ Debug.LogError("could not find effect config, effect id is " + effectId);
+ UnityEditor.Selection.activeGameObject = gameObject;
+ UnityEditor.EditorGUIUtility.PingObject(gameObject);
+#endif
+ return;
+ }
+
+ // 鍒濆鍖杝pine缁勪欢
+ if (effectConfig != null && effectConfig.isSpine != 1)
+ {
+ GameObject spineContainerPrefab = ResManager.Instance.LoadAsset<GameObject>("UIComp", "SpineContainer");
+ spineContainer = GameObject.Instantiate(spineContainerPrefab, transform);
+ }
+ // 鏈夌壒鏁堝彲鑳藉甫spine鍙堝甫unity鐗规晥鐨勬儏鍐�
+ spineComp = gameObject.GetComponentInChildren<SkeletonGraphic>(true);
+ }
+
+ protected virtual void Clear()
+ {
+ particleList.Clear();
+ animatorList.Clear();
+ rendererList.Clear();
+ spineComp = null;
+ spineAnimationState = null;
+ if (null != spineContainer)
+ GameObject.DestroyImmediate(spineContainer);
+ spineContainer = null;
+ pool = null;
+ }
+
+ public virtual void Stop()
+ {
+ if (null != effectTarget)
+ {
+ // 濡傛灉浣跨敤浜嗙壒鏁堥鍒朵綋姹狅紝鍒欏綊杩樺埌姹犱腑
+ if (pool != null)
+ {
+ pool.Release(effectTarget);
+ }
+ effectTarget = null;
+ }
+
+ isInit = false;
+
+ Clear();
+ onComplete?.Invoke();
+ }
+
+ public virtual void Play(bool showLog = true)
+ {
+ if (!isInit)
+ {
+ InitComponent(showLog);
+ isInit = true;
+ }
+ else
+ {
+ //閬垮厤閲嶅鍒涘缓
+ if (!this.gameObject.activeSelf)
+ {
+ this.gameObject.SetActive(true);
+ }
+ return;
+ }
+
+ if (EffectMgr.IsNotShowBySetting(effectId))
+ {
+ return;
+ }
+
+ if (null != effectTarget)
+ {
+ if (pool != null)
+ pool.Release(effectTarget);
+ effectTarget = null;
+ }
+
+ if (!this.gameObject.activeSelf)
+ {
+ this.gameObject.SetActive(true);
+ }
+
+ PlayEffect();
+
+
+ }
+
+ protected virtual void PlayEffect()
+ {
+ if (null == effectConfig)
+ {
+ Debug.LogError("BattleEffectPlayer effectConfig is null, effect id is " + effectId);
+ return;
+ }
+
+ if (effectConfig.isSpine != 0)
+ {
+ PlaySpineEffect();
+ }
+ else
+ {
+ PlayUnityEffect();
+ }
+
+ }
+
+ protected void PlaySpineEffect()
+ {
+ // 杩欓噷鏄函spine鐨勯�昏緫
+
+ if (spineComp == null)
+ {
+ Debug.LogError("BattleEffectPlayer spineComp is null, effect id is " + effectId);
+ return;
+ }
+
+ SkeletonDataAsset skeletonDataAsset = ResManager.Instance.LoadAsset<SkeletonDataAsset>("UIEffect/BattleSpine/" + effectConfig.packageName, effectConfig.fxName);
+ spineComp.skeletonDataAsset = skeletonDataAsset;
+ spineComp.Initialize(true);
+ spineComp.raycastTarget = false;
+ spineComp.timeScale = speedRate;
+
+ spineAnimationState = spineComp.AnimationState;
+ spineAnimationState.Complete -= OnSpineAnimationComplete;
+ spineAnimationState.Complete += OnSpineAnimationComplete;
+
+ Spine.Animation animation = spineAnimationState.Data.SkeletonData.Animations.First();
+ spineAnimationState.SetAnimation(0, animation, false);
+ }
+
+ protected void PlayUnityEffect()
+ {
+ // 杩欓噷鏄函unity鐗规晥鐨勯�昏緫
+
+ var effectPrefab = ResManager.Instance.LoadAsset<GameObject>("UIEffect/" + effectConfig.packageName, effectConfig.fxName);
+ if (effectPrefab == null)
+ {
+ Debug.LogError($"鍔犺浇UI鐗规晥澶辫触: {effectConfig.packageName}");
+ return;
+ }
+
+ if (spineComp != null)
+ {
+ spineComp.enabled = true;
+ }
+
+ // 浠庣壒鏁堥鍒朵綋姹犺幏鍙栫壒鏁�
+ pool = GameObjectPoolManager.Instance.RequestPool(effectPrefab);
+ effectTarget = pool.Request();
+ // 璁剧疆鐖惰妭鐐瑰拰浣嶇疆
+ effectTarget.transform.SetParent(transform);
+ effectTarget.transform.localPosition = Vector3.zero;
+ effectTarget.transform.localScale = Vector3.one;
+ effectTarget.transform.localRotation = Quaternion.identity;
+ effectTarget.name = $"Effect_{effectConfig.fxName}";
+
+ //鎸傝浇缁勪欢鍚� 寮�濮嬫敹闆�
+ particleList.AddRange(gameObject.GetComponentsInChildren<ParticleSystem>(true));
+ animatorList.AddRange(gameObject.GetComponentsInChildren<Animator>(true));
+ rendererList.AddRange(gameObject.GetComponentsInChildren<Renderer>(true));
+
+ OnUnityAnimationComplete();
+
+ if (null == canvas)
+ canvas = GetComponentInParent<Canvas>();
+
+ // 娣诲姞鐗规晥绌块�忛樆鎸″櫒
+ blocker = effectTarget.AddMissingComponent<EffectPenetrationBlocker>();
+
+ // 濡傛灉娌℃湁canvas鐨勮瘽 姝e父鏄洜涓轰笉鍦˙attleWin涓嬮潰鐨勮妭鐐� 鎰忔�濆氨鏄綋鍓嶆病鏈夋樉绀� 绛夊埌鍒囧洖鎴樻枟鐨勬椂鍊欏啀閫氳繃BattleField.UpdateCanvas鏉ユ洿鏂�
+ if (canvas != null)
+ {
+ blocker.SetParentCanvas(canvas);
+ }
+
+ SoundPlayer.Instance.PlayUIAudio(effectConfig.audio);
+
+ }
+
+ protected void OnDestroy()
+ {
+ if (onDestroy != null)
+ {
+ onDestroy.Invoke(this);
+ onDestroy = null;
+ }
+ // 鍋滄鐗规晥骞跺綊杩樺埌姹犱腑
+ Stop();
+
+ if (spineAnimationState != null)
+ {
+ spineAnimationState.Complete -= OnSpineAnimationComplete;
+ }
+ }
+
+ //鍗曟鎾斁瀹屾瘯灏变細瑙﹀彂锛屽嵆浣挎槸寰幆
+ protected virtual void OnSpineAnimationComplete(Spine.TrackEntry trackEntry)
+ {
+ if (isReleaseImmediately)
+ {
+ spineComp.enabled = false;
+ Stop();
+ }
+ }
+
+
+ private void OnUnityAnimationComplete()
+ {
+ var timeObj = effectTarget.GetComponent<EffectTime>();
+ if (!timeObj.isLoop)
+ {
+ this.SetWait(timeObj.playTime);
+ this.DoWaitRestart();
+ this.OnWaitCompelete(OnEffectComplete);
+ }
+ }
+
+ private void OnEffectComplete(Component comp)
+ {
+ this.DoWaitStop();
+ if (isReleaseImmediately)
+ Stop();
+ }
+
+
+ // 鍒涘缓鍚庣殑鐗规晥浼氳嚜鍔ㄩ殣钘� 闇�瑕佹墜鍔ㄨ皟鐢≒lay鎵嶈兘鎾斁
+ public static BattleEffectPlayer Create(int effectId, Transform parent, bool createNewChild = false)
+ {
+ // 鐩存帴鍒涘缓鐗规晥鎾斁鍣紝涓嶄娇鐢ㄥ璞℃睜
+ BattleEffectPlayer BattleEffectPlayer = null;
+
+ if (createNewChild)
+ {
+ GameObject newGo = new GameObject("BattleEffectPlayer_" + effectId);
+ newGo.transform.SetParent(parent, false);
+ BattleEffectPlayer = newGo.AddComponent<BattleEffectPlayer>();
+ }
+ else
+ {
+ BattleEffectPlayer = parent.AddMissingComponent<BattleEffectPlayer>();
+ }
+
+ BattleEffectPlayer.effectId = effectId;
+ BattleEffectPlayer.SetActive(true);
+ return BattleEffectPlayer;
+ }
+
+ /// <summary>
+ /// 璁剧疆娓告垙瀵硅薄婵�娲荤姸鎬�
+ // /// </summary>
+ // public void SetActive(bool active)
+ // {
+ // if (gameObject != null)
+ // {
+ // gameObject.SetActive(active);
+ // }
+ // }
+
+ public void Pause()
+ {
+ if (effectTarget == null) return;
+
+ // Spine鍔ㄧ敾
+ // var spineGraphics = effectTarget.GetComponentsInChildren<SkeletonGraphic>(true);
+ // foreach (var sg in spineGraphics)
+ if (spineComp != null)
+ {
+ spineComp.timeScale = 0f;
+ }
+
+ // Animator鍔ㄧ敾
+ foreach (var animator in animatorList)
+ {
+ animator.speed = 0f;
+ }
+
+ // 绮掑瓙鐗规晥
+ foreach (var ps in particleList)
+ {
+ ps.Pause();
+ }
+ }
+
+ public void Resume()
+ {
+ if (effectTarget == null) return;
+
+ if (spineComp != null)
+ {
+ spineComp.timeScale = speedRate;
+ }
+
+ // Animator鍔ㄧ敾
+ foreach (var animator in animatorList)
+ {
+ animator.speed = speedRate;
+ }
+
+ // 绮掑瓙鐗规晥
+ foreach (var ps in particleList)
+ {
+ ps.Play();
+ }
+ }
+
+ public bool IsFinish()
+ {
+ if (effectTarget == null) return true;
+
+ // Spine鍔ㄧ敾
+ if (!spineComp.AnimationState.GetCurrent(0).IsComplete)
+ {
+ return false;
+ }
+
+ // Animator鍔ㄧ敾
+ foreach (var animator in animatorList)
+ {
+ AnimatorStateInfo stateInfo = animator.GetCurrentAnimatorStateInfo(0);
+
+ // 寰幆鍔ㄧ敾涓嶈�冭檻缁撴潫鐨勯棶棰�
+ if (!stateInfo.loop && stateInfo.normalizedTime < 1f)
+ {
+ return false;
+ }
+ }
+
+ // 绮掑瓙鐗规晥
+ foreach (var ps in particleList)
+ {
+ if (ps.IsAlive())
+ {
+ return false;
+ }
+ }
+
+ return true;
+ }
+
+ /// <summary>
+ /// 璁剧疆閬僵锛堟敮鎸丷ectMask2D銆丮ask銆丼moothMask绛夛級
+ /// </summary>
+ public void SetMask(RectTransform maskArea = null)
+ {
+ if (effectTarget == null || blocker == null)
+ return;
+
+ // 浼樺厛浣跨敤浼犲叆鐨刴askArea
+ if (maskArea != null)
+ {
+ blocker.PerformMask(maskArea);
+ return;
+ }
+ }
+
+
+}
diff --git a/Main/Component/UI/Effect/BattleEffectPlayer.cs.meta b/Main/Component/UI/Effect/BattleEffectPlayer.cs.meta
new file mode 100644
index 0000000..ee8537d
--- /dev/null
+++ b/Main/Component/UI/Effect/BattleEffectPlayer.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: 040308ab06e08de4ab5b2b8d0f192131
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Main/System/Battle/BattleEffectMgr.cs b/Main/System/Battle/BattleEffectMgr.cs
index c4607d7..3d2899a 100644
--- a/Main/System/Battle/BattleEffectMgr.cs
+++ b/Main/System/Battle/BattleEffectMgr.cs
@@ -6,7 +6,7 @@
{
private BattleField battleField;
- private Dictionary<int, List<EffectPlayer>> effectDict = new Dictionary<int, List<EffectPlayer>>();
+ private Dictionary<int, List<BattleEffectPlayer>> effectDict = new Dictionary<int, List<BattleEffectPlayer>>();
public void Init(BattleField _battleField)
{
@@ -15,9 +15,9 @@
public void PauseGame()
{
- foreach (KeyValuePair<int, List<EffectPlayer>> kvPair in effectDict)
+ foreach (KeyValuePair<int, List<BattleEffectPlayer>> kvPair in effectDict)
{
- foreach (EffectPlayer effectPlayer in kvPair.Value)
+ foreach (BattleEffectPlayer effectPlayer in kvPair.Value)
{
if (effectPlayer != null)
{
@@ -29,9 +29,9 @@
public void ResumeGame()
{
- foreach (KeyValuePair<int, List<EffectPlayer>> kvPair in effectDict)
+ foreach (KeyValuePair<int, List<BattleEffectPlayer>> kvPair in effectDict)
{
- foreach (EffectPlayer effectPlayer in kvPair.Value)
+ foreach (BattleEffectPlayer effectPlayer in kvPair.Value)
{
if (effectPlayer != null)
{
@@ -41,14 +41,14 @@
}
}
- public EffectPlayer PlayEffect(int ObjID, int effectId, Transform parent)
+ public BattleEffectPlayer PlayEffect(int ObjID, int effectId, Transform parent)
{
if (!effectDict.ContainsKey(effectId))
{
- effectDict[effectId] = new List<EffectPlayer>();
+ effectDict[effectId] = new List<BattleEffectPlayer>();
}
- EffectPlayer effectPlayer = EffectPlayer.Create(effectId, parent);
+ BattleEffectPlayer effectPlayer = BattleEffectPlayer.Create(effectId, parent);
effectPlayer.onDestroy += OnEffectDestroy;
if (effectPlayer != null)
{
@@ -57,9 +57,9 @@
return effectPlayer;
}
- public void RemoveEffect(int effectId, EffectPlayer effectPlayer)
+ public void RemoveEffect(int effectId, BattleEffectPlayer effectPlayer)
{
- List<EffectPlayer> effectPlayers = null;
+ List<BattleEffectPlayer> effectPlayers = null;
if (effectDict.TryGetValue(effectId, out effectPlayers))
{
@@ -73,7 +73,7 @@
}
}
- protected void OnEffectDestroy(EffectPlayer effectPlayer)
+ protected void OnEffectDestroy(BattleEffectPlayer effectPlayer)
{
if (effectDict.ContainsKey(effectPlayer.effectId))
{
@@ -87,9 +87,9 @@
public void HaveRest()
{
- foreach (KeyValuePair<int, List<EffectPlayer>> kvPair in effectDict)
+ foreach (KeyValuePair<int, List<BattleEffectPlayer>> kvPair in effectDict)
{
- foreach (EffectPlayer effectPlayer in kvPair.Value)
+ foreach (BattleEffectPlayer effectPlayer in kvPair.Value)
{
if (effectPlayer != null)
{
diff --git a/Main/System/Battle/BattleField/BattleField.cs b/Main/System/Battle/BattleField/BattleField.cs
index 0fd1e13..7eb387d 100644
--- a/Main/System/Battle/BattleField/BattleField.cs
+++ b/Main/System/Battle/BattleField/BattleField.cs
@@ -170,12 +170,21 @@
case BattleMode.Record:
operationAgent = new RecordModeOperationAgent(this);
break;
+ case BattleMode.Stop:
+ operationAgent = new StopModeOperationAgent(this);
+ break;
default:
operationAgent = new HandModeOperationAgent(this);
break;
}
Debug.LogError("battleMode is " + battleMode.ToString());
+ }
+
+ public virtual void AutoSetBattleMode()
+ {
+ // 闄や簡涓荤嚎閮芥槸鎴樻姤 涓荤嚎鐨勫唴瀹瑰湪StoryBattleField閲�
+ SetBattleMode(BattleMode.Record);
}
public virtual void PlayRecord(RecordAction recordAction)
@@ -188,7 +197,7 @@
recordPlayer.PlayRecord(recordList);
}
- protected virtual void ResumeGame()
+ public virtual void ResumeGame()
{
battleObjMgr.ResumeGame();
recordPlayer.ResumeGame();
@@ -196,7 +205,7 @@
battleTweenMgr.ResumeGame();
}
- protected virtual void PauseGame()
+ public virtual void PauseGame()
{
// 鎬庝箞閫氱煡鐣岄潰鏆傚仠浜嗗憿锛�
@@ -382,14 +391,6 @@
};
}
- public void OnObjDropItem(int positionNum, ItemModel item)
- {
- // 澶勭悊鎺夎惤鐗╁搧
- //鏃犺濡備綍鍥惧眰搴旇鍦ㄤ汉鐗╀笂闈� 鎵�浠ヨ繖閲屽簲璇ユ湁涓寕鐐�
- // YYL TODO
-
-
- }
public void OnObjReborn(HB423_tagMCTurnFightObjReborn vNetData)
{
@@ -405,12 +406,6 @@
}
}
- public void OnObjDropExp(BattleObject battleObject)
- {
- // 澶勭悊鎺夎惤缁忛獙
- // YYL TODO
- battleObject.DropExp();
- }
public virtual void OnBattleEnd(JsonData turnFightStateData)
{
@@ -429,6 +424,8 @@
battleEffectMgr.HaveRest();
battleTweenMgr.HaveRest();
+
+ SetBattleMode(BattleMode.Stop);
}
public bool IsBattleEnd()
@@ -440,4 +437,4 @@
{
}
-}
\ No newline at end of file
+}
diff --git a/Main/System/Battle/BattleField/OperationAgent/StopModeOperationAgent.cs b/Main/System/Battle/BattleField/OperationAgent/StopModeOperationAgent.cs
new file mode 100644
index 0000000..d7f9f8f
--- /dev/null
+++ b/Main/System/Battle/BattleField/OperationAgent/StopModeOperationAgent.cs
@@ -0,0 +1,23 @@
+using UnityEngine;
+
+// record鐩存帴鍏ㄧ▼鎾斁灏卞ソ浜� 涓嶉渶瑕佸叾浠栨搷浣�
+
+public class StopModeOperationAgent : IOperationAgent
+{
+ public StopModeOperationAgent(BattleField battleField) : base(battleField)
+ {
+
+ }
+
+ public override void Run()
+ {
+ base.Run();
+ }
+
+ public override void DoNext()
+ {
+ base.DoNext();
+
+ battleField.AutoSetBattleMode();
+ }
+}
\ No newline at end of file
diff --git a/Main/System/Battle/BattleField/OperationAgent/StopModeOperationAgent.cs.meta b/Main/System/Battle/BattleField/OperationAgent/StopModeOperationAgent.cs.meta
new file mode 100644
index 0000000..ceca609
--- /dev/null
+++ b/Main/System/Battle/BattleField/OperationAgent/StopModeOperationAgent.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: 3326f5db1168c3f48922e1c2c1a07b50
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Main/System/Battle/BattleField/RecordActions/DeathRecordAction.cs b/Main/System/Battle/BattleField/RecordActions/DeathRecordAction.cs
index fa8f020..58211fc 100644
--- a/Main/System/Battle/BattleField/RecordActions/DeathRecordAction.cs
+++ b/Main/System/Battle/BattleField/RecordActions/DeathRecordAction.cs
@@ -8,7 +8,6 @@
: base(RecordActionType.Death, _battleField, _battleObj)
{
isFinish = false;
- isRunOnce = false;
}
public override bool IsFinished()
@@ -19,12 +18,8 @@
public override void Run()
{
- if (isRunOnce)
- {
- return;
- }
base.Run();
- isRunOnce = true;
+ isFinish = true;
battleObject.OnDeath(OnDeathAnimationEnd);
}
@@ -33,18 +28,7 @@
// 鍙湁涓荤嚎鎺夎惤鐗╁搧
if (battleField.MapID == 1 || battleField.MapID == 2)
{
- var dropItemPack = PackManager.Instance.GetSinglePack(PackType.DropItem);
- if (dropItemPack != null)
- {
- var items = dropItemPack.GetAllItems();
- foreach (ItemModel item in items.Values)
- {
- // 鎺夎惤鐗╁搧
- battleField.OnObjDropItem(battleObject.teamHero.positionNum, item);
- battleField.OnObjDropExp(battleObject);
-
- }
- }
+ battleObject.PerformDrop();
}
// 鎺夎惤鐗╁搧 澧炲姞缁忛獙
diff --git a/Main/System/Battle/BattleField/StoryBattleField.cs b/Main/System/Battle/BattleField/StoryBattleField.cs
index 8854fcd..bc28bb4 100644
--- a/Main/System/Battle/BattleField/StoryBattleField.cs
+++ b/Main/System/Battle/BattleField/StoryBattleField.cs
@@ -78,6 +78,11 @@
SetBattleMode((BattleMode)Enum.Parse(typeof(BattleMode), savedStr));
}
+ public override void AutoSetBattleMode()
+ {
+ LoadBattleMode();
+ }
+
public override void TurnFightState(int TurnNum, int State,
uint FuncLineID, JsonData extendData)
{
diff --git a/Main/System/Battle/BattleObject/BattleObject.cs b/Main/System/Battle/BattleObject/BattleObject.cs
index 3abc1aa..03eb5bc 100644
--- a/Main/System/Battle/BattleObject/BattleObject.cs
+++ b/Main/System/Battle/BattleObject/BattleObject.cs
@@ -48,6 +48,8 @@
private set;
}
+ protected BattleDrops battleDrops;
+
private RectTransform m_heroRectTrans;
public RectTransform heroRectTrans
@@ -328,16 +330,23 @@
motionBase.PlayAnimation(MotionName.idle, true);
}
- public void PushExpPackList(List<HB405_tagMCAddExp> _hB405_tagMCAddExps)
+ public void PushDropItems(BattleDrops _battleDrops)
{
- // YYL TODO 姝讳骸鍚庡脊鍑虹粡楠屾帀钀芥彁閱�
- hB405_tagMCAddExps = _hB405_tagMCAddExps;
+ battleDrops = _battleDrops;
}
- public void DropExp()
+ public void PerformDrop()
{
- // YYL TODO
- // hB405_tagMCAddExps
+ if (null == battleDrops)
+ return;
+
+ EventBroadcast.Instance.Broadcast<string, BattleDrops, Action>(
+ EventName.BATTLE_DROP_ITEMS, battleField.guid, battleDrops, OnPerformDropFinish);
+ }
+
+ protected void OnPerformDropFinish()
+ {
+ battleDrops = null;
}
diff --git a/Main/System/Battle/Define/BattleDrops.cs b/Main/System/Battle/Define/BattleDrops.cs
new file mode 100644
index 0000000..570b8e3
--- /dev/null
+++ b/Main/System/Battle/Define/BattleDrops.cs
@@ -0,0 +1,14 @@
+using System.Collections.Generic;
+using UnityEngine;
+
+public class BattleDrops
+{
+ // 鎺夎惤浣嶇疆
+ public RectTransform rectTransform;
+
+ // 骞冲潎鍒嗛厤濂藉悗鐨勬帀钀界墿鍝佽儗鍖呯储寮曞垪琛�
+ public List<int> dropItemPackIndex = new List<int>();
+
+ // 骞冲潎鍒嗛厤濂藉悗鐨勭粡楠屾帀钀�
+ public List<HB405_tagMCAddExp> expDrops = new List<HB405_tagMCAddExp>();
+}
\ No newline at end of file
diff --git a/Main/System/Battle/Define/BattleDrops.cs.meta b/Main/System/Battle/Define/BattleDrops.cs.meta
new file mode 100644
index 0000000..6e7720c
--- /dev/null
+++ b/Main/System/Battle/Define/BattleDrops.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: 99a36d208918d0f47bd97c12803e435d
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Main/System/Battle/RecordPlayer/RecordPlayer.cs b/Main/System/Battle/RecordPlayer/RecordPlayer.cs
index c5c9309..74e2874 100644
--- a/Main/System/Battle/RecordPlayer/RecordPlayer.cs
+++ b/Main/System/Battle/RecordPlayer/RecordPlayer.cs
@@ -52,6 +52,8 @@
if (currentRecordAction != null && currentRecordAction.IsFinished())
{
+ Debug.LogError("record action " + currentRecordAction.GetType() + " play finished");
+
currentRecordAction = null;
}
diff --git a/Main/System/Battle/Skill/SkillBase.cs b/Main/System/Battle/Skill/SkillBase.cs
index 4325c92..a0604ba 100644
--- a/Main/System/Battle/Skill/SkillBase.cs
+++ b/Main/System/Battle/Skill/SkillBase.cs
@@ -3,6 +3,8 @@
using System;
using DG.Tweening;
using Spine;
+using System.Linq;
+using PlasticGui.WorkspaceWindow.BranchExplorer;
public class SkillBase
@@ -65,20 +67,7 @@
}
- protected virtual void OnActiveSkillFrame()
- {
- }
-
- protected virtual void OnStartSkillFrame()
- {
-
- }
-
- protected virtual void OnEndSkillFrame()
- {
-
- }
public void Pause()
{
@@ -141,26 +130,10 @@
}
}
- // 鍐插埡鐨勬妧鑳� 鍔ㄤ綔 璺熺Щ鍔� 鏄悓鏃惰繘琛岀殑 绉诲姩鍒扮洰鏍囩殑涓�鐬棿灏辫杩涜鎶�鑳介�昏緫
- // protected void DashToTarget(Action _onComplete)
- // {
- // TrackEntry entry = PlayCastAnimation();
- // BattleObject mainTarget = battleField.battleObjMgr.GetBattleObject((int)tagUseSkillAttack.AttackID);
- // if (mainTarget == null)
- // {
- // Debug.LogError("鐩爣涓虹┖ mainTarget == null AttackID : " + tagUseSkillAttack.AttackID);
- // _onComplete?.Invoke();
- // return;
- // }
-
- // // 鍋氫竴涓井寰殑鎻愬墠
- // MoveToTarget(mainTarget.Camp, mainTarget.teamHero.positionNum, entry.AnimationEnd - 0.05f, () => DoSkillLogic(_onComplete));
- // }
-
// 杩欓噷鍏跺疄鏄妧鑳藉悗鎽囩粨鏉熺殑鍦版柟
protected virtual void DoSkillLogic(Action _onComplete = null)
{
-
+
}
protected TrackEntry PlayCastAnimation(Action onComplete = null)
@@ -226,7 +199,7 @@
// 楂樹寒鎵�鏈夌洰鏍�
HashSet<BattleObject> highlightList = new HashSet<BattleObject>(battleField.battleObjMgr.GetBattleObjList(tagUseSkillAttack));
highlightList.Add(caster);
-
+
// 鎶婅繖浜汢O鍏ㄩ珮浜� 鎴栬�呰鎶婇櫎浜嗚繖浜涚殑閮芥斁鍦ㄩ伄缃╁悗闈�
// YYL TODO
@@ -256,7 +229,103 @@
OnHitEachTarget(target, totalDamage, damageList, ref hurt);
}
- }
+
+ HandleDead();
+ }
+
+ protected void HandleDead()
+ {
+ var deadPackList = FindDeadPack();
+ CheckAfterDeadhPack();
+
+ // 澶勭悊鎺夎惤鍖� 鎻愬墠distribute涔嬪悗 PackManager鎵嶆湁鎺夎惤鐗� 鎵�浠ヤ笉璺焌ssignexp涓�鏍穌istribute
+ foreach (var _dropPack in dropPackList)
+ {
+ PackageRegedit.Distribute(_dropPack);
+ packList.Remove(_dropPack);
+ }
+
+ // 鑾峰彇鎺夎惤鐗╁搧
+ var dropPack = PackManager.Instance.GetSinglePack(PackType.DropItem);
+ var itemDict = dropPack.GetAllItems();
+ List<ItemModel> itemList = new List<ItemModel>(
+ from item in itemDict.Values
+ where item != null && item.isAuction
+ select item);
+
+ int deadCount = deadPackList.Count;
+
+ // 鍒嗛厤鎺夎惤鍜岀粡楠�
+ var dropAssign = AssignDrops(itemList, deadCount);
+ var expAssign = AssignExp(expPackList, deadCount);
+
+ // 鏋勯�� BattleDrops 骞跺垎閰�
+ for (int i = 0; i < deadCount; i++)
+ {
+ BattleObject deadTarget = battleField.battleObjMgr.GetBattleObject((int)deadPackList[i].ObjID);
+ List<ItemModel> itemModelDrops = dropAssign[i];
+ List<int> itemModelDropsIndexList = new List<int>(
+ from item in itemModelDrops select item.gridIndex);
+ BattleDrops battleDrops = new BattleDrops()
+ {
+ rectTransform = deadTarget.heroRectTrans,
+ dropItemPackIndex = itemModelDropsIndexList,
+ expDrops = expAssign[i]
+ };
+ deadTarget.PushDropItems(battleDrops);
+ }
+
+ // 鍒嗗彂姝讳骸鍖�
+ foreach (var deadPack in deadPackList)
+ {
+ PackageRegedit.Distribute(deadPack);
+ packList.Remove(deadPack);
+ }
+ deadPackList.Clear();
+ }
+
+
+ // 鍒嗛厤鎺夎惤
+ protected List<List<ItemModel>> AssignDrops(List<ItemModel> itemList, int deadCount)
+ {
+ var dropAssign = new List<List<ItemModel>>(deadCount);
+ for (int i = 0; i < deadCount; i++)
+ dropAssign.Add(new List<ItemModel>());
+ for (int i = 0; i < itemList.Count; i++)
+ dropAssign[i % deadCount].Add(itemList[i]);
+ return dropAssign;
+ }
+
+ // 鍒嗛厤缁忛獙锛氭瘡涓師濮嬪寘閮藉钩鍧囧垎閰嶅埌姣忎釜姝讳骸瀵硅薄
+ protected List<List<HB405_tagMCAddExp>> AssignExp(List<HB405_tagMCAddExp> expList, int deadCount)
+ {
+ var expAssign = new List<List<HB405_tagMCAddExp>>(deadCount);
+ for (int i = 0; i < deadCount; i++)
+ expAssign.Add(new List<HB405_tagMCAddExp>());
+
+ foreach (var expPack in expList)
+ {
+ long totalExp = GeneralDefine.GetFactValue(expPack.Exp, expPack.ExpPoint);
+ long avgExp = totalExp / deadCount;
+ long remain = totalExp % deadCount;
+
+ for (int i = 0; i < deadCount; i++)
+ {
+ long assignExp = avgExp + (i < remain ? 1 : 0);
+ long expPoint = assignExp / 100000000;
+ long exp = assignExp % 100000000;
+ var newPack = new HB405_tagMCAddExp
+ {
+ Exp = (uint)exp,
+ ExpPoint = (uint)expPoint,
+ Source = expPack.Source // 淇濇寔鍘熷寘鏉ユ簮
+ };
+ expAssign[i].Add(newPack);
+ }
+ packList.Remove(expPack);
+ }
+ return expAssign;
+ }
/// <summary>
/// 淇濊瘉鎵�鏈夊垎閰嶉」鍔犺捣鏉ョ瓑浜巘otalDamage锛岄伩鍏嶅洜鏁撮櫎瀵艰嚧鐨勮宸�
@@ -299,41 +368,6 @@
target.heroGo.transform
);
}
-
- // 鍙椾激涔嬪悗杈ㄥ埆姝讳骸鐘舵�� 姝讳骸鍖呭叾瀹炲墠鍚庡抚浼氬娆¤Е鍙� 搴旇瑕佸嵆鏃秗emove鍏朵粬鐨勫寘鏉ヤ繚璇佷笉閲嶅
- if (target.IsDead())
- {
- // SkillRecordAction閲岀殑drop浜嬩欢鍓嶇Щ鍒癲ead涔嬪悗
- HB422_tagMCTurnFightObjDead deadPack = FindDeadPack(target);
- CheckAfterDeadhPack(target, deadPack);
- if (deadPack != null)
- {
- // 澶勭悊鎺夎惤鍖�
- for (int i = 0; i < dropPackList.Count; i++)
- {
- PackageRegedit.Distribute(dropPackList[i]);
- }
-
- dropPackList.Clear();
-
- target.PushExpPackList(new List<HB405_tagMCAddExp>(expPackList));
-
- expPackList.Clear();
-
- // 澶勭悊姝讳骸鍖�
- PackageRegedit.Distribute(deadPack);
- packList.Remove(deadPack);
- }
-
- // 澶嶆椿鍖呮殏鏃朵笉绠� 鍙兘鏄妧鑳界殑鍖�
- // HB423_tagMCTurnFightObjReborn rebornPack = FindRebornPack(target);
- // if (rebornPack != null)
- // {
- // // 澶勭悊澶嶆椿鍖�
- // PackageRegedit.Distribute(rebornPack);
- // packList.Remove(rebornPack);
- // }
- }
}
protected HB423_tagMCTurnFightObjReborn FindRebornPack(BattleObject target)
@@ -362,20 +396,17 @@
return null;
}
- protected HB422_tagMCTurnFightObjDead FindDeadPack(BattleObject target)
+ protected List<HB422_tagMCTurnFightObjDead> FindDeadPack()
{
- HB422_tagMCTurnFightObjDead deadPack = null;
+ List<HB422_tagMCTurnFightObjDead> deadPacks = new List<HB422_tagMCTurnFightObjDead>();
for (int i = 0; i < packList.Count; i++)
{
var pack = packList[i];
// 瀵绘壘姝讳骸鍖� 鎵惧埌姝讳骸鍖呬箣鍚庤鎵炬帀钀藉寘 涓嶈兘瓒呰繃鎶�鑳藉寘
if (pack is HB422_tagMCTurnFightObjDead)
{
- deadPack = pack as HB422_tagMCTurnFightObjDead;
- if (deadPack.ObjID == target.ObjID)
- {
- return deadPack;
- }
+ var deadPack = pack as HB422_tagMCTurnFightObjDead;
+ deadPacks.Add(deadPack);
}
else if (pack is CustomHB426CombinePack)
{
@@ -387,22 +418,13 @@
}
}
}
- return null;
+ return deadPacks;
}
- protected void CheckAfterDeadhPack(BattleObject target, HB422_tagMCTurnFightObjDead deadPack)
+ protected void CheckAfterDeadhPack()
{
- if (null == deadPack)
- {
- return;
- }
- var deadPackIndex = packList.IndexOf(deadPack);
- if (deadPackIndex < 0)
- {
- return;
- }
List<int> removeIndexList = new List<int>();
- for (int i = deadPackIndex + 1; i < packList.Count; i++)
+ for (int i = 0; i < packList.Count; i++)
{
var pack = packList[i];
@@ -485,4 +507,20 @@
isFinished = true;
}
+
+
+ protected virtual void OnActiveSkillFrame()
+ {
+
+ }
+
+ protected virtual void OnStartSkillFrame()
+ {
+
+ }
+
+ protected virtual void OnEndSkillFrame()
+ {
+
+ }
}
\ No newline at end of file
diff --git a/Main/System/Battle/SkillEffect/BulletCurve/BezierBulletCurve.cs b/Main/System/Battle/SkillEffect/BulletCurve/BezierBulletCurve.cs
index 9de06db..d624c99 100644
--- a/Main/System/Battle/SkillEffect/BulletCurve/BezierBulletCurve.cs
+++ b/Main/System/Battle/SkillEffect/BulletCurve/BezierBulletCurve.cs
@@ -8,7 +8,7 @@
private Vector2 end;
private Vector2 control;
- public BezierBulletCurve(BattleObject caster, SkillConfig skillConfig, EffectPlayer effectPlayer, RectTransform target, Action<int, List<HB427_tagSCUseSkill.tagSCUseSkillHurt>> onHit)
+ public BezierBulletCurve(BattleObject caster, SkillConfig skillConfig, BattleEffectPlayer effectPlayer, RectTransform target, Action<int, List<HB427_tagSCUseSkill.tagSCUseSkillHurt>> onHit)
: base(caster, skillConfig, effectPlayer, target, onHit) { }
public override void Reset()
diff --git a/Main/System/Battle/SkillEffect/BulletCurve/BounceBulletCurve.cs b/Main/System/Battle/SkillEffect/BulletCurve/BounceBulletCurve.cs
index 7cd18f6..8b461cd 100644
--- a/Main/System/Battle/SkillEffect/BulletCurve/BounceBulletCurve.cs
+++ b/Main/System/Battle/SkillEffect/BulletCurve/BounceBulletCurve.cs
@@ -14,7 +14,7 @@
private float bounceTime = 0.2f; // 姣忔寮瑰皠鏃堕棿
private float bounceElapsed = 0f;
- public BounceBulletCurve(BattleObject caster, SkillConfig skillConfig, EffectPlayer effectPlayer,
+ public BounceBulletCurve(BattleObject caster, SkillConfig skillConfig, BattleEffectPlayer effectPlayer,
RectTransform target, HB427_tagSCUseSkill tagUseSkillAttack, Action<int, List<HB427_tagSCUseSkill.tagSCUseSkillHurt>> onHit)
: base(caster, skillConfig, effectPlayer, target, onHit)
{
diff --git a/Main/System/Battle/SkillEffect/BulletCurve/BulletCurve.cs b/Main/System/Battle/SkillEffect/BulletCurve/BulletCurve.cs
index 39a1089..7e7bf2b 100644
--- a/Main/System/Battle/SkillEffect/BulletCurve/BulletCurve.cs
+++ b/Main/System/Battle/SkillEffect/BulletCurve/BulletCurve.cs
@@ -6,7 +6,7 @@
{
protected BattleObject caster;
protected SkillConfig skillConfig;
- protected EffectPlayer bulletEffect;
+ protected BattleEffectPlayer bulletEffect;
protected RectTransform bulletTrans; // 瀛愬脊鐨凴ectTransform
protected RectTransform target;
protected Action<int, List<HB427_tagSCUseSkill.tagSCUseSkillHurt>> onHit;
@@ -17,7 +17,7 @@
public BulletCurve() { }
- public BulletCurve(BattleObject caster, SkillConfig skillConfig, EffectPlayer bulletEffect, RectTransform target, Action<int, List<HB427_tagSCUseSkill.tagSCUseSkillHurt>> onHit)
+ public BulletCurve(BattleObject caster, SkillConfig skillConfig, BattleEffectPlayer bulletEffect, RectTransform target, Action<int, List<HB427_tagSCUseSkill.tagSCUseSkillHurt>> onHit)
{
this.caster = caster;
this.skillConfig = skillConfig;
diff --git a/Main/System/Battle/SkillEffect/BulletCurve/BulletCurveFactory.cs b/Main/System/Battle/SkillEffect/BulletCurve/BulletCurveFactory.cs
index 59e2841..4dc0b0e 100644
--- a/Main/System/Battle/SkillEffect/BulletCurve/BulletCurveFactory.cs
+++ b/Main/System/Battle/SkillEffect/BulletCurve/BulletCurveFactory.cs
@@ -13,7 +13,7 @@
public static BulletCurve CreateBulletCurve(
BattleObject caster,
SkillConfig skillConfig,
- EffectPlayer bulletEffect,
+ BattleEffectPlayer bulletEffect,
RectTransform target,
HB427_tagSCUseSkill tagUseSkillAttack,
Action<int, List<HB427_tagSCUseSkill.tagSCUseSkillHurt>> onHit)
diff --git a/Main/System/Battle/SkillEffect/BulletCurve/PenetrateBulletCurve.cs b/Main/System/Battle/SkillEffect/BulletCurve/PenetrateBulletCurve.cs
index fb884bd..d05a266 100644
--- a/Main/System/Battle/SkillEffect/BulletCurve/PenetrateBulletCurve.cs
+++ b/Main/System/Battle/SkillEffect/BulletCurve/PenetrateBulletCurve.cs
@@ -9,7 +9,7 @@
private Vector2 outPos; // 灞忓箷澶栧欢闀跨偣锛堟湰鍦板潗鏍囷級
private bool hitTriggered = false; // 鏄惁宸茶Е鍙憃nHit
- public PenetrateBulletCurve(BattleObject caster, SkillConfig skillConfig, EffectPlayer effectPlayer, RectTransform target, Action<int, List<HB427_tagSCUseSkill.tagSCUseSkillHurt>> onHit)
+ public PenetrateBulletCurve(BattleObject caster, SkillConfig skillConfig, BattleEffectPlayer effectPlayer, RectTransform target, Action<int, List<HB427_tagSCUseSkill.tagSCUseSkillHurt>> onHit)
: base(caster, skillConfig, effectPlayer, target, onHit) { }
/// <summary>
diff --git a/Main/System/Battle/SkillEffect/BulletCurve/StraightBulletCurve.cs b/Main/System/Battle/SkillEffect/BulletCurve/StraightBulletCurve.cs
index 553ca14..8efd581 100644
--- a/Main/System/Battle/SkillEffect/BulletCurve/StraightBulletCurve.cs
+++ b/Main/System/Battle/SkillEffect/BulletCurve/StraightBulletCurve.cs
@@ -7,7 +7,7 @@
private Vector2 start;
private Vector2 end;
- public StraightBulletCurve(BattleObject caster, SkillConfig skillConfig, EffectPlayer bulletEffect, RectTransform target, Action<int, List<HB427_tagSCUseSkill.tagSCUseSkillHurt>> onHit)
+ public StraightBulletCurve(BattleObject caster, SkillConfig skillConfig, BattleEffectPlayer bulletEffect, RectTransform target, Action<int, List<HB427_tagSCUseSkill.tagSCUseSkillHurt>> onHit)
: base(caster, skillConfig, bulletEffect, target, onHit) { }
public override void Reset()
diff --git a/Main/System/Battle/SkillEffect/BulletSkillEffect.cs b/Main/System/Battle/SkillEffect/BulletSkillEffect.cs
index c545416..10e146f 100644
--- a/Main/System/Battle/SkillEffect/BulletSkillEffect.cs
+++ b/Main/System/Battle/SkillEffect/BulletSkillEffect.cs
@@ -79,7 +79,7 @@
protected void ShotToFormation(RectTransform target, Action<int, List<HB427_tagSCUseSkill.tagSCUseSkillHurt>> _onHit)
{
- EffectPlayer effectPlayer = caster.battleField.battleEffectMgr.PlayEffect(caster.ObjID, skillConfig.BulletEffectId, caster.effectNode);
+ BattleEffectPlayer effectPlayer = caster.battleField.battleEffectMgr.PlayEffect(caster.ObjID, skillConfig.BulletEffectId, caster.effectNode);
RectTransform effectTrans = effectPlayer.transform as RectTransform;
@@ -113,7 +113,7 @@
protected void ShotToTarget(BattleObject target, Action<int, List<HB427_tagSCUseSkill.tagSCUseSkillHurt>> _onHit)
{
- EffectPlayer effectPlayer = caster.battleField.battleEffectMgr.PlayEffect(caster.ObjID, skillConfig.BulletEffectId, caster.effectNode);
+ BattleEffectPlayer effectPlayer = caster.battleField.battleEffectMgr.PlayEffect(caster.ObjID, skillConfig.BulletEffectId, caster.effectNode);
RectTransform effectTrans = effectPlayer.transform as RectTransform;
var bulletCurve = BulletCurveFactory.CreateBulletCurve(caster, skillConfig, effectPlayer, target.heroRectTrans, tagUseSkillAttack, (index, hitList) =>
--
Gitblit v1.8.0