MagicWeaponControl.cs 3.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596
  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. CombatController.currActiveCombat.MagicWeaponCombatSence.AddMagicWeaponToSence(combatMagicWeaponEntity);
  64. }
  65. public void ReduceMagicCd(float cdBl)
  66. {
  67. for (int i = 0; i < _allMagicWeapon.Count; i++)
  68. {
  69. CombatMagicWeaponEntity combatMagicWeaponEntity = _allMagicWeapon[i];
  70. float v = combatMagicWeaponEntity.MaxCd * cdBl * 0.01f;
  71. combatMagicWeaponEntity.cd -= v;
  72. }
  73. }
  74. public void Update(float t)
  75. {
  76. for (int i = 0; i < _allMagicWeapon.Count; i++)
  77. {
  78. _allMagicWeapon[i].Update(t);
  79. }
  80. }
  81. }
  82. }