using System; using Common.Utility.CombatEvent; using Fort23.Core; using GameLogic.Combat.Hero; using UTool.CustomizeTimeLogic.FxLogic.TimeLineEventinterface; namespace GameLogic.Combat.CombatTool { public class CombatHeroController : IDisposable { private BetterList myHero = new BetterList(); private BetterList enemyHero = new BetterList(); private BetterList myHeroHitPoint = new BetterList(); private BetterList enemyHeroHitPoint = new BetterList(); protected CombatController combatController; private BetterList heroDie = new BetterList(); private BetterList heroDispose = new BetterList(); public void Init(CombatController combatController) { this.combatController = combatController; } public void RemoveDieHero(CombatHeroEntity combatHeroEntity) { heroDie.Remove(combatHeroEntity); if (!heroDispose.Contains(combatHeroEntity)) { heroDispose.Add(combatHeroEntity); } } public void Update(float t) { for (int i = 0; i < myHero.Count; i++) { myHero[i].Update(t); } for (int i = 0; i < enemyHero.Count; i++) { enemyHero[i].Update(t); } for (int i = 0; i < heroDie.Count; i++) { heroDie[i].Update(t); } for (int i = 0; i < heroDispose.Count; i++) { heroDispose[i].Dispose(); } heroDispose.Clear(); } public void AddHeroDie(CombatHeroEntity hero) { heroDie.Add(hero); } public void AddHero(CombatHeroEntity hero) { if (hero.IsEnemy) { enemyHero.Add(hero); } else { myHero.Add(hero); } } public void RemoveHero(CombatHeroEntity hero) { if (hero.IsEnemy) { enemyHero.Remove(hero); } else { myHero.Remove(hero); } } public void AddHeroHitPoint(bool isEnemy, ILifetCycleHitPoint hitPoint) { if (isEnemy) { enemyHeroHitPoint.Add(hitPoint); } else { myHeroHitPoint.Add(hitPoint); } } public void RemoveHeroHitPoint(bool isEnemy, ILifetCycleHitPoint hitPoint) { if (isEnemy) { enemyHeroHitPoint.Remove(hitPoint); } else { myHeroHitPoint.Remove(hitPoint); } } public void Dispose() { myHero.Dispose(); enemyHero.Dispose(); } public CombatHeroEntity[] GetHero(bool isEnemy) { if (isEnemy) { return enemyHero.ToArray(); } else { return myHero.ToArray(); } } public ILifetCycleHitPoint[] GetHeroHitPoint(bool isEnemy) { if (isEnemy) { return enemyHeroHitPoint.ToArray(); } else { return myHeroHitPoint.ToArray(); } } } }