LoopScrollDataSource.cs 2.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970
  1. using UnityEngine;
  2. using System.Collections;
  3. using System;
  4. using ET;
  5. namespace UnityEngine.UI
  6. {
  7. public interface LoopScrollDataSource
  8. {
  9. void ProvideData(Transform transform, int idx);
  10. }
  11. public interface IYIUILoopScrollDataSource
  12. {
  13. }
  14. public interface IYIUILoopScrollDataSourceSystem : ISystemType
  15. {
  16. void ProvideData(Entity self, Transform transform, int idx);
  17. }
  18. [EntitySystem]
  19. public abstract class YIUILoopScrollDataSourceSystem<T> : SystemObject, IYIUILoopScrollDataSourceSystem
  20. where T : Entity, IYIUILoopScrollDataSource
  21. {
  22. Type ISystemType.Type()
  23. {
  24. return typeof(T);
  25. }
  26. Type ISystemType.SystemType()
  27. {
  28. return typeof(IYIUILoopScrollDataSourceSystem);
  29. }
  30. void IYIUILoopScrollDataSourceSystem.ProvideData(Entity self, Transform transform, int idx)
  31. {
  32. ProvideData((T)self, transform, idx);
  33. }
  34. protected abstract void ProvideData(T self, Transform transform, int idx);
  35. }
  36. public static class YIUILoopScrollDataSourceExtensions
  37. {
  38. public static void ProvideData(this IYIUILoopScrollDataSource source, Transform transform, int idx)
  39. {
  40. var iEventSystems = EntitySystemSingleton.Instance.TypeSystems.GetSystems(source.GetType(), typeof(IYIUILoopScrollDataSourceSystem));
  41. if (iEventSystems is not { Count: > 0 })
  42. {
  43. Log.Error($"类:{source.GetType()} 没有具体实现的事件 IYIUILoopScrollPrefabAsyncSourceSystem 请检查");
  44. return;
  45. }
  46. foreach (IYIUILoopScrollDataSourceSystem eventSystem in iEventSystems)
  47. {
  48. try
  49. {
  50. eventSystem.ProvideData((Entity)source, transform, idx);
  51. return;
  52. }
  53. catch (Exception e)
  54. {
  55. Log.Error($"类:{source.GetType()} 事件错误: {e.Message}");
  56. return;
  57. }
  58. }
  59. }
  60. }
  61. }