IUIManager.cs 14 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382
  1. //------------------------------------------------------------
  2. // Game Framework
  3. // Copyright © 2013-2021 loyalsoft. All rights reserved.
  4. // Homepage: http://www.game7000.com/
  5. // Feedback: http://www.game7000.com/
  6. //------------------------------------------------------------
  7. using GameFramework.ObjectPool;
  8. using GameFramework.Resource;
  9. using System;
  10. using System.Collections.Generic;
  11. namespace GameFramework.UI
  12. {
  13. /// <summary>
  14. /// 界面管理器接口。
  15. /// </summary>
  16. public interface IUIManager
  17. {
  18. /// <summary>
  19. /// 获取界面组数量。
  20. /// </summary>
  21. int UIGroupCount
  22. {
  23. get;
  24. }
  25. /// <summary>
  26. /// 获取或设置界面实例对象池自动释放可释放对象的间隔秒数。
  27. /// </summary>
  28. float InstanceAutoReleaseInterval
  29. {
  30. get;
  31. set;
  32. }
  33. /// <summary>
  34. /// 获取或设置界面实例对象池的容量。
  35. /// </summary>
  36. int InstanceCapacity
  37. {
  38. get;
  39. set;
  40. }
  41. /// <summary>
  42. /// 获取或设置界面实例对象池对象过期秒数。
  43. /// </summary>
  44. float InstanceExpireTime
  45. {
  46. get;
  47. set;
  48. }
  49. /// <summary>
  50. /// 获取或设置界面实例对象池的优先级。
  51. /// </summary>
  52. int InstancePriority
  53. {
  54. get;
  55. set;
  56. }
  57. /// <summary>
  58. /// 打开界面成功事件。
  59. /// </summary>
  60. event EventHandler<OpenUIFormSuccessEventArgs> OpenUIFormSuccess;
  61. /// <summary>
  62. /// 打开界面失败事件。
  63. /// </summary>
  64. event EventHandler<OpenUIFormFailureEventArgs> OpenUIFormFailure;
  65. /// <summary>
  66. /// 打开界面更新事件。
  67. /// </summary>
  68. event EventHandler<OpenUIFormUpdateEventArgs> OpenUIFormUpdate;
  69. /// <summary>
  70. /// 打开界面时加载依赖资源事件。
  71. /// </summary>
  72. event EventHandler<OpenUIFormDependencyAssetEventArgs> OpenUIFormDependencyAsset;
  73. /// <summary>
  74. /// 关闭界面完成事件。
  75. /// </summary>
  76. event EventHandler<CloseUIFormCompleteEventArgs> CloseUIFormComplete;
  77. /// <summary>
  78. /// 设置对象池管理器。
  79. /// </summary>
  80. /// <param name="objectPoolManager">对象池管理器。</param>
  81. void SetObjectPoolManager(IObjectPoolManager objectPoolManager);
  82. /// <summary>
  83. /// 设置资源管理器。
  84. /// </summary>
  85. /// <param name="resourceManager">资源管理器。</param>
  86. void SetResourceManager(IResourceManager resourceManager);
  87. /// <summary>
  88. /// 设置界面辅助器。
  89. /// </summary>
  90. /// <param name="uiFormHelper">界面辅助器。</param>
  91. void SetUIFormHelper(IUIFormHelper uiFormHelper);
  92. /// <summary>
  93. /// 是否存在界面组。
  94. /// </summary>
  95. /// <param name="uiGroupName">界面组名称。</param>
  96. /// <returns>是否存在界面组。</returns>
  97. bool HasUIGroup(string uiGroupName);
  98. /// <summary>
  99. /// 获取界面组。
  100. /// </summary>
  101. /// <param name="uiGroupName">界面组名称。</param>
  102. /// <returns>要获取的界面组。</returns>
  103. IUIGroup GetUIGroup(string uiGroupName);
  104. /// <summary>
  105. /// 获取所有界面组。
  106. /// </summary>
  107. /// <returns>所有界面组。</returns>
  108. IUIGroup[] GetAllUIGroups();
  109. /// <summary>
  110. /// 获取所有界面组。
  111. /// </summary>
  112. /// <param name="results">所有界面组。</param>
  113. void GetAllUIGroups(List<IUIGroup> results);
  114. /// <summary>
  115. /// 增加界面组。
  116. /// </summary>
  117. /// <param name="uiGroupName">界面组名称。</param>
  118. /// <param name="uiGroupHelper">界面组辅助器。</param>
  119. /// <returns>是否增加界面组成功。</returns>
  120. bool AddUIGroup(string uiGroupName, IUIGroupHelper uiGroupHelper);
  121. /// <summary>
  122. /// 增加界面组。
  123. /// </summary>
  124. /// <param name="uiGroupName">界面组名称。</param>
  125. /// <param name="uiGroupDepth">界面组深度。</param>
  126. /// <param name="uiGroupHelper">界面组辅助器。</param>
  127. /// <returns>是否增加界面组成功。</returns>
  128. bool AddUIGroup(string uiGroupName, int uiGroupDepth, IUIGroupHelper uiGroupHelper);
  129. /// <summary>
  130. /// 是否存在界面。
  131. /// </summary>
  132. /// <param name="serialId">界面序列编号。</param>
  133. /// <returns>是否存在界面。</returns>
  134. bool HasUIForm(int serialId);
  135. /// <summary>
  136. /// 是否存在界面。
  137. /// </summary>
  138. /// <param name="uiFormAssetName">界面资源名称。</param>
  139. /// <returns>是否存在界面。</returns>
  140. bool HasUIForm(string uiFormAssetName);
  141. /// <summary>
  142. /// 获取界面。
  143. /// </summary>
  144. /// <param name="serialId">界面序列编号。</param>
  145. /// <returns>要获取的界面。</returns>
  146. IUIForm GetUIForm(int serialId);
  147. /// <summary>
  148. /// 获取界面。
  149. /// </summary>
  150. /// <param name="uiFormAssetName">界面资源名称。</param>
  151. /// <returns>要获取的界面。</returns>
  152. IUIForm GetUIForm(string uiFormAssetName);
  153. /// <summary>
  154. /// 获取界面。
  155. /// </summary>
  156. /// <param name="uiFormAssetName">界面资源名称。</param>
  157. /// <returns>要获取的界面。</returns>
  158. IUIForm[] GetUIForms(string uiFormAssetName);
  159. /// <summary>
  160. /// 获取界面。
  161. /// </summary>
  162. /// <param name="uiFormAssetName">界面资源名称。</param>
  163. /// <param name="results">要获取的界面。</param>
  164. void GetUIForms(string uiFormAssetName, List<IUIForm> results);
  165. /// <summary>
  166. /// 获取所有已加载的界面。
  167. /// </summary>
  168. /// <returns>所有已加载的界面。</returns>
  169. IUIForm[] GetAllLoadedUIForms();
  170. /// <summary>
  171. /// 获取所有已加载的界面。
  172. /// </summary>
  173. /// <param name="results">所有已加载的界面。</param>
  174. void GetAllLoadedUIForms(List<IUIForm> results);
  175. /// <summary>
  176. /// 获取所有正在加载界面的序列编号。
  177. /// </summary>
  178. /// <returns>所有正在加载界面的序列编号。</returns>
  179. int[] GetAllLoadingUIFormSerialIds();
  180. /// <summary>
  181. /// 获取所有正在加载界面的序列编号。
  182. /// </summary>
  183. /// <param name="results">所有正在加载界面的序列编号。</param>
  184. void GetAllLoadingUIFormSerialIds(List<int> results);
  185. /// <summary>
  186. /// 是否正在加载界面。
  187. /// </summary>
  188. /// <param name="serialId">界面序列编号。</param>
  189. /// <returns>是否正在加载界面。</returns>
  190. bool IsLoadingUIForm(int serialId);
  191. /// <summary>
  192. /// 是否正在加载界面。
  193. /// </summary>
  194. /// <param name="uiFormAssetName">界面资源名称。</param>
  195. /// <returns>是否正在加载界面。</returns>
  196. bool IsLoadingUIForm(string uiFormAssetName);
  197. /// <summary>
  198. /// 是否是合法的界面。
  199. /// </summary>
  200. /// <param name="uiForm">界面。</param>
  201. /// <returns>界面是否合法。</returns>
  202. bool IsValidUIForm(IUIForm uiForm);
  203. /// <summary>
  204. /// 打开界面。
  205. /// </summary>
  206. /// <param name="uiFormAssetName">界面资源名称。</param>
  207. /// <param name="uiGroupName">界面组名称。</param>
  208. /// <returns>界面的序列编号。</returns>
  209. int OpenUIForm(string uiFormAssetName, string uiGroupName);
  210. /// <summary>
  211. /// 打开界面。
  212. /// </summary>
  213. /// <param name="uiFormAssetName">界面资源名称。</param>
  214. /// <param name="uiGroupName">界面组名称。</param>
  215. /// <param name="priority">加载界面资源的优先级。</param>
  216. /// <returns>界面的序列编号。</returns>
  217. int OpenUIForm(string uiFormAssetName, string uiGroupName, int priority);
  218. /// <summary>
  219. /// 打开界面。
  220. /// </summary>
  221. /// <param name="uiFormAssetName">界面资源名称。</param>
  222. /// <param name="uiGroupName">界面组名称。</param>
  223. /// <param name="pauseCoveredUIForm">是否暂停被覆盖的界面。</param>
  224. /// <returns>界面的序列编号。</returns>
  225. int OpenUIForm(string uiFormAssetName, string uiGroupName, bool pauseCoveredUIForm);
  226. /// <summary>
  227. /// 打开界面。
  228. /// </summary>
  229. /// <param name="uiFormAssetName">界面资源名称。</param>
  230. /// <param name="uiGroupName">界面组名称。</param>
  231. /// <param name="userData">用户自定义数据。</param>
  232. /// <returns>界面的序列编号。</returns>
  233. int OpenUIForm(string uiFormAssetName, string uiGroupName, object userData);
  234. /// <summary>
  235. /// 打开界面。
  236. /// </summary>
  237. /// <param name="uiFormAssetName">界面资源名称。</param>
  238. /// <param name="uiGroupName">界面组名称。</param>
  239. /// <param name="priority">加载界面资源的优先级。</param>
  240. /// <param name="pauseCoveredUIForm">是否暂停被覆盖的界面。</param>
  241. /// <returns>界面的序列编号。</returns>
  242. int OpenUIForm(string uiFormAssetName, string uiGroupName, int priority, bool pauseCoveredUIForm);
  243. /// <summary>
  244. /// 打开界面。
  245. /// </summary>
  246. /// <param name="uiFormAssetName">界面资源名称。</param>
  247. /// <param name="uiGroupName">界面组名称。</param>
  248. /// <param name="priority">加载界面资源的优先级。</param>
  249. /// <param name="userData">用户自定义数据。</param>
  250. /// <returns>界面的序列编号。</returns>
  251. int OpenUIForm(string uiFormAssetName, string uiGroupName, int priority, object userData);
  252. /// <summary>
  253. /// 打开界面。
  254. /// </summary>
  255. /// <param name="uiFormAssetName">界面资源名称。</param>
  256. /// <param name="uiGroupName">界面组名称。</param>
  257. /// <param name="pauseCoveredUIForm">是否暂停被覆盖的界面。</param>
  258. /// <param name="userData">用户自定义数据。</param>
  259. /// <returns>界面的序列编号。</returns>
  260. int OpenUIForm(string uiFormAssetName, string uiGroupName, bool pauseCoveredUIForm, object userData);
  261. /// <summary>
  262. /// 打开界面。
  263. /// </summary>
  264. /// <param name="uiFormAssetName">界面资源名称。</param>
  265. /// <param name="uiGroupName">界面组名称。</param>
  266. /// <param name="priority">加载界面资源的优先级。</param>
  267. /// <param name="pauseCoveredUIForm">是否暂停被覆盖的界面。</param>
  268. /// <param name="userData">用户自定义数据。</param>
  269. /// <returns>界面的序列编号。</returns>
  270. int OpenUIForm(string uiFormAssetName, string uiGroupName, int priority, bool pauseCoveredUIForm, object userData);
  271. /// <summary>
  272. /// 关闭界面。
  273. /// </summary>
  274. /// <param name="serialId">要关闭界面的序列编号。</param>
  275. void CloseUIForm(int serialId);
  276. /// <summary>
  277. /// 关闭界面。
  278. /// </summary>
  279. /// <param name="serialId">要关闭界面的序列编号。</param>
  280. /// <param name="userData">用户自定义数据。</param>
  281. void CloseUIForm(int serialId, object userData);
  282. /// <summary>
  283. /// 关闭界面。
  284. /// </summary>
  285. /// <param name="uiForm">要关闭的界面。</param>
  286. void CloseUIForm(IUIForm uiForm);
  287. /// <summary>
  288. /// 关闭界面。
  289. /// </summary>
  290. /// <param name="uiForm">要关闭的界面。</param>
  291. /// <param name="userData">用户自定义数据。</param>
  292. void CloseUIForm(IUIForm uiForm, object userData);
  293. /// <summary>
  294. /// 关闭所有已加载的界面。
  295. /// </summary>
  296. void CloseAllLoadedUIForms();
  297. /// <summary>
  298. /// 关闭所有已加载的界面。
  299. /// </summary>
  300. /// <param name="userData">用户自定义数据。</param>
  301. void CloseAllLoadedUIForms(object userData);
  302. /// <summary>
  303. /// 关闭所有正在加载的界面。
  304. /// </summary>
  305. void CloseAllLoadingUIForms();
  306. /// <summary>
  307. /// 激活界面。
  308. /// </summary>
  309. /// <param name="uiForm">要激活的界面。</param>
  310. void RefocusUIForm(IUIForm uiForm);
  311. /// <summary>
  312. /// 激活界面。
  313. /// </summary>
  314. /// <param name="uiForm">要激活的界面。</param>
  315. /// <param name="userData">用户自定义数据。</param>
  316. void RefocusUIForm(IUIForm uiForm, object userData);
  317. /// <summary>
  318. /// 设置界面实例是否被加锁。
  319. /// </summary>
  320. /// <param name="uiFormInstance">要设置是否被加锁的界面实例。</param>
  321. /// <param name="locked">界面实例是否被加锁。</param>
  322. void SetUIFormInstanceLocked(object uiFormInstance, bool locked);
  323. /// <summary>
  324. /// 设置界面实例的优先级。
  325. /// </summary>
  326. /// <param name="uiFormInstance">要设置优先级的界面实例。</param>
  327. /// <param name="priority">界面实例优先级。</param>
  328. void SetUIFormInstancePriority(object uiFormInstance, int priority);
  329. }
  330. }