| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206 | 
							- using System.Collections.Generic;
 
- using Common.Utility.CombatEvent;
 
- using Fort23.Core;
 
- using GameLogic.Combat.Hero;
 
- using GameLogic.Combat.Hero.State;
 
- using UnityEngine;
 
- using Utility;
 
- namespace GameLogic.Combat.CombatTool
 
- {
 
-     /// <summary>
 
-     /// 法宝战斗场景
 
-     /// </summary>
 
-     public class MagicWeaponCombatSence
 
-     {
 
-         private BetterList<CombatMagicWeaponEntity> _enemyMagicWeaponList = new BetterList<CombatMagicWeaponEntity>();
 
-         private BetterList<CombatMagicWeaponEntity> _playerMagicWeaponList = new BetterList<CombatMagicWeaponEntity>();
 
-         /// <summary>
 
-         /// 战斗包围盒 minX miny maxx maxy
 
-         /// </summary>
 
-         public Vector4 combatBox;
 
-         /// <summary>
 
-         /// 我方法宝入场点
 
-         /// </summary>
 
-         public Vector3 myEnterCombatPos;
 
-         /// <summary>
 
-         /// 地方法宝入场点
 
-         /// </summary>
 
-         public Vector3 enemyEnterCombatPos;
 
-         private Map<int, MagicWeaponCollisionInfo> magicWeaponCollisionInfoList =
 
-             new Map<int, MagicWeaponCollisionInfo>();
 
-         private int MagicWeaponCollisionID;
 
-         public void CloseSecene()
 
-         {
 
-             for (magicWeaponCollisionInfoList.Begin(); magicWeaponCollisionInfoList.Next();)
 
-             {
 
-                 magicWeaponCollisionInfoList.Value.Dispose();
 
-             }
 
-             magicWeaponCollisionInfoList.Clear();
 
-             for (int i = 0; i < _enemyMagicWeaponList.Count; i++)
 
-             {
 
-                 _enemyMagicWeaponList[i].CombatAIBasic.ChangeState(CombatHeroStateType.XiuMian);
 
-             }
 
-             for (int i = 0; i < _playerMagicWeaponList.Count; i++)
 
-             {
 
-                 _playerMagicWeaponList[i].CombatAIBasic.ChangeState(CombatHeroStateType.XiuMian);
 
-             }
 
-             _playerMagicWeaponList.Clear();
 
-             _enemyMagicWeaponList.Clear();
 
-         }
 
-         public void Init()
 
-         {
 
-             CombatEventManager.Instance.AddEventListener(CombatEventType.MagicWeaponDie, MagicWeaponDie);
 
-         }
 
-         private void MagicWeaponDie(IEventData iEventData)
 
-         {
 
-             HeroDieEventData heroDieEventData = iEventData as HeroDieEventData;
 
-             CombatMagicWeaponEntity combatMagicWeaponEntity =
 
-                 heroDieEventData.combatHeroEntity as CombatMagicWeaponEntity;
 
-             _enemyMagicWeaponList.Remove(combatMagicWeaponEntity);
 
-             _playerMagicWeaponList.Remove(combatMagicWeaponEntity);
 
-             RemoveCollisionMagicWeapon(combatMagicWeaponEntity.MagicWeaponCollisionId);
 
-         }
 
-         public void SetMagicWeaponCombatSence(Vector3 myHeroPos, Vector3 fangXiang)
 
-         {
 
-             myEnterCombatPos = myHeroPos + fangXiang * 2 + new Vector3(0, 10, 0);
 
-             enemyEnterCombatPos = myHeroPos + fangXiang * 18 + new Vector3(0, 10, 0);
 
-         }
 
-         /// <summary>
 
-         /// 将法宝添加导战斗场景
 
-         /// </summary>
 
-         /// <param name="combatMagicWeaponEntity"></param>
 
-         public void AddMagicWeaponToSence(CombatMagicWeaponEntity combatMagicWeaponEntity)
 
-         {
 
-             if (combatMagicWeaponEntity.IsEnemy)
 
-             {
 
-                 _enemyMagicWeaponList.Add(combatMagicWeaponEntity);
 
-                 combatMagicWeaponEntity.useIndex = _enemyMagicWeaponList.Count;
 
-             }
 
-             else
 
-             {
 
-                 _playerMagicWeaponList.Add(combatMagicWeaponEntity);
 
-                 combatMagicWeaponEntity.useIndex = _playerMagicWeaponList.Count;
 
-             }
 
-             FindCollidingTarget(combatMagicWeaponEntity);
 
-             combatMagicWeaponEntity.CombatAIBasic.ChangeState(CombatHeroStateType.Active);
 
-         }
 
-         public void TriggerMagicWeapon(CombatMagicWeaponEntity a, CombatMagicWeaponEntity b)
 
-         {
 
-         }
 
-         public void Update(float t)
 
-         {
 
-             // for (int i = 0; i < _enemyMagicWeaponList.Count; i++)
 
-             // {
 
-             //     _enemyMagicWeaponList[i].Update(t);
 
-             // }
 
-             //
 
-             // for (int i = 0; i < _playerMagicWeaponList.Count; i++)
 
-             // {
 
-             //     _playerMagicWeaponList[i].Update(t);
 
-             // }
 
-             for (magicWeaponCollisionInfoList.Begin(); magicWeaponCollisionInfoList.Next();)
 
-             {
 
-                 magicWeaponCollisionInfoList.Value.Update(t);
 
-             }
 
-         }
 
-         public MagicWeaponCollisionInfo FindMagicWeaponCollisionInfo(int id)
 
-         {
 
-             if (magicWeaponCollisionInfoList.TryGetValue(id, out var info))
 
-             {
 
-                 return info;
 
-             }
 
-             return null;
 
-         }
 
-         private void FindCollidingTarget(CombatMagicWeaponEntity combatMagicWeaponEntity)
 
-         {
 
-             if (combatMagicWeaponEntity.isMagicWeaponTreasureBook)
 
-             {
 
-                 return;
 
-             }
 
-             bool isEnemy = combatMagicWeaponEntity.IsEnemy;
 
-             BetterList<CombatMagicWeaponEntity> magicWeaponList =
 
-                 isEnemy ? _playerMagicWeaponList : _enemyMagicWeaponList;
 
-             if (magicWeaponList == null)
 
-             {
 
-                 return;
 
-             }
 
-             List<CombatMagicWeaponEntity> nullTarget = new List<CombatMagicWeaponEntity>();
 
-             for (int i = 0; i < magicWeaponList.Count; i++)
 
-             {
 
-                 if (magicWeaponList[i].CombatAIBasic.stateControl.CurrStateName != CombatHeroStateType.idle &&
 
-                     magicWeaponList[i].CombatAIBasic.stateControl.CurrStateName != CombatHeroStateType.Active)
 
-                 {
 
-                     continue;
 
-                 }
 
-                 // if (magicWeaponList[i].CollidingTarget == combatMagicWeaponEntity)
 
-                 // {
 
-                 //     return magicWeaponList[i];
 
-                 // }
 
-                 if (magicWeaponList[i].isMagicWeaponTreasureBook)
 
-                 {
 
-                     continue;
 
-                 }
 
-                 if (magicWeaponList[i].MagicWeaponCollisionId < 0)
 
-                 {
 
-                     nullTarget.Add(magicWeaponList[i]);
 
-                 }
 
-             }
 
-             if (nullTarget.Count > 0)
 
-             {
 
-                 int index = CombatCalculateTool.Instance.GetOdd(0, nullTarget.Count);
 
-                 CombatMagicWeaponEntity target = nullTarget[index];
 
-                 MagicWeaponCollisionInfo magicWeaponCollisionInfo =
 
-                     CObjectPool.Instance.Fetch<MagicWeaponCollisionInfo>();
 
-                 magicWeaponCollisionInfo.Init(combatMagicWeaponEntity, target, MagicWeaponCollisionID);
 
-                 magicWeaponCollisionInfoList.Add(MagicWeaponCollisionID, magicWeaponCollisionInfo);
 
-                 MagicWeaponCollisionID++;
 
-             }
 
-             return;
 
-         }
 
-         public void RemoveCollisionMagicWeapon(int id)
 
-         {
 
-             magicWeaponCollisionInfoList.Remove(id, out var collisionInfo);
 
-             if (collisionInfo != null)
 
-             {
 
-                 collisionInfo.Finish();
 
-                 CObjectPool.Instance.Recycle(collisionInfo);
 
-             }
 
-         }
 
-         public void RemoveCollisionMagicWeapon(MagicWeaponCollisionInfo collisionInfo)
 
-         {
 
-             magicWeaponCollisionInfoList.Remove(collisionInfo.id);
 
-             collisionInfo.Finish();
 
-             CObjectPool.Instance.Recycle(collisionInfo);
 
-         }
 
-     }
 
- }
 
 
  |