Controller.cs 6.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191
  1. using UnityEngine.Events;
  2. namespace WS
  3. {
  4. ///<summary>Controller 基类</summary>
  5. public abstract class BaseController : WSComponent
  6. {
  7. ///<summary>打开UI</summary>
  8. public abstract void OpenView();
  9. ///<summary>打开UI</summary>
  10. ///<param name="opencallback">回调</param>
  11. public abstract void OpenView(UnityAction opencallback);
  12. /// <summary>打开UI</summary>
  13. /// <param name="clone">克隆体名称</param>
  14. public abstract void OpenView(string clone);
  15. /// <summary>打开UI</summary>
  16. /// <param name="clone">克隆体名称</param>
  17. ///<param name="opencallback">回调</param>
  18. public abstract void OpenView(string clone, UnityAction opencallback);
  19. /// <summary>打开UI</summary>
  20. /// <param name="showmode">显示Canvas类型</param>
  21. public abstract void OpenView(ViewShowModeType showmode);
  22. /// <summary>打开UI</summary>
  23. /// <param name="showmode">显示Canvas类型</param>
  24. /// <param name="clone">克隆体名称</param>
  25. public abstract void OpenView(ViewShowModeType showmode, string clone);
  26. /// <summary>打开UI</summary>
  27. /// <param name="showmode">显示Canvas类型</param>
  28. /// <param name="clone">克隆体名称</param>
  29. ///<param name="opencallback">回调</param>
  30. public abstract void OpenView(ViewShowModeType showmode, string clone, UnityAction opencallback);
  31. /// <summary>关闭UI</summary>
  32. public abstract void CloseView(UnityAction closecallback = null, bool isDispose = true);
  33. }
  34. ///<summary>控制器-View</summary>
  35. public class Controller<V> : BaseController where V : View
  36. {
  37. ///<summary>视图</summary>
  38. protected V _View;
  39. ///<summary>打开UI</summary>
  40. public override void OpenView()
  41. {
  42. _View = FacadeComponent.Instance.OpenView<V>();
  43. }
  44. ///<summary>打开UI</summary>
  45. ///<param name="opencallback">回调</param>
  46. public override void OpenView(UnityAction opencallback)
  47. {
  48. _View = FacadeComponent.Instance.OpenView<V>(opencallback);
  49. }
  50. /// <summary>打开UI</summary>
  51. /// <param name="clone">克隆体名称</param>
  52. public override void OpenView(string clone)
  53. {
  54. _View = FacadeComponent.Instance.OpenView<V>(clone);
  55. }
  56. /// <summary>打开UI</summary>
  57. /// <param name="clone">克隆体名称</param>
  58. ///<param name="opencallback">回调</param>
  59. public override void OpenView(string clone, UnityAction opencallback)
  60. {
  61. _View = FacadeComponent.Instance.OpenView<V>(clone, opencallback);
  62. }
  63. /// <summary>打开UI</summary>
  64. /// <param name="showmode">显示Canvas类型</param>
  65. public override void OpenView(ViewShowModeType showmode)
  66. {
  67. _View = FacadeComponent.Instance.OpenView<V>(showmode);
  68. }
  69. /// <summary>打开UI</summary>
  70. /// <param name="showmode">显示Canvas类型</param>
  71. /// <param name="clone">克隆体名称</param>
  72. public override void OpenView(ViewShowModeType showmode, string clone)
  73. {
  74. _View = FacadeComponent.Instance.OpenView<V>(showmode, clone);
  75. }
  76. /// <summary>打开UI</summary>
  77. /// <param name="showmode">显示Canvas类型</param>
  78. /// <param name="clone">克隆体名称</param>
  79. ///<param name="opencallback">回调</param>
  80. public override void OpenView(ViewShowModeType showmode, string clone, UnityAction opencallback)
  81. {
  82. _View = FacadeComponent.Instance.OpenView<V>(showmode, clone, opencallback);
  83. }
  84. /// <summary>关闭UI</summary>
  85. public override void CloseView(UnityAction closecallback = null, bool isDispose = true)
  86. {
  87. FacadeComponent.Instance.CloseView(_View, closecallback);
  88. _View = null;
  89. if (isDispose)
  90. {
  91. FacadeComponent.Instance.RemoveController(this);
  92. }
  93. }
  94. public override void Dispose()
  95. {
  96. base.Dispose();
  97. if (_View != null)
  98. {
  99. if (_View.ShowType == ViewShowType.Open)
  100. {
  101. CloseView();
  102. }
  103. _View = null;
  104. }
  105. }
  106. }
  107. ///<summary>控制器-View & Model</summary>
  108. public abstract class Controller<V, M> : Controller<V> where V : View where M : Model
  109. {
  110. ///<summary>数据</summary>
  111. protected M _Model;
  112. ///<summary>绑定View&Model</summary>
  113. protected abstract void BindingViewModel();
  114. public override void OpenView()
  115. {
  116. base.OpenView();
  117. CreateModel();
  118. }
  119. public override void OpenView(string clone)
  120. {
  121. base.OpenView(clone);
  122. CreateModel();
  123. }
  124. public override void OpenView(UnityAction opencallback = null)
  125. {
  126. base.OpenView(opencallback);
  127. CreateModel();
  128. }
  129. public override void OpenView(string clone, UnityAction opencallback = null)
  130. {
  131. base.OpenView(clone, opencallback);
  132. CreateModel();
  133. }
  134. public override void OpenView(ViewShowModeType showmode)
  135. {
  136. base.OpenView(showmode);
  137. CreateModel();
  138. }
  139. public override void OpenView(ViewShowModeType showmode, string clone)
  140. {
  141. base.OpenView(showmode, clone);
  142. CreateModel();
  143. }
  144. public override void OpenView(ViewShowModeType showmode, string clone, UnityAction opencallback)
  145. {
  146. base.OpenView(showmode, clone, opencallback);
  147. CreateModel();
  148. }
  149. ///<summary>创造Model</summary>
  150. private void CreateModel()
  151. {
  152. _Model = FacadeComponent.Instance.CreateModel<M>();
  153. BindingViewModel();
  154. }
  155. public override void Dispose()
  156. {
  157. base.Dispose();
  158. FacadeComponent.Instance.RemoveModel(_Model);
  159. _Model = null;
  160. }
  161. }
  162. }