StartSceneConfig.cs 3.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122
  1. using System.Collections.Generic;
  2. using System.ComponentModel;
  3. using System.Net;
  4. namespace ET
  5. {
  6. public partial class StartSceneConfigCategory
  7. {
  8. public MultiMap<int, StartSceneConfig> Gates = new();
  9. public MultiMap<int, StartSceneConfig> ProcessScenes = new();
  10. public Dictionary<long, Dictionary<string, StartSceneConfig>> ClientScenesByName = new();
  11. public List<StartSceneConfig> Realms = new();
  12. public List<StartSceneConfig> Routers = new();
  13. public List<StartSceneConfig> Maps = new();
  14. public List<StartSceneConfig> GetByProcess(int process)
  15. {
  16. return this.ProcessScenes[process];
  17. }
  18. public StartSceneConfig GetBySceneName(int zone, string name)
  19. {
  20. return this.ClientScenesByName[zone][name];
  21. }
  22. public override void EndInit()
  23. {
  24. foreach (StartSceneConfig startSceneConfig in this.GetAll().Values)
  25. {
  26. this.ProcessScenes.Add(startSceneConfig.Process, startSceneConfig);
  27. if (!this.ClientScenesByName.ContainsKey(startSceneConfig.Zone))
  28. {
  29. this.ClientScenesByName.Add(startSceneConfig.Zone, new Dictionary<string, StartSceneConfig>());
  30. }
  31. this.ClientScenesByName[startSceneConfig.Zone].Add(startSceneConfig.Name, startSceneConfig);
  32. switch (startSceneConfig.Type)
  33. {
  34. case SceneType.Realm:
  35. this.Realms.Add(startSceneConfig);
  36. break;
  37. case SceneType.Gate:
  38. this.Gates.Add(startSceneConfig.Zone, startSceneConfig);
  39. break;
  40. case SceneType.Router:
  41. this.Routers.Add(startSceneConfig);
  42. break;
  43. case SceneType.Map:
  44. this.Maps.Add(startSceneConfig);
  45. break;
  46. }
  47. }
  48. }
  49. }
  50. public partial class StartSceneConfig
  51. {
  52. public ActorId ActorId;
  53. public int Type;
  54. public StartProcessConfig StartProcessConfig
  55. {
  56. get
  57. {
  58. return StartProcessConfigCategory.Instance.Get(this.Process);
  59. }
  60. }
  61. public StartZoneConfig StartZoneConfig
  62. {
  63. get
  64. {
  65. return StartZoneConfigCategory.Instance.Get(this.Zone);
  66. }
  67. }
  68. // 内网地址外网端口,通过防火墙映射端口过来
  69. private IPEndPoint innerIPPort;
  70. public IPEndPoint InnerIPPort
  71. {
  72. get
  73. {
  74. if (innerIPPort == null)
  75. {
  76. this.innerIPPort = NetworkHelper.ToIPEndPoint($"{this.StartProcessConfig.InnerIP}:{this.Port}");
  77. }
  78. return this.innerIPPort;
  79. }
  80. }
  81. private IPEndPoint outerIPPort;
  82. // 外网地址外网端口
  83. public IPEndPoint OuterIPPort
  84. {
  85. get
  86. {
  87. if (this.outerIPPort == null)
  88. {
  89. this.outerIPPort = NetworkHelper.ToIPEndPoint($"{this.StartProcessConfig.OuterIP}:{this.Port}");
  90. }
  91. return this.outerIPPort;
  92. }
  93. }
  94. public override void EndInit()
  95. {
  96. this.ActorId = new ActorId(this.Process, this.Id, 1);
  97. this.Type = SceneTypeSingleton.Instance.GetSceneType(this.SceneType);
  98. }
  99. }
  100. }