From 920d7920c2a54382ca849be809932f0a5e80254a Mon Sep 17 00:00:00 2001
From: client_Wu Xijin <364452445@qq.com>
Date: 星期五, 28 十二月 2018 14:27:01 +0800
Subject: [PATCH] 3335 更新封包查看工具
---
Assets/Editor/Tool/NetPkgTool.cs | 323 +++++++++++++++++++++++++++++------------------------
1 files changed, 179 insertions(+), 144 deletions(-)
diff --git a/Assets/Editor/Tool/NetPkgTool.cs b/Assets/Editor/Tool/NetPkgTool.cs
index 89a7313..0c854c4 100644
--- a/Assets/Editor/Tool/NetPkgTool.cs
+++ b/Assets/Editor/Tool/NetPkgTool.cs
@@ -2,76 +2,162 @@
using System.Collections.Generic;
using UnityEngine;
using UnityEditor;
-using System.Windows.Forms;
using System;
-using System.Reflection;
+using System.Text.RegularExpressions;
+using System.Threading;
-public class NetPkgTool : EditorWindow
+public class NetPackageWindow : EditorWindow
{
- public static NetPkgTool window = null;
+ public static NetPackageWindow window = null;
[UnityEditor.MenuItem("绋嬪簭/灏佸寘鏌ョ湅宸ュ叿 &1")]
static void Init()
{
- window = GetWindow(typeof(NetPkgTool), false, "灏佸寘鏌ョ湅宸ュ叿") as NetPkgTool;
+ window = GetWindow(typeof(NetPackageWindow), false, "灏佸寘鏌ョ湅宸ュ叿") as NetPackageWindow;
window.Show();
window.autoRepaintOnSceneChange = true;
}
static int MAX_PACKAGE_COUNT = 200;
- private static List<NetPkg> NetPkgLst = null;
- private bool IsStopRecPkg = false;
private Vector2 scrollPosition;
- private string stopRecBtnDetail = "鏆傚仠鎺ユ敹鍖�";
-
- private bool professionalSkin {
- get { return LocalSave.GetBool("NetPackageSkinPattern", false); }
- set { LocalSave.SetBool("NetPackageSkinPattern", value); }
- }
-
- private string filterNetPkgStr {
- get { return LocalSave.GetString("NetPkgToolFilterNetPackageString"); }
- set { LocalSave.SetString("NetPkgToolFilterNetPackageString", value); }
- }
+ static string stopRecBtnDetail = "鏆傚仠鎺ユ敹鍖�";
+ static bool professionalSkin;
+ static string filterNetPkgStr;
private string simSendPkgDetail = "";
- private NetPkgType m_CurNetPkgType = NetPkgType.All;
- private bool reveralFilter {
- get { return LocalSave.GetBool("NetPkgToolFilterNetPackageReveralFilter", false); }
- set { LocalSave.SetBool("NetPkgToolFilterNetPackageReveralFilter", value); }
- }
+ static NetPackagetType m_CurrentType = NetPackagetType.All;
- bool showHeartPackage {
- get { return LocalSave.GetBool("NetPackageHeartFillter", true); }
+ static bool reveralFilter;
+ static bool showHeartPackage;
+
+ static bool showMainServerPackage;
+ static bool showCrossServerPackage;
+ static int maxShowPackageCount;
+
+ bool threading = true;
+ List<NetPackage> m_DrawPackages = new List<NetPackage>();
+ List<NetPackage> drawPackages {
+ get { lock (this) { return m_DrawPackages; } }
set {
- LocalSave.SetBool("NetPackageHeartFillter", value);
+ lock (this)
+ {
+ m_DrawPackages = value;
+ }
}
}
- bool showMainServerPackage {
- get { return LocalSave.GetBool("MainServerPackage", true); }
- set {
- LocalSave.SetBool("MainServerPackage", value);
- }
+ private void OnDisable()
+ {
+ threading = false;
+
+ LocalSave.SetBool("NetPackageSkinPattern", professionalSkin);
+ LocalSave.SetInt("NetPackageShowMaxCount", maxShowPackageCount);
+ LocalSave.SetBool("CrossServerPackage", showCrossServerPackage);
+ LocalSave.SetBool("MainServerPackage", showMainServerPackage);
+ LocalSave.SetString("NetPkgToolFilterNetPackageString", filterNetPkgStr);
+ LocalSave.SetBool("NetPkgToolFilterNetPackageReveralFilter", reveralFilter);
}
- bool showCrossServerPackage {
- get { return LocalSave.GetBool("CrossServerPackage", true); }
- set {
- LocalSave.SetBool("CrossServerPackage", value);
- }
+ private void OnEnable()
+ {
+ professionalSkin = LocalSave.GetBool("NetPackageSkinPattern", false);
+ maxShowPackageCount = LocalSave.GetInt("NetPackageShowMaxCount", 100);
+ showCrossServerPackage = LocalSave.GetBool("CrossServerPackage", true);
+ showMainServerPackage = LocalSave.GetBool("MainServerPackage", true);
+ filterNetPkgStr = LocalSave.GetString("NetPkgToolFilterNetPackageString");
+ reveralFilter = LocalSave.GetBool("NetPkgToolFilterNetPackageReveralFilter", false);
+
+ var thread = new Thread(OnThreading);
+ thread.IsBackground = true;
+ thread.Start();
}
- static int maxShowPackageCount {
- get { return LocalSave.GetInt("NetPackageShowMaxCount", 100); }
- set { LocalSave.SetInt("NetPackageShowMaxCount", value); }
+ public static void CheckPackageShowState(NetPackage package)
+ {
+ if (m_CurrentType != NetPackagetType.All && m_CurrentType != package.type)
+ {
+ package.show = false;
+ return;
+ }
+
+ if (!showMainServerPackage && package.socketType == GameNetSystem.SocketType.Main)
+ {
+ package.show = false;
+ return;
+ }
+
+ if (!showCrossServerPackage && package.socketType == GameNetSystem.SocketType.CrossSever)
+ {
+ package.show = false;
+ return;
+ }
+
+ if (!showHeartPackage && Regex.IsMatch(package.name, ".*(OnlineReturn|ServerHeart|OnlineReply).*"))
+ {
+ package.show = false;
+ return;
+ }
+
+ if (!string.IsNullOrEmpty(filterNetPkgStr))
+ {
+ var contain = false;
+
+ try
+ {
+ contain = Regex.IsMatch(package.name, StringUtility.Contact(".*(", filterNetPkgStr.Replace(" ", "|"), ").*"));
+ }
+ catch (System.Exception ex)
+ {
+ }
+
+ if (reveralFilter && contain)
+ {
+ package.show = false;
+ return;
+ }
+ else if (!reveralFilter && !contain)
+ {
+ package.show = false;
+ return;
+ }
+ }
+
+ package.show = true;
+ }
+
+ private void OnThreading()
+ {
+ while (threading)
+ {
+ var packages = NetPkgCtl.GetPackages();
+ if (packages != null)
+ {
+ var showCount = 0;
+ for (int i = packages.Count - 1; i >= 0; i--)
+ {
+ if (packages[i] == null)
+ {
+ packages.RemoveAt(i);
+ continue;
+ }
+
+ showCount++;
+ if (showCount >= maxShowPackageCount)
+ {
+ break;
+ }
+
+ CheckPackageShowState(packages[i]);
+ }
+ }
+
+ Thread.Sleep(50);
+ }
}
void OnGUI()
{
- NetPkgLst = NetPkgCtl.GetNetPkg();
-
GUI.skin.customStyles[1].alignment = TextAnchor.UpperLeft;
GUI.skin.customStyles[1].fontStyle = FontStyle.Normal;
GUI.skin.customStyles[1].fixedWidth = 450;
@@ -93,9 +179,9 @@
showMainServerPackage = GUILayout.Toggle(showMainServerPackage, "涓绘湇");
showCrossServerPackage = GUILayout.Toggle(showCrossServerPackage, "璺ㄦ湇");
- m_CurNetPkgType = GUILayout.Toggle(m_CurNetPkgType == NetPkgType.All, "鍏ㄩ儴") ? NetPkgType.All : m_CurNetPkgType;
- m_CurNetPkgType = GUILayout.Toggle(m_CurNetPkgType == NetPkgType.Server, "鏀跺寘") ? NetPkgType.Server : m_CurNetPkgType;
- m_CurNetPkgType = GUILayout.Toggle(m_CurNetPkgType == NetPkgType.Client, "鍙戝寘") ? NetPkgType.Client : m_CurNetPkgType;
+ m_CurrentType = GUILayout.Toggle(m_CurrentType == NetPackagetType.All, "鍏ㄩ儴") ? NetPackagetType.All : m_CurrentType;
+ m_CurrentType = GUILayout.Toggle(m_CurrentType == NetPackagetType.Server, "鏀跺寘") ? NetPackagetType.Server : m_CurrentType;
+ m_CurrentType = GUILayout.Toggle(m_CurrentType == NetPackagetType.Client, "鍙戝寘") ? NetPackagetType.Client : m_CurrentType;
GUILayout.EndHorizontal();
@@ -107,134 +193,84 @@
GUILayout.EndHorizontal();
SimSendPkg();
-
scrollPosition = GUILayout.BeginScrollView(scrollPosition, false, false);
- if (NetPkgLst != null)
+ var packages = NetPkgCtl.GetPackages();
+ if (packages != null)
{
- string[] filters = null;
- if (!string.IsNullOrEmpty(filterNetPkgStr))
+ var count = 0;
+ for (int i = packages.Count - 1; i >= 0; i--)
{
- filters = filterNetPkgStr.Split(' ');
- }
-
- var showCount = 0;
- for (int i = NetPkgLst.Count - 1; i >= 0; i--)
- {
- if (NetPkgLst[i] == null)
+ var package = packages[i];
+ if (package != null)
{
- continue;
+ count++;
}
- if (m_CurNetPkgType != NetPkgType.All && m_CurNetPkgType != NetPkgLst[i].NetPkgTp)
- {
- continue;
- }
-
- if (!showMainServerPackage && NetPkgLst[i].socketType == GameNetSystem.SocketType.Main)
- {
- continue;
- }
-
- if (!showCrossServerPackage && NetPkgLst[i].socketType == GameNetSystem.SocketType.CrossSever)
- {
- continue;
- }
-
- if (!showHeartPackage &&
- (NetPkgLst[i].GameNetName.Contains("OnlineReturn")
- || NetPkgLst[i].GameNetName.Contains("ServerHeart")
- || NetPkgLst[i].GameNetName.Contains("OnlineReply")))
- {
- continue;
- }
-
- showCount++;
- if (showCount >= maxShowPackageCount)
+ if (count >= maxShowPackageCount)
{
break;
}
- if (filters != null)
+ if (package.show)
{
- var contain = false;
- foreach (var filter in filters)
+ try
{
- if (NetPkgLst[i].GameNetName.Contains(filter))
+ EditorGUILayout.BeginHorizontal();
+
+ if (professionalSkin)
{
- contain = true;
- break;
+ GUI.skin.button.normal.textColor = package.type == NetPackagetType.Client ? Color.yellow : Color.white;
}
- }
+ else
+ {
+ GUI.skin.button.normal.textColor = package.type == NetPackagetType.Client ? Color.blue : Color.black;
+ }
- if (reveralFilter && contain)
+ if (GUILayout.Button(package.type == NetPackagetType.Client ? "CS" : "SC", GUILayout.Width(30)))
+ {
+ PackageDetailsWindow.packageTime = package.time;
+ PackageDetailsWindow.packageName = package.name;
+ PackageDetailsWindow.packageBytes = package.content;
+ PackageDetailsWindow.packageDetails = package.fieldDetails;
+ }
+
+ GUI.skin.button.normal.textColor = professionalSkin ? Color.white : Color.black;
+ var showName = StringUtility.Contact(package.time, " ", package.name);
+ EditorGUILayout.LabelField(showName, GUILayout.Width(260));
+ EditorGUILayout.TextField(package.fields);
+
+ EditorGUILayout.EndHorizontal();
+ }
+ catch (Exception ex)
{
- continue;
+
}
- else if (!reveralFilter && !contain)
- {
- continue;
- }
- }
-
- string pkgName = StringUtility.Contact(NetPkgLst[i].SendOrGetTime, " ", NetPkgLst[i].GameNetName);
- try
- {
- EditorGUILayout.BeginHorizontal();
-
- if (professionalSkin)
- {
- GUI.skin.button.normal.textColor = NetPkgLst[i].NetPkgTp == NetPkgType.Client ? Color.yellow : Color.white;
- }
- else
- {
- GUI.skin.button.normal.textColor = NetPkgLst[i].NetPkgTp == NetPkgType.Client ? Color.blue : Color.black;
- }
-
- if (GUILayout.Button(NetPkgLst[i].NetPkgTp == NetPkgType.Client ? "CS" : "SC", GUILayout.Width(30)))
- {
- var pkg = NetPkgLst[i];
- PackageDetailsWindow.packageTime = pkg.SendOrGetTime;
- PackageDetailsWindow.packageName = pkg.GameNetName;
- PackageDetailsWindow.packageBytes = pkg.GameNetPkgStr;
- PackageDetailsWindow.packageDetails = pkg.fieldDetails;
- }
-
- GUI.skin.button.normal.textColor = professionalSkin ? Color.white : Color.black;
-
- EditorGUILayout.LabelField(pkgName, GUILayout.Width(260));
- EditorGUILayout.TextField(NetPkgLst[i].fields);
-
- EditorGUILayout.EndHorizontal();
- }
- catch (Exception ex)
- {
-
}
}
}
+
GUILayout.EndScrollView();
GUILayout.BeginHorizontal();
if (GUILayout.Button(stopRecBtnDetail))
{
- IsStopRecPkg = !IsStopRecPkg;
- NetPkgCtl.IsStopRec = IsStopRecPkg;
- if (IsStopRecPkg)
+ NetPkgCtl.stopRecieve = !NetPkgCtl.stopRecieve;
+ if (NetPkgCtl.stopRecieve)
{
stopRecBtnDetail = "寮�濮嬫帴鏀跺寘";
}
else
{
- List<NetPkg> tempNetPkgLst = NetPkgCtl.GetTempNetPkg();
- if (NetPkgLst != null)
+ List<NetPackage> tempNetPkgLst = NetPkgCtl.GetTempPackages();
+ if (packages != null)
{
- NetPkgLst.AddRange(tempNetPkgLst);
+ packages.AddRange(tempNetPkgLst);
- while (NetPkgLst.Count > MAX_PACKAGE_COUNT)
+ while (packages.Count > MAX_PACKAGE_COUNT)
{
- NetPkgLst.RemoveAt(0);
+ packages.RemoveAt(0);
}
}
@@ -255,16 +291,15 @@
if (GUILayout.Button("娓呴櫎"))
{
- if (NetPkgCtl.GetNetPkg() != null)
+ if (NetPkgCtl.GetPackages() != null)
{
- NetPkgCtl.GetNetPkg().Clear();
+ NetPkgCtl.GetPackages().Clear();
}
}
GUILayout.EndHorizontal();
GUILayout.EndVertical();
}
-
private void SimSendPkg()
{
@@ -289,13 +324,13 @@
private string NetPkgTypeString()
{
- switch (m_CurNetPkgType)
+ switch (m_CurrentType)
{
- case NetPkgType.All:
+ case NetPackagetType.All:
return "鍏ㄩ儴";
- case NetPkgType.Server:
+ case NetPackagetType.Server:
return "鏀跺寘";
- case NetPkgType.Client:
+ case NetPackagetType.Client:
return "鍙戝寘";
default:
return "鍏ㄩ儴";
--
Gitblit v1.8.0