MagicWeaponCombatSence.cs 3.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107
  1. using System.Collections.Generic;
  2. using GameLogic.Combat.Hero;
  3. using UnityEngine;
  4. namespace GameLogic.Combat.CombatTool
  5. {
  6. /// <summary>
  7. /// 法宝战斗场景
  8. /// </summary>
  9. public class MagicWeaponCombatSence
  10. {
  11. private BetterList<CombatMagicWeaponEntity> _enemyMagicWeaponList = new BetterList<CombatMagicWeaponEntity>();
  12. private BetterList<CombatMagicWeaponEntity> _playerMagicWeaponList = new BetterList<CombatMagicWeaponEntity>();
  13. /// <summary>
  14. /// 战斗包围盒 minX miny maxx maxy
  15. /// </summary>
  16. public Vector4 combatBox;
  17. /// <summary>
  18. /// 我方法宝入场点
  19. /// </summary>
  20. public Vector3 myEnterCombatPos;
  21. /// <summary>
  22. /// 地方法宝入场点
  23. /// </summary>
  24. public Vector3 enemyEnterCombatPos;
  25. public void SetMagicWeaponCombatSence(Vector3 myHeroPos, Vector3 fangXiang)
  26. {
  27. myEnterCombatPos = myHeroPos + fangXiang * 2 + new Vector3(0, 10, 0);
  28. myEnterCombatPos = myHeroPos + fangXiang * 18 + new Vector3(0, 10, 0);
  29. }
  30. /// <summary>
  31. /// 将法宝添加导战斗场景
  32. /// </summary>
  33. /// <param name="combatMagicWeaponEntity"></param>
  34. public void AddMagicWeaponToSence(CombatMagicWeaponEntity combatMagicWeaponEntity)
  35. {
  36. if (combatMagicWeaponEntity.IsEnemy)
  37. {
  38. _enemyMagicWeaponList.Add(combatMagicWeaponEntity);
  39. }
  40. else
  41. {
  42. _playerMagicWeaponList.Add(combatMagicWeaponEntity);
  43. }
  44. combatMagicWeaponEntity.CombatAIBasic.ChangeState(CombatHeroStateType.idle);
  45. }
  46. public void Update(float t)
  47. {
  48. for (int i = 0; i < _enemyMagicWeaponList.Count; i++)
  49. {
  50. _enemyMagicWeaponList[i].Update(t);
  51. }
  52. for (int i = 0; i < _playerMagicWeaponList.Count; i++)
  53. {
  54. _playerMagicWeaponList[i].Update(t);
  55. }
  56. }
  57. public CombatMagicWeaponEntity FindCollidingTarget(CombatMagicWeaponEntity combatMagicWeaponEntity)
  58. {
  59. bool isEnemy = combatMagicWeaponEntity.IsEnemy;
  60. BetterList<CombatMagicWeaponEntity> magicWeaponList =
  61. isEnemy ? _playerMagicWeaponList : _enemyMagicWeaponList;
  62. if (magicWeaponList == null)
  63. {
  64. return null;
  65. }
  66. List<CombatMagicWeaponEntity> nullTarget = new List<CombatMagicWeaponEntity>();
  67. for (int i = 0; i < magicWeaponList.Count; i++)
  68. {
  69. if (magicWeaponList[i].CollidingTarget == combatMagicWeaponEntity)
  70. {
  71. return magicWeaponList[i];
  72. }
  73. if (magicWeaponList[i].CollidingTarget == null)
  74. {
  75. nullTarget.Add(magicWeaponList[i]);
  76. }
  77. }
  78. if (nullTarget.Count > 0)
  79. {
  80. int index = CombatCalculateTool.Instance.GetOdd(0, nullTarget.Count);
  81. return nullTarget[index];
  82. }
  83. else
  84. {
  85. int index = CombatCalculateTool.Instance.GetOdd(0, magicWeaponList.Count);
  86. return magicWeaponList[index];
  87. }
  88. }
  89. }
  90. }