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);
}
}
}
}