// using System; // using System.Collections.Generic; // using System.Diagnostics; // using System.IO; // using System.Linq; // using System.Runtime.InteropServices; // using ET; // using MongoDB.Bson; // using UnityEditor; // using UnityEngine; // // namespace ETEditor // { // public class ServerCommandLineEditor: EditorWindow // { // private const string ConfigDir = @"../Config/StartConfig/"; // // private List files; // // private int selectedIndex; // // private string fileName; // // private string newFileName = ""; // // private int copyNum = 1; // // private AppType AppType = AppType.None; // // private readonly List startConfigs = new List(); // // [MenuItem("Tools/命令行配置")] // private static void ShowWindow() // { // GetWindow(typeof (ServerCommandLineEditor)); // } // // private void OnEnable() // { // this.files = this.GetConfigFiles(); // if (this.files.Count > 0) // { // this.fileName = this.files[this.selectedIndex]; // this.LoadConfig(); // } // } // // public void ClearConfig() // { // foreach (StartConfig startConfig in this.startConfigs) // { // startConfig.Dispose(); // } // this.startConfigs.Clear(); // } // // private List GetConfigFiles() // { // List fs = Directory.GetFiles(ConfigDir).ToList(); // DirectoryInfo directoryInfo = new DirectoryInfo(ConfigDir); // FileInfo[] fileInfo = directoryInfo.GetFiles(); // fs = fileInfo.Select(x => x.Name).ToList(); // return fs; // } // // private void LoadConfig() // { // string filePath = this.GetFilePath(); // if (!File.Exists(filePath)) // { // return; // } // // string s2 = ""; // try // { // this.ClearConfig(); // string[] ss = File.ReadAllText(filePath).Split('\n'); // foreach (string s in ss) // { // s2 = s.Trim(); // if (s2 == "") // { // continue; // } // // StartConfig startConfig = MongoHelper.FromJson(s2); // this.startConfigs.Add(startConfig); // } // } // catch (Exception e) // { // Log.Error($"加载配置失败! {s2} \n {e}"); // } // } // // private string GetFilePath() // { // return Path.Combine(ConfigDir, this.fileName); // } // // private void Save() // { // string path = this.GetFilePath(); // using (StreamWriter sw = new StreamWriter(new FileStream(path, FileMode.Create))) // { // foreach (StartConfig startConfig in this.startConfigs) // { // sw.Write(MongoHelper.ToJson(startConfig)); // sw.Write('\n'); // } // } // } // // private Vector2 scrollPos; // // private void OnGUI() // { // { // GUILayout.BeginHorizontal(); // string[] filesArray = this.files.ToArray(); // this.selectedIndex = EditorGUILayout.Popup(this.selectedIndex, filesArray); // // string lastFile = this.fileName; // this.fileName = this.files[this.selectedIndex]; // // if (this.fileName != lastFile) // { // this.LoadConfig(); // } // // this.newFileName = EditorGUILayout.TextField("文件名", this.newFileName); // // if (GUILayout.Button("添加")) // { // this.fileName = this.newFileName; // this.newFileName = ""; // File.WriteAllText(this.GetFilePath(), ""); // this.files = this.GetConfigFiles(); // this.selectedIndex = this.files.IndexOf(this.fileName); // this.LoadConfig(); // } // // if (GUILayout.Button("复制")) // { // this.fileName = $"{this.fileName}-copy"; // this.Save(); // this.files = this.GetConfigFiles(); // this.selectedIndex = this.files.IndexOf(this.fileName); // this.newFileName = ""; // } // // if (GUILayout.Button("重命名")) // { // if (this.newFileName == "") // { // Log.Debug("请输入新名字!"); // } // else // { // File.Delete(this.GetFilePath()); // this.fileName = this.newFileName; // this.Save(); // this.files = this.GetConfigFiles(); // this.selectedIndex = this.files.IndexOf(this.fileName); // this.newFileName = ""; // } // } // // if (GUILayout.Button("删除")) // { // File.Delete(this.GetFilePath()); // this.files = this.GetConfigFiles(); // this.selectedIndex = 0; // this.newFileName = ""; // } // // GUILayout.EndHorizontal(); // } // // scrollPos = GUILayout.BeginScrollView(this.scrollPos, true, true); // for (int i = 0; i < this.startConfigs.Count; ++i) // { // StartConfig startConfig = this.startConfigs[i]; // // // GUILayout.BeginHorizontal(); // { // GUILayout.BeginHorizontal(GUILayout.Width(1700)); // { // GUILayout.BeginHorizontal(GUILayout.Width(350)); // GUILayout.Label($"AppId:"); // startConfig.AppId = EditorGUILayout.IntField(startConfig.AppId, GUILayout.Width(30)); // GUILayout.Label($"服务器IP:"); // startConfig.ServerIP = EditorGUILayout.TextField(startConfig.ServerIP, GUILayout.Width(100)); // GUILayout.Label($"AppType:"); // startConfig.AppType = (AppType) EditorGUILayout.EnumPopup(startConfig.AppType); // GUILayout.EndHorizontal(); // } // { // GUILayout.BeginHorizontal(GUILayout.Width(150)); // InnerConfig innerConfig = startConfig.GetComponent(); // if (innerConfig != null) // { // GUILayout.Label($"内网地址:"); // innerConfig.Address = EditorGUILayout.TextField(innerConfig.Address, GUILayout.Width(120)); // } // // GUILayout.EndHorizontal(); // } // { // GUILayout.BeginHorizontal(GUILayout.Width(350)); // OuterConfig outerConfig = startConfig.GetComponent(); // if (outerConfig != null) // { // GUILayout.Label($"外网地址:"); // outerConfig.Address = EditorGUILayout.TextField(outerConfig.Address, GUILayout.Width(120)); // GUILayout.Label($"外网地址2:"); // outerConfig.Address2 = EditorGUILayout.TextField(outerConfig.Address2, GUILayout.Width(120)); // } // // GUILayout.EndHorizontal(); // } // { // GUILayout.BeginHorizontal(GUILayout.Width(350)); // ClientConfig clientConfig = startConfig.GetComponent(); // if (clientConfig != null) // { // GUILayout.Label($"连接地址:"); // clientConfig.Address = EditorGUILayout.TextField(clientConfig.Address, GUILayout.Width(120)); // } // // HttpConfig httpConfig = startConfig.GetComponent(); // if (httpConfig != null) // { // GUILayout.Label($"AppId:"); // httpConfig.AppId = EditorGUILayout.IntField(httpConfig.AppId, GUILayout.Width(20)); // GUILayout.Label($"AppKey:"); // httpConfig.AppKey = EditorGUILayout.TextField(httpConfig.AppKey); // GUILayout.Label($"Url:"); // httpConfig.Url = EditorGUILayout.TextField(httpConfig.Url); // GUILayout.Label($"ManagerSystemUrl:"); // httpConfig.ManagerSystemUrl = EditorGUILayout.TextField(httpConfig.ManagerSystemUrl); // } // // DBConfig dbConfig = startConfig.GetComponent(); // if (dbConfig != null) // { // GUILayout.Label($"Connection:"); // dbConfig.ConnectionString = EditorGUILayout.TextField(dbConfig.ConnectionString); // // GUILayout.Label($"DBName:"); // dbConfig.DBName = EditorGUILayout.TextField(dbConfig.DBName); // } // // GUILayout.EndHorizontal(); // } // GUILayout.EndHorizontal(); // } // // { // GUILayout.BeginHorizontal(); // if (GUILayout.Button("删除")) // { // this.startConfigs.Remove(startConfig); // break; // } // // if (GUILayout.Button("复制")) // { // for (int j = 1; j < this.copyNum + 1; ++j) // { // StartConfig newStartConfig = MongoHelper.FromBson(startConfig.ToBson()); // newStartConfig.AppId += j; // this.startConfigs.Add(newStartConfig); // } // // break; // } // // if (i >= 0) // { // if (GUILayout.Button("上移")) // { // if (i == 0) // { // break; // } // StartConfig s = this.startConfigs[i]; // this.startConfigs.RemoveAt(i); // this.startConfigs.Insert(i - 1, s); // for (int j = 0; j < startConfigs.Count; ++j) // { // this.startConfigs[j].AppId = j + 1; // } // // break; // } // } // // if (i <= this.startConfigs.Count - 1) // { // if (GUILayout.Button("下移")) // { // if (i == this.startConfigs.Count - 1) // { // break; // } // StartConfig s = this.startConfigs[i]; // this.startConfigs.RemoveAt(i); // this.startConfigs.Insert(i + 1, s); // for (int j = 0; j < startConfigs.Count; ++j) // { // this.startConfigs[j].AppId = j + 1; // } // // break; // } // } // GUILayout.EndHorizontal(); // } // GUILayout.EndHorizontal(); // } // GUILayout.EndScrollView(); // // // // // // GUILayout.Label(""); // // GUILayout.BeginHorizontal(); // this.copyNum = EditorGUILayout.IntField("复制数量: ", this.copyNum); // // GUILayout.Label($"添加的AppType:"); // this.AppType = (AppType) EditorGUILayout.EnumPopup(this.AppType); // // if (GUILayout.Button("添加一行配置")) // { // StartConfig newStartConfig = new StartConfig(); // // newStartConfig.AppType = this.AppType; // // if (this.AppType.Is(AppType.Gate | AppType.Realm | AppType.Manager)) // { // newStartConfig.AddComponent(); // } // // if (this.AppType.Is(AppType.Gate | AppType.Realm | AppType.Manager | AppType.Http | AppType.DB | AppType.Map | AppType.Location)) // { // newStartConfig.AddComponent(); // } // // if (this.AppType.Is(AppType.Http)) // { // newStartConfig.AddComponent(); // } // // if (this.AppType.Is(AppType.DB)) // { // newStartConfig.AddComponent(); // } // // if (this.AppType.Is(AppType.Benchmark)) // { // newStartConfig.AddComponent(); // } // // if (this.AppType.Is(AppType.BenchmarkWebsocketServer)) // { // newStartConfig.AddComponent(); // } // // if (this.AppType.Is(AppType.BenchmarkWebsocketClient)) // { // newStartConfig.AddComponent(); // } // // this.startConfigs.Add(newStartConfig); // } // GUILayout.EndHorizontal(); // // GUILayout.BeginHorizontal(); // if (GUILayout.Button("保存")) // { // this.Save(); // } // // if (GUILayout.Button("启动")) // { // StartConfig startConfig = null; // foreach (StartConfig config in this.startConfigs) // { // if (config.AppType.Is(AppType.Manager)) // { // startConfig = config; // } // } // // if (startConfig == null) // { // Log.Error("没有配置Manager!"); // return; // } // // string arguments = $"App.dll --appId={startConfig.AppId} --appType={startConfig.AppType} --config=../Config/StartConfig/{this.fileName}"; // ProcessHelper.Run("dotnet", arguments, "../Bin/"); // } // GUILayout.EndHorizontal(); // } // // private void OnDestroy() // { // this.ClearConfig(); // } // } // }