using UnityEngine; using System; using System.Collections; using System.Collections.Generic; using Snxxz.UI; using System.Net; using System.Net.Sockets; using System.Threading; using UnityEditor; public class CrossServerTest : EditorWindow { public static string crossServerAccount { get { return LocalSave.GetString("CrossServerAccount"); } set { LocalSave.SetString("CrossServerAccount", value); } } public static int crossServerId { get { return LocalSave.GetInt("CrossServerId", 23); } set { LocalSave.SetInt("CrossServerId", value); } } public static string crossServerIp { get { return LocalSave.GetString("CrossServerIp"); } set { LocalSave.SetString("CrossServerIp", value); } } public bool autoOneVsOneMatch = false; [MenuItem("程序/跨服")] public static void Open() { var window = GetWindow(false, "跨服"); window.Show(); window.autoRepaintOnSceneChange = true; } public static void DisconnectCrossServer() { GameNetSystem.Instance.DisconnectCrossServer(); } private void Update() { if (autoOneVsOneMatch) { AutoCrossServerOneVsOneMatching(); } } private void OnGUI() { EditorGUILayout.Space(); if (EditorApplication.isPlaying) { EditorGUILayout.BeginHorizontal(); EditorGUILayout.Toggle("主服链接状态", GameNetSystem.Instance.mainSocketConnected); EditorGUILayout.Toggle("跨服链接状态", GameNetSystem.Instance.crossServerSocketConnected); EditorGUILayout.EndHorizontal(); } EditorGUILayout.Space(); crossServerAccount = EditorGUILayout.TextField("跨服账号:", crossServerAccount); crossServerId = EditorGUILayout.IntField("跨服服务器id:", crossServerId); crossServerIp = EditorGUILayout.TextField("跨服ip:", crossServerIp); EditorGUILayout.Space(); EditorGUILayout.Space(); EditorGUILayout.BeginHorizontal(); if (GUILayout.Button("断开")) { DisconnectCrossServer(); } EditorGUILayout.EndHorizontal(); EditorGUILayout.Space(); EditorGUILayout.BeginHorizontal(); if (GUILayout.Button("匹配")) { var match = new CC101_tagCMCrossRealmPKMatch(); match.Type = 1; GameNetSystem.Instance.SendInfo(match); } if (GUILayout.Button("取消")) { var match = new CC101_tagCMCrossRealmPKMatch(); match.Type = 0; GameNetSystem.Instance.SendInfo(match); } EditorGUILayout.EndHorizontal(); EditorGUILayout.Space(); EditorGUILayout.BeginHorizontal(); if (GUILayout.Button("退出跨服")) { var match = new CC104_tagCMExitCrossRealm(); GameNetSystem.Instance.SendToCrossServer(match); } if (GUILayout.Button("强制退出跨服")) { var sendInfo = new CC003_tagCGForceQuitCrossState(); GameNetSystem.Instance.SendInfo(sendInfo); } EditorGUILayout.EndHorizontal(); autoOneVsOneMatch = EditorGUILayout.Toggle("自动匹配", autoOneVsOneMatch); EditorGUILayout.Space(); EditorGUILayout.BeginHorizontal(); if (GUILayout.Button("开始客户端PK")) { ClientCrossServerOneVsOne.FakeMatchOk(); ClientCrossServerOneVsOne.StartClientCrossServerOneVsOne(); } if (GUILayout.Button("退出客户端PK")) { ClientCrossServerOneVsOne.StopClientCrossServerOneVsOne(); } EditorGUILayout.EndHorizontal(); } CrossServerOneVsOneModel oneVsOneModel { get { return ModelCenter.Instance.GetModel(); } } float timer = 0f; private void AutoCrossServerOneVsOneMatching() { timer += Time.deltaTime; if (timer < 5f) { return; } timer = 0f; if (StageLoad.Instance.isLoading) { return; } var mapId = PlayerDatas.Instance.baseData.MapID; var config = MapConfig.Get(mapId); if (config == null) { return; } if (config.MapFBType != (int)MapType.OpenCountry) { return; } if (oneVsOneModel.IsMatching) { return; } if (CrossServerLogin.Instance.IsEnterCrossServerPreparing()) { return; } if (CrossServerLogin.Instance.busy) { return; } oneVsOneModel.SendCrossMatch(1); } }