using System.Collections.Generic; using Common.Utility.CombatEvent; using Core.Utility; using Excel2Json; using Fort23.Core; using Fort23.UTool; using GameLogic.Combat.CombatTool; using GameLogic.Hero; namespace GameLogic.Combat.Hero { /// /// 法宝的管理 /// public class MagicWeaponControl { public bool isAutoUse; private BetterList _allMagicWeapon = new BetterList(); // private CombatMagicWeaponEntity _currUserMagicWeapon; public CombatHeroEntity combatHeroEntity; public void AddMagicWeapon(CombatMagicWeaponEntity combatMagicWeaponEntity) { if (combatHeroEntity.isPlayer) { AddMagicWeaponHeroEntityEventData addMagicWeaponHeroEntityEventData = AddMagicWeaponHeroEntityEventData.Create(); addMagicWeaponHeroEntityEventData.CombatMagicWeaponEntity = combatMagicWeaponEntity; CombatEventManager.Instance.Dispatch(CombatEventType.AddMagicWeaponHeroEntity, addMagicWeaponHeroEntityEventData); } _allMagicWeapon.Add(combatMagicWeaponEntity); } public void RemoveMagicWeapon(CombatMagicWeaponEntity combatMagicWeaponEntity) { _allMagicWeapon.Remove(combatMagicWeaponEntity); } public async CTask InitMagicWeapon(CombatHeroEntity combatHeroEntity, bool isPlayer) { isAutoUse = !isPlayer; this.combatHeroEntity = combatHeroEntity; CTaskAwaitBuffer cTaskAwaitBuffer = new CTaskAwaitBuffer(); List MagicWeaponID = combatHeroEntity.CurrCombatHeroInfo.MagicWeaponID; for (int i = 0; i < MagicWeaponID.Count; i++) { CombatMagicWeaponEntity heroEntity = new CombatMagicWeaponEntity(); heroEntity.IsEnemy = combatHeroEntity.IsEnemy; heroEntity.number = i; cTaskAwaitBuffer.AddTask(heroEntity.Init(this, MagicWeaponID[i], delegate(CombatMagicWeaponEntity entity) { AddMagicWeapon(entity); })); } } public void UseMagicWeapon(CombatMagicWeaponEntity combatMagicWeaponEntity) { CombatController.currActiveCombat.MagicWeaponCombatSence.AddMagicWeaponToSence(combatMagicWeaponEntity); } public void ReduceMagicCd(float cdBl) { for (int i = 0; i < _allMagicWeapon.Count; i++) { CombatMagicWeaponEntity combatMagicWeaponEntity = _allMagicWeapon[i]; float v = combatMagicWeaponEntity.MaxCd * cdBl * 0.01f; combatMagicWeaponEntity.cd -= v; } } public void Update(float t) { for (int i = 0; i < _allMagicWeapon.Count; i++) { _allMagicWeapon[i].Update(t); } } } }