123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133 |
- using System.Collections.Generic;
- using System.ComponentModel;
- using System.Net;
- namespace ET
- {
- public partial class StartSceneConfigCategory
- {
- public MultiMap<int, StartSceneConfig> Gates = new MultiMap<int, StartSceneConfig>();
-
- public MultiMap<int, StartSceneConfig> ProcessScenes = new MultiMap<int, StartSceneConfig>();
-
- public Dictionary<long, Dictionary<string, StartSceneConfig>> ClientScenesByName = new Dictionary<long, Dictionary<string, StartSceneConfig>>();
- public StartSceneConfig LocationConfig;
- public List<StartSceneConfig> Realms = new List<StartSceneConfig>();
-
- public List<StartSceneConfig> Routers = new List<StartSceneConfig>();
-
- public List<StartSceneConfig> Robots = new List<StartSceneConfig>();
- public StartSceneConfig BenchmarkServer;
-
- public List<StartSceneConfig> GetByProcess(int process)
- {
- return this.ProcessScenes[process];
- }
-
- public StartSceneConfig GetBySceneName(int zone, string name)
- {
- return this.ClientScenesByName[zone][name];
- }
- public override void AfterEndInit()
- {
- foreach (StartSceneConfig startSceneConfig in this.GetAll().Values)
- {
- this.ProcessScenes.Add(startSceneConfig.Process, startSceneConfig);
-
- if (!this.ClientScenesByName.ContainsKey(startSceneConfig.Zone))
- {
- this.ClientScenesByName.Add(startSceneConfig.Zone, new Dictionary<string, StartSceneConfig>());
- }
- this.ClientScenesByName[startSceneConfig.Zone].Add(startSceneConfig.Name, startSceneConfig);
-
- switch (startSceneConfig.Type)
- {
- case SceneType.Realm:
- this.Realms.Add(startSceneConfig);
- break;
- case SceneType.Gate:
- this.Gates.Add(startSceneConfig.Zone, startSceneConfig);
- break;
- case SceneType.Location:
- this.LocationConfig = startSceneConfig;
- break;
- case SceneType.Robot:
- this.Robots.Add(startSceneConfig);
- break;
- case SceneType.Router:
- this.Routers.Add(startSceneConfig);
- break;
- case SceneType.BenchmarkServer:
- this.BenchmarkServer = startSceneConfig;
- break;
- }
- }
- }
- }
-
- public partial class StartSceneConfig: ISupportInitialize
- {
- public long InstanceId;
-
- public SceneType Type;
- public StartProcessConfig StartProcessConfig
- {
- get
- {
- return StartProcessConfigCategory.Instance.Get(this.Process);
- }
- }
-
- public StartZoneConfig StartZoneConfig
- {
- get
- {
- return StartZoneConfigCategory.Instance.Get(this.Zone);
- }
- }
- // 内网地址外网端口,通过防火墙映射端口过来
- private IPEndPoint innerIPOutPort;
- public IPEndPoint InnerIPOutPort
- {
- get
- {
- if (innerIPOutPort == null)
- {
- this.innerIPOutPort = NetworkHelper.ToIPEndPoint($"{this.StartProcessConfig.InnerIP}:{this.OuterPort}");
- }
- return this.innerIPOutPort;
- }
- }
- private IPEndPoint outerIPPort;
- // 外网地址外网端口
- public IPEndPoint OuterIPPort
- {
- get
- {
- if (this.outerIPPort == null)
- {
- this.outerIPPort = NetworkHelper.ToIPEndPoint($"{this.StartProcessConfig.OuterIP}:{this.OuterPort}");
- }
- return this.outerIPPort;
- }
- }
- public override void AfterEndInit()
- {
- this.Type = EnumHelper.FromString<SceneType>(this.SceneType);
- InstanceIdStruct instanceIdStruct = new InstanceIdStruct(this.Process, (uint) this.Id);
- this.InstanceId = instanceIdStruct.ToLong();
- }
- }
- }
|