示例#1
0
        protected override async ETTask Run(Session session, C2R_Login request, R2C_Login response, Action reply)
        {
            // 随机分配一个Gate
            StartConfig config = RealmGateAddressHelper.GetGate();
            //Log.Debug($"gate address: {MongoHelper.ToJson(config)}");

            // 向gate请求一个key,客户端可以拿着这个key连接gate
            G2R_GetLoginKey g2RGetLoginKey = (G2R_GetLoginKey)await ActorMessageSenderComponent.Instance.Call(
                config.SceneInstanceId, new R2G_GetLoginKey()
            {
                Account = request.Account
            });

            string outerAddress = config.GetParent <StartConfig>().GetComponent <OuterConfig>().Address2;

            response.Address = outerAddress;
            response.Key     = g2RGetLoginKey.Key;
            response.GateId  = g2RGetLoginKey.GateId;
            reply();
        }
        public bool OnGUI()
        {
            StartConfig startConfig = this.GetParent <StartConfig>();

            GUILayout.BeginHorizontal(GUILayout.Height(16));

            if (this.level > 0)
            {
                string s = "";
                for (int i = 1; i < this.level; ++i)
                {
                    s += $"    ";
                }
                GUILayout.Label(s, GUILayout.Width(20 * this.level));
            }

            {
                GUILayout.BeginHorizontal(GUILayout.Width(240), GUILayout.Height(16));
                this.isFold = EditorGUILayout.Foldout(isFold, $"子配置数量:{startConfig.List.Count}");

                if (GUILayout.Button("添加子配置", GUILayout.Height(16), GUILayout.Width(75)))
                {
                    StartConfig s = new StartConfig();
                    startConfig.Add(s);
                    s.AddComponentNoPool <StartConfigDrawer, int>(this.level + 1);

                    for (int i = 0; i < startConfig.List.Count; ++i)
                    {
                        startConfig.List[i].Id = i + 1;
                    }

                    this.isFold = true;
                    return(false);
                }
                if (GUILayout.Button("上", GUILayout.Height(16), GUILayout.Width(30)))
                {
                    StartConfig parentStartConfig = startConfig.GetParent <StartConfig>();
                    int         index             = parentStartConfig.List.IndexOf(startConfig);
                    if (index == 0)
                    {
                        return(true);
                    }

                    parentStartConfig.List.Remove(startConfig);
                    parentStartConfig.List.Insert(index - 1, startConfig);
                    for (int i = 0; i < parentStartConfig.List.Count; ++i)
                    {
                        parentStartConfig.List[i].Id = i + 1;
                    }

                    return(false);
                }
                if (GUILayout.Button("下", GUILayout.Height(16), GUILayout.Width(30)))
                {
                    StartConfig parentStartConfig = startConfig.GetParent <StartConfig>();
                    int         index             = parentStartConfig.List.IndexOf(startConfig);
                    if (index == parentStartConfig.List.Count - 1)
                    {
                        return(true);
                    }
                    parentStartConfig.List.Remove(startConfig);
                    parentStartConfig.List.Insert(index + 1, startConfig);
                    for (int i = 0; i < parentStartConfig.List.Count; ++i)
                    {
                        parentStartConfig.List[i].Id = i + 1;
                    }
                    return(false);
                }
                GUILayout.EndHorizontal();
            }

            {
                GUILayout.BeginHorizontal(GUILayout.Width(50));
                GUILayout.Label($"Id: ");
                startConfig.Id = EditorGUILayout.LongField(startConfig.Id, GUILayout.Width(30));
                GUILayout.EndHorizontal();
            }

            {
                GUILayout.BeginHorizontal(GUILayout.Width(200));
                ProcessConfig processConfig = startConfig.GetComponent <ProcessConfig>();
                if (processConfig != null)
                {
                    GUILayout.Label($"  ProcessConfig(", this.style);
                    GUILayout.Label($"服务器IP: ");
                    processConfig.ServerIP = EditorGUILayout.TextField(processConfig.ServerIP, GUILayout.Width(100));
                    GUILayout.Label($"),", this.style);
                }
                GUILayout.EndHorizontal();
            }

            {
                GUILayout.BeginHorizontal(GUILayout.Width(200));
                SceneConfig sceneConfig = startConfig.GetComponent <SceneConfig>();
                if (sceneConfig != null)
                {
                    GUILayout.Label($"  SceneConfig(", this.style);
                    GUILayout.Label($"SceneType: ");
                    sceneConfig.SceneType = (SceneType)EditorGUILayout.EnumPopup(sceneConfig.SceneType, GUILayout.Width(100));
                    GUILayout.Label($"Name: ");
                    sceneConfig.Name = EditorGUILayout.TextField(sceneConfig.Name, GUILayout.Width(100));
                    GUILayout.Label($"),", this.style);
                }
                GUILayout.EndHorizontal();
            }

            {
                GUILayout.BeginHorizontal(GUILayout.Width(150));
                InnerConfig innerConfig = startConfig.GetComponent <InnerConfig>();
                if (innerConfig != null)
                {
                    GUILayout.Label($"  InnerConfig(", this.style);
                    GUILayout.Label($"内网地址:");
                    innerConfig.Address = EditorGUILayout.TextField(innerConfig.Address, GUILayout.Width(120));
                    GUILayout.Label($"),", this.style);
                }

                GUILayout.EndHorizontal();
            }
            {
                GUILayout.BeginHorizontal(GUILayout.Width(350));
                OuterConfig outerConfig = startConfig.GetComponent <OuterConfig>();
                if (outerConfig != null)
                {
                    GUILayout.Label($"  OuterConfig(", this.style);
                    GUILayout.Label($"外网地址:");
                    outerConfig.Address = EditorGUILayout.TextField(outerConfig.Address, GUILayout.Width(120));
                    GUILayout.Label($"外网地址2:");
                    outerConfig.Address2 = EditorGUILayout.TextField(outerConfig.Address2, GUILayout.Width(120));
                    GUILayout.Label($"),", this.style);
                }

                GUILayout.EndHorizontal();
            }

            {
                GUILayout.BeginHorizontal(GUILayout.Width(50));
                CopyConfig copyConfig = startConfig.GetComponent <CopyConfig>();
                if (copyConfig != null)
                {
                    GUILayout.Label($"  CopyConfig(", this.style);
                    GUILayout.Label($"),", this.style);
                }

                GUILayout.EndHorizontal();
            }

            {
                GUILayout.BeginHorizontal(GUILayout.Width(50));
                MapConfig mapConfig = startConfig.GetComponent <MapConfig>();
                if (mapConfig != null)
                {
                    GUILayout.Label($"  MapConfig(", this.style);
                    GUILayout.Label($"MapType: ");
                    mapConfig.MapType = (MapType)EditorGUILayout.EnumPopup(mapConfig.MapType, GUILayout.Width(100));
                    GUILayout.Label($"),", this.style);
                }

                GUILayout.EndHorizontal();
            }

            {
                GUILayout.BeginHorizontal(GUILayout.Width(350));
                ClientConfig clientConfig = startConfig.GetComponent <ClientConfig>();
                if (clientConfig != null)
                {
                    GUILayout.Label($"  ClientConfig(", this.style);
                    GUILayout.Label($"连接地址:");
                    clientConfig.Address = EditorGUILayout.TextField(clientConfig.Address, GUILayout.Width(120));
                    GUILayout.Label($"),", this.style);
                }

                DBConfig dbConfig = startConfig.GetComponent <DBConfig>();
                if (dbConfig != null)
                {
                    GUILayout.Label($"  DBConfig(", this.style);
                    GUILayout.Label($"连接串:");
                    dbConfig.ConnectionString = EditorGUILayout.TextField(dbConfig.ConnectionString);

                    GUILayout.Label($"DBName:");
                    dbConfig.DBName = EditorGUILayout.TextField(dbConfig.DBName);
                    GUILayout.Label($"),", this.style);
                }
                GUILayout.EndHorizontal();
            }

            {
                GUILayout.BeginHorizontal(GUILayout.Width(200), GUILayout.Height(16));
                this.st = (StartConfigComponentType)EditorGUILayout.EnumPopup(this.st, GUILayout.Width(100));

                if (GUILayout.Button("添加组件", GUILayout.Height(16)))
                {
                    Assembly assembly = Assembly.GetAssembly(typeof(ConfigComponent));
                    Type     type     = assembly.GetType($"DCET.{st}");
                    startConfig.AddComponentWithType(type);
                }

                if (GUILayout.Button("删除组件", GUILayout.Height(16)))
                {
                    Assembly assembly = Assembly.GetAssembly(typeof(ConfigComponent));
                    Type     type     = assembly.GetType($"DCET.{st}");
                    startConfig.RemoveComponentWithType(type);
                }

                if (GUILayout.Button("删除该行配置", GUILayout.Height(16)))
                {
                    startConfig.GetParent <StartConfig>().Remove(startConfig);
                    return(false);
                }

                GUILayout.EndHorizontal();
            }

            GUILayout.EndHorizontal();

            if (this.isFold)
            {
                foreach (StartConfig child in startConfig.List)
                {
                    if (child.GetComponent <StartConfigDrawer>()?.OnGUI() == false)
                    {
                        return(false);
                    }
                }
            }

            return(true);
        }