BattleObject.cs 1.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  1. using CommonAI.ZoneClient;
  2. using ET;
  3. using ET.Client;
  4. using ET.EventType;
  5. public class BattleObject
  6. {
  7. protected ZoneObject ZoneObject;
  8. public uint Id { get { return ZoneObject.ObjectID; } }
  9. public BattleObject() { }
  10. public virtual void OnAwake(ZoneObject zo)
  11. {
  12. ZoneObject = zo;
  13. EventSystem.Instance.Publish(CurrentScene(), new OnNewZoneObject() { Object = this });
  14. }
  15. public virtual void OnSleep()
  16. {
  17. EventSystem.Instance.Publish(CurrentScene(), new OnDestroyZoneObject() { Object = this });
  18. ObjectPool.Instance.Recycle(this);
  19. }
  20. private static Scene _CurrentSceneCache = null;
  21. public static Scene CurrentScene()
  22. {
  23. if (_CurrentSceneCache == null)
  24. {
  25. var cs = ClientSceneManagerComponent.Instance.GetChild<Scene>(UnitListComponent.Instance.DomainZone());
  26. _CurrentSceneCache = cs.GetComponent<CurrentScenesComponent>().Scene;
  27. }
  28. return _CurrentSceneCache;
  29. }
  30. [Event(SceneType.Current)]
  31. public class AfterCreateCurrentScene_Battle : AEvent<ET.EventType.AfterCreateCurrentScene>
  32. {
  33. protected override async ETTask Run(Scene scene, ET.EventType.AfterCreateCurrentScene args)
  34. {
  35. _CurrentSceneCache = null;
  36. await ETTask.CompletedTask;
  37. }
  38. }
  39. }