123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107 |
- using System.Collections.Generic;
- using GameLogic.Combat.Hero;
- using UnityEngine;
- 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;
- public void SetMagicWeaponCombatSence(Vector3 myHeroPos, Vector3 fangXiang)
- {
- myEnterCombatPos = myHeroPos + fangXiang * 2 + new Vector3(0, 10, 0);
- myEnterCombatPos = 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);
- }
- else
- {
- _playerMagicWeaponList.Add(combatMagicWeaponEntity);
- }
- combatMagicWeaponEntity.CombatAIBasic.ChangeState(CombatHeroStateType.idle);
- }
- 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);
- }
- }
- public CombatMagicWeaponEntity FindCollidingTarget(CombatMagicWeaponEntity combatMagicWeaponEntity)
- {
- bool isEnemy = combatMagicWeaponEntity.IsEnemy;
- BetterList<CombatMagicWeaponEntity> magicWeaponList =
- isEnemy ? _playerMagicWeaponList : _enemyMagicWeaponList;
- if (magicWeaponList == null)
- {
- return null;
- }
- List<CombatMagicWeaponEntity> nullTarget = new List<CombatMagicWeaponEntity>();
- for (int i = 0; i < magicWeaponList.Count; i++)
- {
- if (magicWeaponList[i].CollidingTarget == combatMagicWeaponEntity)
- {
- return magicWeaponList[i];
- }
- if (magicWeaponList[i].CollidingTarget == null)
- {
- nullTarget.Add(magicWeaponList[i]);
- }
- }
- if (nullTarget.Count > 0)
- {
- int index = CombatCalculateTool.Instance.GetOdd(0, nullTarget.Count);
- return nullTarget[index];
- }
- else
- {
- int index = CombatCalculateTool.Instance.GetOdd(0, magicWeaponList.Count);
- return magicWeaponList[index];
- }
-
- }
- }
- }
|