Game.cs 1.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485
  1. using System.Collections.Generic;
  2. using System.Linq;
  3. using System.Text;
  4. using Model;
  5. namespace Base
  6. {
  7. public static class Game
  8. {
  9. private static HashSet<Disposer> disposers;
  10. private static EntityEventManager entityEventManager;
  11. private static Scene scene;
  12. public static Scene Scene
  13. {
  14. get
  15. {
  16. return scene ?? (scene = new Scene());
  17. }
  18. }
  19. public static HashSet<Disposer> Disposers
  20. {
  21. get
  22. {
  23. return disposers ?? (disposers = new HashSet<Disposer>());
  24. }
  25. }
  26. public static void CloseScene()
  27. {
  28. scene.Dispose();
  29. scene = null;
  30. }
  31. public static void ClearDisposers()
  32. {
  33. foreach (Disposer disposer in Disposers)
  34. {
  35. disposer.Dispose();
  36. }
  37. disposers.Clear();
  38. disposers = null;
  39. }
  40. public static EntityEventManager EntityEventManager
  41. {
  42. get
  43. {
  44. return entityEventManager ?? (entityEventManager = new EntityEventManager());
  45. }
  46. set
  47. {
  48. entityEventManager = value;
  49. }
  50. }
  51. public static string DisposerInfo()
  52. {
  53. var info = new Dictionary<string, int>();
  54. foreach (Disposer disposer in Disposers)
  55. {
  56. if (info.ContainsKey(disposer.GetType().Name))
  57. {
  58. info[disposer.GetType().Name] += 1;
  59. }
  60. else
  61. {
  62. info[disposer.GetType().Name] = 1;
  63. }
  64. }
  65. info = info.OrderByDescending(s => s.Value).ToDictionary(p => p.Key, p => p.Value);
  66. StringBuilder sb = new StringBuilder();
  67. sb.Append("\r\n");
  68. foreach (string key in info.Keys)
  69. {
  70. sb.Append($"{info[key],10} {key}\r\n");
  71. }
  72. return sb.ToString();
  73. }
  74. }
  75. }