diff --git a/.idea/.idea.FantasyNetTest/.idea/vcs.xml b/.idea/.idea.FantasyNetTest/.idea/vcs.xml
new file mode 100644
index 0000000..35eb1dd
--- /dev/null
+++ b/.idea/.idea.FantasyNetTest/.idea/vcs.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.vs/FantasyNetTest/CopilotIndices/17.14.698.11175/CodeChunks.db b/.vs/FantasyNetTest/CopilotIndices/17.14.698.11175/CodeChunks.db
new file mode 100644
index 0000000..0b8d64c
Binary files /dev/null and b/.vs/FantasyNetTest/CopilotIndices/17.14.698.11175/CodeChunks.db differ
diff --git a/.vs/FantasyNetTest/CopilotIndices/17.14.698.11175/SemanticSymbols.db b/.vs/FantasyNetTest/CopilotIndices/17.14.698.11175/SemanticSymbols.db
new file mode 100644
index 0000000..013a4e3
Binary files /dev/null and b/.vs/FantasyNetTest/CopilotIndices/17.14.698.11175/SemanticSymbols.db differ
diff --git a/.vs/FantasyNetTest/DesignTimeBuild/.dtbcache.v2 b/.vs/FantasyNetTest/DesignTimeBuild/.dtbcache.v2
index bc2f8ef..fbc026d 100644
Binary files a/.vs/FantasyNetTest/DesignTimeBuild/.dtbcache.v2 and b/.vs/FantasyNetTest/DesignTimeBuild/.dtbcache.v2 differ
diff --git a/.vs/FantasyNetTest/FileContentIndex/1b16a2e7-1bb2-4c3c-9d14-af55c9c33fc6.vsidx b/.vs/FantasyNetTest/FileContentIndex/1b16a2e7-1bb2-4c3c-9d14-af55c9c33fc6.vsidx
deleted file mode 100644
index 492b03b..0000000
Binary files a/.vs/FantasyNetTest/FileContentIndex/1b16a2e7-1bb2-4c3c-9d14-af55c9c33fc6.vsidx and /dev/null differ
diff --git a/.vs/FantasyNetTest/FileContentIndex/24bcbd59-aa99-42c3-b26d-ef3f8291ecfc.vsidx b/.vs/FantasyNetTest/FileContentIndex/24bcbd59-aa99-42c3-b26d-ef3f8291ecfc.vsidx
new file mode 100644
index 0000000..70aef67
Binary files /dev/null and b/.vs/FantasyNetTest/FileContentIndex/24bcbd59-aa99-42c3-b26d-ef3f8291ecfc.vsidx differ
diff --git a/.vs/FantasyNetTest/FileContentIndex/3ff06618-4403-490d-bd84-593f04f43fe0.vsidx b/.vs/FantasyNetTest/FileContentIndex/3ff06618-4403-490d-bd84-593f04f43fe0.vsidx
new file mode 100644
index 0000000..4c7ec2b
Binary files /dev/null and b/.vs/FantasyNetTest/FileContentIndex/3ff06618-4403-490d-bd84-593f04f43fe0.vsidx differ
diff --git a/.vs/FantasyNetTest/FileContentIndex/63aeb925-4ffa-4456-9651-416f182bf989.vsidx b/.vs/FantasyNetTest/FileContentIndex/63aeb925-4ffa-4456-9651-416f182bf989.vsidx
deleted file mode 100644
index 6bee42f..0000000
Binary files a/.vs/FantasyNetTest/FileContentIndex/63aeb925-4ffa-4456-9651-416f182bf989.vsidx and /dev/null differ
diff --git a/.vs/FantasyNetTest/FileContentIndex/64c8bdfc-9971-43cd-9e5b-02cd88a5d378.vsidx b/.vs/FantasyNetTest/FileContentIndex/64c8bdfc-9971-43cd-9e5b-02cd88a5d378.vsidx
deleted file mode 100644
index 88f97c8..0000000
Binary files a/.vs/FantasyNetTest/FileContentIndex/64c8bdfc-9971-43cd-9e5b-02cd88a5d378.vsidx and /dev/null differ
diff --git a/.vs/FantasyNetTest/FileContentIndex/803edca7-6048-4b38-896e-1c612aa4ddfb.vsidx b/.vs/FantasyNetTest/FileContentIndex/803edca7-6048-4b38-896e-1c612aa4ddfb.vsidx
deleted file mode 100644
index f1339df..0000000
Binary files a/.vs/FantasyNetTest/FileContentIndex/803edca7-6048-4b38-896e-1c612aa4ddfb.vsidx and /dev/null differ
diff --git a/.vs/FantasyNetTest/FileContentIndex/a276d935-05f6-4ffd-9ee0-d04eb5db88f8.vsidx b/.vs/FantasyNetTest/FileContentIndex/a276d935-05f6-4ffd-9ee0-d04eb5db88f8.vsidx
deleted file mode 100644
index cc0838b..0000000
Binary files a/.vs/FantasyNetTest/FileContentIndex/a276d935-05f6-4ffd-9ee0-d04eb5db88f8.vsidx and /dev/null differ
diff --git a/.vs/FantasyNetTest/FileContentIndex/df0a37d5-92db-4c05-8ec1-eae0e75b641f.vsidx b/.vs/FantasyNetTest/FileContentIndex/df0a37d5-92db-4c05-8ec1-eae0e75b641f.vsidx
new file mode 100644
index 0000000..70aef67
Binary files /dev/null and b/.vs/FantasyNetTest/FileContentIndex/df0a37d5-92db-4c05-8ec1-eae0e75b641f.vsidx differ
diff --git a/.vs/FantasyNetTest/FileContentIndex/e4dce15c-5d8d-481b-9c3a-600d4e850a95.vsidx b/.vs/FantasyNetTest/FileContentIndex/e4dce15c-5d8d-481b-9c3a-600d4e850a95.vsidx
new file mode 100644
index 0000000..70aef67
Binary files /dev/null and b/.vs/FantasyNetTest/FileContentIndex/e4dce15c-5d8d-481b-9c3a-600d4e850a95.vsidx differ
diff --git a/.vs/FantasyNetTest/FileContentIndex/f7a27f51-09ce-4e39-ada7-60716abdc2cc.vsidx b/.vs/FantasyNetTest/FileContentIndex/f7a27f51-09ce-4e39-ada7-60716abdc2cc.vsidx
new file mode 100644
index 0000000..70aef67
Binary files /dev/null and b/.vs/FantasyNetTest/FileContentIndex/f7a27f51-09ce-4e39-ada7-60716abdc2cc.vsidx differ
diff --git a/.vs/FantasyNetTest/v17/.futdcache.v2 b/.vs/FantasyNetTest/v17/.futdcache.v2
index ad39b75..f30d371 100644
Binary files a/.vs/FantasyNetTest/v17/.futdcache.v2 and b/.vs/FantasyNetTest/v17/.futdcache.v2 differ
diff --git a/.vs/FantasyNetTest/v17/.suo b/.vs/FantasyNetTest/v17/.suo
index a6cc766..dffe5d1 100644
Binary files a/.vs/FantasyNetTest/v17/.suo and b/.vs/FantasyNetTest/v17/.suo differ
diff --git a/.vs/FantasyNetTest/v17/DocumentLayout.backup.json b/.vs/FantasyNetTest/v17/DocumentLayout.backup.json
new file mode 100644
index 0000000..311843e
--- /dev/null
+++ b/.vs/FantasyNetTest/v17/DocumentLayout.backup.json
@@ -0,0 +1,100 @@
+{
+ "Version": 1,
+ "WorkspaceRootPath": "D:\\work\\FantasyNetTest\\",
+ "Documents": [
+ {
+ "AbsoluteMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|D:\\work\\FantasyNetTest\\FantasyNetTest\\Form1.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
+ "RelativeMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|solutionrelative:FantasyNetTest\\Form1.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
+ },
+ {
+ "AbsoluteMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|D:\\work\\FantasyNetTest\\fantasynettest\\form1.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}|Form",
+ "RelativeMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|solutionrelative:fantasynettest\\form1.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}|Form"
+ },
+ {
+ "AbsoluteMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|D:\\work\\FantasyNetTest\\FantasyNetTest\\TestProtocol.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
+ "RelativeMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|solutionrelative:FantasyNetTest\\TestProtocol.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
+ },
+ {
+ "AbsoluteMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|D:\\work\\FantasyNetTest\\FantasyNetTest\\Config.json||{90A6B3A7-C1A3-4009-A288-E2FF89E96FA0}",
+ "RelativeMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|solutionrelative:FantasyNetTest\\Config.json||{90A6B3A7-C1A3-4009-A288-E2FF89E96FA0}"
+ },
+ {
+ "AbsoluteMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|D:\\work\\FantasyNetTest\\FantasyNetTest\\Log.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
+ "RelativeMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|solutionrelative:FantasyNetTest\\Log.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
+ }
+ ],
+ "DocumentGroupContainers": [
+ {
+ "Orientation": 0,
+ "VerticalTabListWidth": 256,
+ "DocumentGroups": [
+ {
+ "DockedWidth": 200,
+ "SelectedChildIndex": 0,
+ "Children": [
+ {
+ "$type": "Document",
+ "DocumentIndex": 0,
+ "Title": "Form1.cs",
+ "DocumentMoniker": "D:\\work\\FantasyNetTest\\FantasyNetTest\\Form1.cs",
+ "RelativeDocumentMoniker": "FantasyNetTest\\Form1.cs",
+ "ToolTip": "D:\\work\\FantasyNetTest\\FantasyNetTest\\Form1.cs",
+ "RelativeToolTip": "FantasyNetTest\\Form1.cs",
+ "ViewState": "AgIAACQAAAAAAAAAAAAgwHECAAAEAAAAAAAAAA==",
+ "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
+ "WhenOpened": "2025-08-10T14:06:30.336Z",
+ "EditorCaption": ""
+ },
+ {
+ "$type": "Document",
+ "DocumentIndex": 1,
+ "Title": "Form1.cs [\u8BBE\u8BA1]",
+ "DocumentMoniker": "D:\\work\\FantasyNetTest\\FantasyNetTest\\Form1.cs",
+ "RelativeDocumentMoniker": "FantasyNetTest\\Form1.cs",
+ "ToolTip": "D:\\myself\\Games\\FantasyNetTest\\FantasyNetTest\\Form1.cs [\u8BBE\u8BA1]",
+ "RelativeToolTip": "..\\..\\myself\\Games\\FantasyNetTest\\FantasyNetTest\\Form1.cs [\u8BBE\u8BA1]",
+ "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
+ "WhenOpened": "2025-08-10T11:09:51.154Z"
+ },
+ {
+ "$type": "Document",
+ "DocumentIndex": 2,
+ "Title": "TestProtocol.cs",
+ "DocumentMoniker": "D:\\work\\FantasyNetTest\\FantasyNetTest\\TestProtocol.cs",
+ "RelativeDocumentMoniker": "FantasyNetTest\\TestProtocol.cs",
+ "ToolTip": "D:\\work\\FantasyNetTest\\FantasyNetTest\\TestProtocol.cs",
+ "RelativeToolTip": "FantasyNetTest\\TestProtocol.cs",
+ "ViewState": "AQIAAAYAAAAAAAAAAADwvxcAAAAlAAAA",
+ "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
+ "WhenOpened": "2025-08-10T09:28:41.991Z"
+ },
+ {
+ "$type": "Document",
+ "DocumentIndex": 3,
+ "Title": "Config.json",
+ "DocumentMoniker": "D:\\work\\FantasyNetTest\\FantasyNetTest\\Config.json",
+ "RelativeDocumentMoniker": "FantasyNetTest\\Config.json",
+ "ToolTip": "D:\\work\\FantasyNetTest\\FantasyNetTest\\Config.json",
+ "RelativeToolTip": "FantasyNetTest\\Config.json",
+ "ViewState": "AQIAAAAAAAAAAAAAAAAAAAMAAAABAAAA",
+ "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.001642|",
+ "WhenOpened": "2025-08-10T07:28:50.344Z"
+ },
+ {
+ "$type": "Document",
+ "DocumentIndex": 4,
+ "Title": "Log.cs",
+ "DocumentMoniker": "D:\\work\\FantasyNetTest\\FantasyNetTest\\Log.cs",
+ "RelativeDocumentMoniker": "FantasyNetTest\\Log.cs",
+ "ToolTip": "D:\\work\\FantasyNetTest\\FantasyNetTest\\Log.cs",
+ "RelativeToolTip": "FantasyNetTest\\Log.cs",
+ "ViewState": "AQIAAEsAAAAAAAAAAAAYwB8AAAApAAAA",
+ "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
+ "WhenOpened": "2025-08-10T06:36:37.693Z"
+ }
+ ]
+ }
+ ]
+ }
+ ]
+}
\ No newline at end of file
diff --git a/.vs/FantasyNetTest/v17/DocumentLayout.json b/.vs/FantasyNetTest/v17/DocumentLayout.json
index 571a75a..ddb9cb5 100644
--- a/.vs/FantasyNetTest/v17/DocumentLayout.json
+++ b/.vs/FantasyNetTest/v17/DocumentLayout.json
@@ -1,25 +1,29 @@
{
"Version": 1,
- "WorkspaceRootPath": "D:\\myself\\Games\\FantasyNetTest\\",
+ "WorkspaceRootPath": "D:\\work\\FantasyNetTest\\",
"Documents": [
{
- "AbsoluteMoniker": "D:0:0:{812F24C9-1386-4A5F-AC1D-1840E28FA05D}|FantasyNetTest\\FantasyNetTest.csproj|d:\\myself\\games\\fantasynettest\\fantasynettest\\form1.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
+ "AbsoluteMoniker": "D:0:0:{812F24C9-1386-4A5F-AC1D-1840E28FA05D}|FantasyNetTest\\FantasyNetTest.csproj|d:\\work\\fantasynettest\\fantasynettest\\form1.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
"RelativeMoniker": "D:0:0:{812F24C9-1386-4A5F-AC1D-1840E28FA05D}|FantasyNetTest\\FantasyNetTest.csproj|solutionrelative:fantasynettest\\form1.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
},
{
- "AbsoluteMoniker": "D:0:0:{812F24C9-1386-4A5F-AC1D-1840E28FA05D}|FantasyNetTest\\FantasyNetTest.csproj|D:\\myself\\Games\\FantasyNetTest\\fantasynettest\\form1.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}|Form",
+ "AbsoluteMoniker": "D:0:0:{812F24C9-1386-4A5F-AC1D-1840E28FA05D}|FantasyNetTest\\FantasyNetTest.csproj|D:\\work\\FantasyNetTest\\fantasynettest\\form1.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}|Form",
"RelativeMoniker": "D:0:0:{812F24C9-1386-4A5F-AC1D-1840E28FA05D}|FantasyNetTest\\FantasyNetTest.csproj|solutionrelative:fantasynettest\\form1.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}|Form"
},
{
- "AbsoluteMoniker": "D:0:0:{812F24C9-1386-4A5F-AC1D-1840E28FA05D}|FantasyNetTest\\FantasyNetTest.csproj|d:\\myself\\games\\fantasynettest\\fantasynettest\\testprotocol.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
+ "AbsoluteMoniker": "D:0:0:{812F24C9-1386-4A5F-AC1D-1840E28FA05D}|FantasyNetTest\\FantasyNetTest.csproj|d:\\work\\fantasynettest\\fantasynettest\\form1.designer.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
+ "RelativeMoniker": "D:0:0:{812F24C9-1386-4A5F-AC1D-1840E28FA05D}|FantasyNetTest\\FantasyNetTest.csproj|solutionrelative:fantasynettest\\form1.designer.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
+ },
+ {
+ "AbsoluteMoniker": "D:0:0:{812F24C9-1386-4A5F-AC1D-1840E28FA05D}|FantasyNetTest\\FantasyNetTest.csproj|d:\\work\\fantasynettest\\fantasynettest\\testprotocol.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
"RelativeMoniker": "D:0:0:{812F24C9-1386-4A5F-AC1D-1840E28FA05D}|FantasyNetTest\\FantasyNetTest.csproj|solutionrelative:fantasynettest\\testprotocol.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
},
{
- "AbsoluteMoniker": "D:0:0:{812F24C9-1386-4A5F-AC1D-1840E28FA05D}|FantasyNetTest\\FantasyNetTest.csproj|d:\\myself\\games\\fantasynettest\\fantasynettest\\config.json||{90A6B3A7-C1A3-4009-A288-E2FF89E96FA0}",
+ "AbsoluteMoniker": "D:0:0:{812F24C9-1386-4A5F-AC1D-1840E28FA05D}|FantasyNetTest\\FantasyNetTest.csproj|d:\\work\\fantasynettest\\fantasynettest\\config.json||{90A6B3A7-C1A3-4009-A288-E2FF89E96FA0}",
"RelativeMoniker": "D:0:0:{812F24C9-1386-4A5F-AC1D-1840E28FA05D}|FantasyNetTest\\FantasyNetTest.csproj|solutionrelative:fantasynettest\\config.json||{90A6B3A7-C1A3-4009-A288-E2FF89E96FA0}"
},
{
- "AbsoluteMoniker": "D:0:0:{812F24C9-1386-4A5F-AC1D-1840E28FA05D}|FantasyNetTest\\FantasyNetTest.csproj|d:\\myself\\games\\fantasynettest\\fantasynettest\\log.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
+ "AbsoluteMoniker": "D:0:0:{812F24C9-1386-4A5F-AC1D-1840E28FA05D}|FantasyNetTest\\FantasyNetTest.csproj|d:\\work\\fantasynettest\\fantasynettest\\log.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
"RelativeMoniker": "D:0:0:{812F24C9-1386-4A5F-AC1D-1840E28FA05D}|FantasyNetTest\\FantasyNetTest.csproj|solutionrelative:fantasynettest\\log.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
}
],
@@ -30,17 +34,30 @@
"DocumentGroups": [
{
"DockedWidth": 200,
- "SelectedChildIndex": 0,
+ "SelectedChildIndex": 1,
"Children": [
+ {
+ "$type": "Document",
+ "DocumentIndex": 2,
+ "Title": "Form1.Designer.cs",
+ "DocumentMoniker": "D:\\work\\FantasyNetTest\\FantasyNetTest\\Form1.Designer.cs",
+ "RelativeDocumentMoniker": "FantasyNetTest\\Form1.Designer.cs",
+ "ToolTip": "D:\\work\\FantasyNetTest\\FantasyNetTest\\Form1.Designer.cs",
+ "RelativeToolTip": "FantasyNetTest\\Form1.Designer.cs",
+ "ViewState": "AgIAAIwAAAAAAAAAAAAiwLoAAAASAAAAAAAAAA==",
+ "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
+ "WhenOpened": "2025-08-11T09:04:01.709Z",
+ "EditorCaption": ""
+ },
{
"$type": "Document",
"DocumentIndex": 0,
"Title": "Form1.cs",
- "DocumentMoniker": "D:\\myself\\Games\\FantasyNetTest\\FantasyNetTest\\Form1.cs",
+ "DocumentMoniker": "D:\\work\\FantasyNetTest\\FantasyNetTest\\Form1.cs",
"RelativeDocumentMoniker": "FantasyNetTest\\Form1.cs",
- "ToolTip": "D:\\myself\\Games\\FantasyNetTest\\FantasyNetTest\\Form1.cs",
+ "ToolTip": "D:\\work\\FantasyNetTest\\FantasyNetTest\\Form1.cs",
"RelativeToolTip": "FantasyNetTest\\Form1.cs",
- "ViewState": "AQIAAGcCAAAAAAAAAAAiwHUCAAAAAAAA",
+ "ViewState": "AgIAADkAAAAAAAAAAAAgwPcCAAARAAAAAAAAAA==",
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
"WhenOpened": "2025-08-10T14:06:30.336Z",
"EditorCaption": ""
@@ -49,9 +66,9 @@
"$type": "Document",
"DocumentIndex": 1,
"Title": "Form1.cs [\u8BBE\u8BA1]",
- "DocumentMoniker": "D:\\myself\\Games\\FantasyNetTest\\FantasyNetTest\\Form1.cs",
+ "DocumentMoniker": "D:\\work\\FantasyNetTest\\FantasyNetTest\\Form1.cs",
"RelativeDocumentMoniker": "FantasyNetTest\\Form1.cs",
- "ToolTip": "D:\\myself\\Games\\FantasyNetTest\\FantasyNetTest\\Form1.cs [\u8BBE\u8BA1]",
+ "ToolTip": "D:\\work\\FantasyNetTest\\FantasyNetTest\\Form1.cs [\u8BBE\u8BA1]",
"RelativeToolTip": "FantasyNetTest\\Form1.cs [\u8BBE\u8BA1]",
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
"WhenOpened": "2025-08-10T11:09:51.154Z",
@@ -59,23 +76,24 @@
},
{
"$type": "Document",
- "DocumentIndex": 2,
+ "DocumentIndex": 3,
"Title": "TestProtocol.cs",
- "DocumentMoniker": "D:\\myself\\Games\\FantasyNetTest\\FantasyNetTest\\TestProtocol.cs",
+ "DocumentMoniker": "D:\\work\\FantasyNetTest\\FantasyNetTest\\TestProtocol.cs",
"RelativeDocumentMoniker": "FantasyNetTest\\TestProtocol.cs",
- "ToolTip": "D:\\myself\\Games\\FantasyNetTest\\FantasyNetTest\\TestProtocol.cs",
+ "ToolTip": "D:\\work\\FantasyNetTest\\FantasyNetTest\\TestProtocol.cs",
"RelativeToolTip": "FantasyNetTest\\TestProtocol.cs",
- "ViewState": "AQIAAAYAAAAAAAAAAADwvxcAAAAlAAAA",
+ "ViewState": "AgIAAAYAAAAAAAAAAADwvxcAAAAlAAAAAAAAAA==",
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
- "WhenOpened": "2025-08-10T09:28:41.991Z"
+ "WhenOpened": "2025-08-10T09:28:41.991Z",
+ "EditorCaption": ""
},
{
"$type": "Document",
- "DocumentIndex": 3,
+ "DocumentIndex": 4,
"Title": "Config.json",
- "DocumentMoniker": "D:\\myself\\Games\\FantasyNetTest\\FantasyNetTest\\Config.json",
+ "DocumentMoniker": "D:\\work\\FantasyNetTest\\FantasyNetTest\\Config.json",
"RelativeDocumentMoniker": "FantasyNetTest\\Config.json",
- "ToolTip": "D:\\myself\\Games\\FantasyNetTest\\FantasyNetTest\\Config.json",
+ "ToolTip": "D:\\work\\FantasyNetTest\\FantasyNetTest\\Config.json",
"RelativeToolTip": "FantasyNetTest\\Config.json",
"ViewState": "AQIAAAAAAAAAAAAAAAAAAAMAAAABAAAA",
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.001642|",
@@ -83,11 +101,11 @@
},
{
"$type": "Document",
- "DocumentIndex": 4,
+ "DocumentIndex": 5,
"Title": "Log.cs",
- "DocumentMoniker": "D:\\myself\\Games\\FantasyNetTest\\FantasyNetTest\\Log.cs",
+ "DocumentMoniker": "D:\\work\\FantasyNetTest\\FantasyNetTest\\Log.cs",
"RelativeDocumentMoniker": "FantasyNetTest\\Log.cs",
- "ToolTip": "D:\\myself\\Games\\FantasyNetTest\\FantasyNetTest\\Log.cs",
+ "ToolTip": "D:\\work\\FantasyNetTest\\FantasyNetTest\\Log.cs",
"RelativeToolTip": "FantasyNetTest\\Log.cs",
"ViewState": "AQIAAEsAAAAAAAAAAAAYwB8AAAApAAAA",
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
diff --git a/.vs/ProjectEvaluation/fantasynettest.metadata.v7.bin b/.vs/ProjectEvaluation/fantasynettest.metadata.v7.bin
deleted file mode 100644
index 320df57..0000000
Binary files a/.vs/ProjectEvaluation/fantasynettest.metadata.v7.bin and /dev/null differ
diff --git a/.vs/ProjectEvaluation/fantasynettest.metadata.v9.bin b/.vs/ProjectEvaluation/fantasynettest.metadata.v9.bin
new file mode 100644
index 0000000..6874a73
Binary files /dev/null and b/.vs/ProjectEvaluation/fantasynettest.metadata.v9.bin differ
diff --git a/.vs/ProjectEvaluation/fantasynettest.projects.v7.bin b/.vs/ProjectEvaluation/fantasynettest.projects.v7.bin
deleted file mode 100644
index a5ded59..0000000
Binary files a/.vs/ProjectEvaluation/fantasynettest.projects.v7.bin and /dev/null differ
diff --git a/.vs/ProjectEvaluation/fantasynettest.projects.v9.bin b/.vs/ProjectEvaluation/fantasynettest.projects.v9.bin
new file mode 100644
index 0000000..0e66dce
Binary files /dev/null and b/.vs/ProjectEvaluation/fantasynettest.projects.v9.bin differ
diff --git a/.vs/ProjectEvaluation/fantasynettest.strings.v9.bin b/.vs/ProjectEvaluation/fantasynettest.strings.v9.bin
new file mode 100644
index 0000000..be8fb96
Binary files /dev/null and b/.vs/ProjectEvaluation/fantasynettest.strings.v9.bin differ
diff --git a/FantasyNetTest.sln.DotSettings.user b/FantasyNetTest.sln.DotSettings.user
index a434953..059cde6 100644
--- a/FantasyNetTest.sln.DotSettings.user
+++ b/FantasyNetTest.sln.DotSettings.user
@@ -1,8 +1,11 @@
+ ForceIncluded
ForceIncluded
ForceIncluded
ForceIncluded
ForceIncluded
+ ForceIncluded
+ ForceIncluded
ForceIncluded
ForceIncluded
True
diff --git a/FantasyNetTest/Config.cs b/FantasyNetTest/Config.cs
index ff025b3..ff99784 100644
--- a/FantasyNetTest/Config.cs
+++ b/FantasyNetTest/Config.cs
@@ -13,13 +13,13 @@ public class Config
///
public int Heartbeat { get; set; } = 5;
- ///
- /// 默认账号
- ///
- public string Account { get; set; } = "";
-
///
/// 协议目录
///
public string ProtocolScriptPath { get; set; } = "";
+
+ ///
+ /// 缓存账号列表
+ ///
+ public HashSet Accounts { get; set; } = [];
}
\ No newline at end of file
diff --git a/FantasyNetTest/Config.json b/FantasyNetTest/Config.json
index c47c2dd..9dde6ee 100644
--- a/FantasyNetTest/Config.json
+++ b/FantasyNetTest/Config.json
@@ -1,6 +1,5 @@
{
"Server": "127.0.0.1:20001",
"Heartbeat": 5,
- "ProtocolScriptPath": "D:\\myself\\Games\\Fishing2\\Assets\\Scripts\\Generate",
- "Account": "test003"
+ "ProtocolScriptPath": "D:\\work\\Fishing2\\Assets\\Scripts\\Generate"
}
\ No newline at end of file
diff --git a/FantasyNetTest/Form1.Designer.cs b/FantasyNetTest/Form1.Designer.cs
index b99b35d..ab9aeb2 100644
--- a/FantasyNetTest/Form1.Designer.cs
+++ b/FantasyNetTest/Form1.Designer.cs
@@ -35,7 +35,7 @@ partial class Form1
logTextBox = new RichTextBox();
groupBox1 = new GroupBox();
buttonConnect = new Button();
- textBoxAccount = new TextBox();
+ comboBoxAccount = new ComboBox();
groupBox2 = new GroupBox();
panel1 = new Panel();
buttonSend = new Button();
@@ -43,6 +43,7 @@ partial class Form1
groupBox3 = new GroupBox();
comboBoxProtocol = new ComboBox();
timer2 = new System.Windows.Forms.Timer(components);
+ linkLabel2 = new LinkLabel();
groupBox4.SuspendLayout();
groupBox1.SuspendLayout();
groupBox2.SuspendLayout();
@@ -87,7 +88,7 @@ partial class Form1
// groupBox1
//
groupBox1.Controls.Add(buttonConnect);
- groupBox1.Controls.Add(textBoxAccount);
+ groupBox1.Controls.Add(comboBoxAccount);
groupBox1.Location = new Point(7, 7);
groupBox1.Name = "groupBox1";
groupBox1.Size = new Size(316, 62);
@@ -97,20 +98,21 @@ partial class Form1
//
// buttonConnect
//
- buttonConnect.Location = new Point(235, 23);
+ buttonConnect.Location = new Point(235, 22);
buttonConnect.Name = "buttonConnect";
- buttonConnect.Size = new Size(75, 23);
+ buttonConnect.Size = new Size(75, 26);
buttonConnect.TabIndex = 2;
buttonConnect.Text = "登录";
buttonConnect.UseVisualStyleBackColor = true;
buttonConnect.Click += buttonConnect_Click;
//
- // textBoxAccount
+ // comboBoxAccount
//
- textBoxAccount.Location = new Point(10, 23);
- textBoxAccount.Name = "textBoxAccount";
- textBoxAccount.Size = new Size(219, 23);
- textBoxAccount.TabIndex = 0;
+ comboBoxAccount.FormattingEnabled = true;
+ comboBoxAccount.Location = new Point(10, 23);
+ comboBoxAccount.Name = "comboBoxAccount";
+ comboBoxAccount.Size = new Size(219, 25);
+ comboBoxAccount.TabIndex = 0;
//
// groupBox2
//
@@ -150,6 +152,7 @@ partial class Form1
// groupBox3
//
groupBox3.Controls.Add(comboBoxProtocol);
+ groupBox3.Controls.Add(linkLabel2);
groupBox3.Location = new Point(7, 75);
groupBox3.Name = "groupBox3";
groupBox3.Size = new Size(316, 64);
@@ -171,6 +174,19 @@ partial class Form1
timer2.Interval = 16;
timer2.Tick += timer2_Tick;
//
+ // linkLabel2
+ //
+ linkLabel2.AutoSize = true;
+ linkLabel2.LinkBehavior = LinkBehavior.NeverUnderline;
+ linkLabel2.LinkColor = Color.Black;
+ linkLabel2.Location = new Point(295, 13);
+ linkLabel2.Name = "linkLabel2";
+ linkLabel2.Size = new Size(16, 17);
+ linkLabel2.TabIndex = 3;
+ linkLabel2.TabStop = true;
+ linkLabel2.Text = "R";
+ linkLabel2.LinkClicked += linkLabel2_LinkClicked;
+ //
// Form1
//
AutoScaleDimensions = new SizeF(7F, 17F);
@@ -186,9 +202,9 @@ partial class Form1
groupBox4.ResumeLayout(false);
groupBox4.PerformLayout();
groupBox1.ResumeLayout(false);
- groupBox1.PerformLayout();
groupBox2.ResumeLayout(false);
groupBox3.ResumeLayout(false);
+ groupBox3.PerformLayout();
ResumeLayout(false);
}
@@ -198,13 +214,15 @@ partial class Form1
private GroupBox groupBox2;
private GroupBox groupBox4;
private RichTextBox logTextBox;
- private TextBox textBoxAccount;
+ // private TextBox textBoxAccount;
private Button buttonConnect;
private Button buttonSend;
private System.Windows.Forms.Timer timer1;
private LinkLabel linkLabel1;
private GroupBox groupBox3;
private ComboBox comboBoxProtocol;
+ private ComboBox comboBoxAccount;
private Panel panel1;
private System.Windows.Forms.Timer timer2;
+ private LinkLabel linkLabel2;
}
\ No newline at end of file
diff --git a/FantasyNetTest/Form1.cs b/FantasyNetTest/Form1.cs
index 57d0849..726dcdb 100644
--- a/FantasyNetTest/Form1.cs
+++ b/FantasyNetTest/Form1.cs
@@ -25,7 +25,7 @@ public partial class Form1 : Form
private Scene _scene;
- private string PathRoot;
+ private string _nowAccount;
public Form1()
{
@@ -38,7 +38,11 @@ public partial class Form1 : Form
comboBoxProtocol.DropDownStyle = ComboBoxStyle.DropDownList;
_config ??= new Config();
LoadConfig();
- textBoxAccount.Text = _config.Account;
+
+ if (_config.Accounts.Count > 0)
+ {
+ comboBoxAccount.Text = _config.Accounts.First();
+ }
_scriptLoader = new ScriptLoader();
@@ -128,7 +132,6 @@ public partial class Form1 : Form
#endregion
-
#region 登录
private Session? _session;
@@ -293,7 +296,6 @@ public partial class Form1 : Form
#endregion
-
#region Config
private void LoadConfig()
@@ -305,7 +307,6 @@ public partial class Form1 : Form
var cfg = JsonSerializer.Deserialize(jsonContent);
if (cfg != null)
{
- _config.Account = cfg.Account;
_config.Server = cfg.Server;
_config.Heartbeat = cfg.Heartbeat;
_config.ProtocolScriptPath = cfg.ProtocolScriptPath;
@@ -315,7 +316,8 @@ public partial class Form1 : Form
private void SaveConfig()
{
- _config.Account = textBoxAccount.Text;
+ var account = comboBoxAccount.Text;
+ _config.Accounts.Add(account);
var configPath = Path.Combine(Application.StartupPath, "Config.json");
var json = JsonSerializer.Serialize(_config);
File.WriteAllText(configPath, json);
@@ -354,7 +356,6 @@ public partial class Form1 : Form
var index = comboBox.SelectedIndex;
var proto = comboBox.SelectedItem?.ToString();
- Log.Info($"选中协议:{proto} Index={index}");
SelectedProtocol(_allRequest[index]);
}
@@ -381,7 +382,6 @@ public partial class Form1 : Form
// 清除现有控件
containerPanel.Controls.Clear();
-
// 创建TableLayoutPanel
var tablePanel = new TableLayoutPanel
{
@@ -421,7 +421,6 @@ public partial class Form1 : Form
// 设置固定的行高
int rowHeight = 30; // 每行固定高度
-
// 添加属性和值输入框
for (int i = 0; i < properties.Length; i++)
{
@@ -626,7 +625,9 @@ public partial class Form1 : Form
#region 协议内存缓存和加载
- private string ProtocolPathPath = Path.Combine(Application.StartupPath, "Protocol");
+ private string ProtocolPathPath => string.IsNullOrEmpty(_nowAccount)
+ ? Path.Combine(Application.StartupPath, "Protocol")
+ : Path.Combine(Application.StartupPath, _nowAccount, "Protocol");
private void CacheProtocol(object obj)
{
@@ -710,16 +711,17 @@ public partial class Form1 : Form
private void buttonConnect_Click(object sender, EventArgs e)
{
+ _nowAccount = comboBoxAccount.Text;
if (_session == null)
{
- if (string.IsNullOrEmpty(textBoxAccount.Text))
+ if (string.IsNullOrEmpty(comboBoxAccount.Text))
{
Log.Error("未输入账号");
return;
}
//登录
- OnLoginButtonClick(textBoxAccount.Text).Coroutine();
+ OnLoginButtonClick(comboBoxAccount.Text).Coroutine();
SwitchLoginButtonState();
}
else
@@ -753,5 +755,10 @@ public partial class Form1 : Form
}
}
+ private void linkLabel2_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
+ {
+ Log.Info("重新加载协议");
+ }
+
#endregion
}
\ No newline at end of file
diff --git a/FantasyNetTest/Form1.resx b/FantasyNetTest/Form1.resx
index ef1a3ec..ccdd4a3 100644
--- a/FantasyNetTest/Form1.resx
+++ b/FantasyNetTest/Form1.resx
@@ -1,7 +1,7 @@