using System.Collections; using System.Threading.Tasks; using Cysharp.Threading.Tasks; using Framework; using Gameplay.Character; using Gameplay.Common; namespace Gameplay.Level { public partial class Level { private void RegisterAllEvent() { EventManager.Instance.Register(EventManager.EventName.INFIGHT_UNIT_DEAD, _OnUnitDead); EventManager.Instance.Register(EventManager.EventName.INFIGHT_UNIT_REMOVE, _OnUnitRemove); EventManager.Instance.Register(EventManager.EventName.LevelUnitBorn, _OnUnitBorn); } private void UnRegisterAllEvent() { EventManager.Instance.Unregister(EventManager.EventName.LevelUnitBorn, _OnUnitBorn); EventManager.Instance.Unregister(EventManager.EventName.INFIGHT_UNIT_REMOVE, _OnUnitRemove); EventManager.Instance.Unregister(EventManager.EventName.INFIGHT_UNIT_DEAD, _OnUnitDead); } private void _OnUnitDead(GameUnit unit) { var level = LevelManager.Instance.CurrentLevel; if (level == null) return; if (level.selectUnit == unit) { level.UnSelectUnit(); } } private void _OnUnitRemove(GameUnit unit) { switch (unit.gameunitType) { case EGameUnitType.Character: OnCharacterDeadRemove(unit as Character.Character); break; } } private void OnCharacterDeadRemove(Character.Character character) { StarGoalOnCharacterDeadRemove(character); } private void _OnUnitBorn(GameUnit unit) { if (unit.gameunitType == EGameUnitType.Character) { OnCharacterBorn(unit as Character.Character); } } private void OnCharacterBorn(Character.Character character) { StarGoalOnCharacterBorn(character); } } }