DataProviderCreator.cs 2.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677
  1. //------------------------------------------------------------
  2. // Game Framework
  3. // Copyright © 2013-2021 Jiang Yin. All rights reserved.
  4. // Homepage: https://gameframework.cn/
  5. // Feedback: mailto:ellan@gameframework.cn
  6. //------------------------------------------------------------
  7. using GameFramework.Resource;
  8. namespace GameFramework
  9. {
  10. /// <summary>
  11. /// 数据提供者创建器。
  12. /// </summary>
  13. public static class DataProviderCreator
  14. {
  15. /// <summary>
  16. /// 获取缓冲二进制流的大小。
  17. /// </summary>
  18. /// <typeparam name="T">数据提供者的持有者的类型。</typeparam>
  19. /// <returns>缓冲二进制流的大小。</returns>
  20. public static int GetCachedBytesSize<T>()
  21. {
  22. return DataProvider<T>.CachedBytesSize;
  23. }
  24. /// <summary>
  25. /// 确保二进制流缓存分配足够大小的内存并缓存。
  26. /// </summary>
  27. /// <typeparam name="T">数据提供者的持有者的类型。</typeparam>
  28. /// <param name="ensureSize">要确保二进制流缓存分配内存的大小。</param>
  29. public static void EnsureCachedBytesSize<T>(int ensureSize)
  30. {
  31. DataProvider<T>.EnsureCachedBytesSize(ensureSize);
  32. }
  33. /// <summary>
  34. /// 释放缓存的二进制流。
  35. /// </summary>
  36. /// <typeparam name="T">数据提供者的持有者的类型。</typeparam>
  37. public static void FreeCachedBytes<T>()
  38. {
  39. DataProvider<T>.FreeCachedBytes();
  40. }
  41. /// <summary>
  42. /// 创建数据提供者。
  43. /// </summary>
  44. /// <typeparam name="T">数据提供者的持有者的类型。</typeparam>
  45. /// <param name="owner">数据提供者的持有者。</param>
  46. /// <param name="resourceManager">资源管理器。</param>
  47. /// <param name="dataProviderHelper">数据提供者辅助器。</param>
  48. /// <returns>创建的数据提供者。</returns>
  49. public static IDataProvider<T> Create<T>(T owner, IResourceManager resourceManager, IDataProviderHelper<T> dataProviderHelper)
  50. {
  51. if (owner == null)
  52. {
  53. throw new GameFrameworkException("Owner is invalid.");
  54. }
  55. if (resourceManager == null)
  56. {
  57. throw new GameFrameworkException("Resource manager is invalid.");
  58. }
  59. if (dataProviderHelper == null)
  60. {
  61. throw new GameFrameworkException("Data provider helper is invalid.");
  62. }
  63. DataProvider<T> dataProvider = new DataProvider<T>(owner);
  64. dataProvider.SetResourceManager(resourceManager);
  65. dataProvider.SetDataProviderHelper(dataProviderHelper);
  66. return dataProvider;
  67. }
  68. }
  69. }