MagicWeaponControl.cs 3.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101
  1. using System.Collections.Generic;
  2. using Common.Utility.CombatEvent;
  3. using Core.Utility;
  4. using Excel2Json;
  5. using Fort23.Core;
  6. using Fort23.UTool;
  7. using GameLogic.Combat.CombatTool;
  8. using GameLogic.Hero;
  9. namespace GameLogic.Combat.Hero
  10. {
  11. /// <summary>
  12. /// 法宝的管理
  13. /// </summary>
  14. public class MagicWeaponControl
  15. {
  16. public bool isAutoUse;
  17. private BetterList<CombatMagicWeaponEntity> _allMagicWeapon = new BetterList<CombatMagicWeaponEntity>();
  18. public CombatMagicWeaponEntity[] AllMagicWeapon
  19. {
  20. get { return _allMagicWeapon.ToArray(true); }
  21. }
  22. public int MagicWeaponCount
  23. {
  24. get { return _allMagicWeapon.Count; }
  25. }
  26. // private CombatMagicWeaponEntity _currUserMagicWeapon;
  27. public CombatHeroEntity combatHeroEntity;
  28. public void AddMagicWeapon(CombatMagicWeaponEntity combatMagicWeaponEntity)
  29. {
  30. if (combatHeroEntity.isPlayer)
  31. {
  32. AddMagicWeaponHeroEntityEventData addMagicWeaponHeroEntityEventData =
  33. AddMagicWeaponHeroEntityEventData.Create();
  34. addMagicWeaponHeroEntityEventData.CombatMagicWeaponEntity = combatMagicWeaponEntity;
  35. CombatEventManager.Instance.Dispatch(CombatEventType.AddMagicWeaponHeroEntity,
  36. addMagicWeaponHeroEntityEventData);
  37. }
  38. _allMagicWeapon.Add(combatMagicWeaponEntity);
  39. }
  40. public void RemoveMagicWeapon(CombatMagicWeaponEntity combatMagicWeaponEntity)
  41. {
  42. _allMagicWeapon.Remove(combatMagicWeaponEntity);
  43. }
  44. public async CTask InitMagicWeapon(CombatHeroEntity combatHeroEntity, bool isPlayer)
  45. {
  46. isAutoUse = !isPlayer;
  47. this.combatHeroEntity = combatHeroEntity;
  48. CTaskAwaitBuffer cTaskAwaitBuffer = new CTaskAwaitBuffer();
  49. List<FaBaoInfo> MagicWeaponID = combatHeroEntity.CurrCombatHeroInfo.MagicWeaponID;
  50. for (int i = 0; i < MagicWeaponID.Count; i++)
  51. {
  52. CombatMagicWeaponEntity heroEntity = new CombatMagicWeaponEntity();
  53. heroEntity.IsEnemy = combatHeroEntity.IsEnemy;
  54. heroEntity.number = i;
  55. cTaskAwaitBuffer.AddTask(heroEntity.Init(this, MagicWeaponID[i],
  56. delegate(CombatMagicWeaponEntity entity) { AddMagicWeapon(entity); }));
  57. }
  58. await cTaskAwaitBuffer.WaitAll();
  59. cTaskAwaitBuffer.Dispose();
  60. }
  61. public void UseMagicWeapon(CombatMagicWeaponEntity combatMagicWeaponEntity)
  62. {
  63. UseMagicWeaponEventData useMagicWeaponEventData = UseMagicWeaponEventData.Create();
  64. useMagicWeaponEventData.combatHeroEntity = combatHeroEntity;
  65. useMagicWeaponEventData.combatMagicWeaponEntity = combatMagicWeaponEntity;
  66. CombatEventManager.Instance.Dispatch(CombatEventType.UseMagicWeapon, useMagicWeaponEventData);
  67. // CombatEventManager.Instance.AddEventListener(CombatEventType.UseMagicWeapon,
  68. CombatController.currActiveCombat.MagicWeaponCombatSence.AddMagicWeaponToSence(combatMagicWeaponEntity);
  69. }
  70. public void ReduceMagicCd(float cdBl)
  71. {
  72. for (int i = 0; i < _allMagicWeapon.Count; i++)
  73. {
  74. CombatMagicWeaponEntity combatMagicWeaponEntity = _allMagicWeapon[i];
  75. float v = combatMagicWeaponEntity.MaxCd * cdBl * 0.01f;
  76. combatMagicWeaponEntity.cd -= v;
  77. }
  78. }
  79. public void Update(float t)
  80. {
  81. for (int i = 0; i < _allMagicWeapon.Count; i++)
  82. {
  83. _allMagicWeapon[i].Update(t);
  84. }
  85. }
  86. }
  87. }