Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Sign in / Register
Toggle navigation
Y
ygopro2
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Locked Files
Issues
1
Issues
1
List
Boards
Labels
Service Desk
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Security & Compliance
Security & Compliance
Dependency List
License Compliance
Packages
Packages
List
Container Registry
Analytics
Analytics
CI / CD
Code Review
Insights
Issues
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
hex
ygopro2
Commits
9e5a0496
Commit
9e5a0496
authored
Jul 07, 2025
by
hex
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
refactor tcphelper
parent
eea918a9
Pipeline
#38649
failed
Changes
13
Pipelines
1
Expand all
Show whitespace changes
Inline
Side-by-side
Showing
13 changed files
with
872 additions
and
83 deletions
+872
-83
Assets/SibylSystem/Book/Book.cs
Assets/SibylSystem/Book/Book.cs
+1
-1
Assets/SibylSystem/Menu/Menu.cs
Assets/SibylSystem/Menu/Menu.cs
+1
-1
Assets/SibylSystem/MonoHelpers/GameMessageQueue.cs
Assets/SibylSystem/MonoHelpers/GameMessageQueue.cs
+120
-0
Assets/SibylSystem/MonoHelpers/GameRecordManager.cs
Assets/SibylSystem/MonoHelpers/GameRecordManager.cs
+133
-0
Assets/SibylSystem/MonoHelpers/TcpHelperAsync.cs
Assets/SibylSystem/MonoHelpers/TcpHelperAsync.cs
+487
-0
Assets/SibylSystem/MonoHelpers/TcpHelperTest.cs
Assets/SibylSystem/MonoHelpers/TcpHelperTest.cs
+73
-0
Assets/SibylSystem/MyCard/MyCard.cs
Assets/SibylSystem/MyCard/MyCard.cs
+3
-6
Assets/SibylSystem/Ocgcore/Ocgcore.cs
Assets/SibylSystem/Ocgcore/Ocgcore.cs
+20
-33
Assets/SibylSystem/Program.cs
Assets/SibylSystem/Program.cs
+3
-3
Assets/SibylSystem/Room/Room.cs
Assets/SibylSystem/Room/Room.cs
+23
-23
Assets/SibylSystem/precy.cs
Assets/SibylSystem/precy.cs
+1
-1
Assets/SibylSystem/selectReplay/selectReplay.cs
Assets/SibylSystem/selectReplay/selectReplay.cs
+4
-4
Assets/SibylSystem/selectServer/SelectServer.cs
Assets/SibylSystem/selectServer/SelectServer.cs
+3
-11
No files found.
Assets/SibylSystem/Book/Book.cs
View file @
9e5a0496
...
@@ -97,7 +97,7 @@ public class Book : WindowServant2D
...
@@ -97,7 +97,7 @@ public class Book : WindowServant2D
{
{
deckString
=
""
;
deckString
=
""
;
master
=
new
MultiStringMaster
();
master
=
new
MultiStringMaster
();
foreach
(
var
item
in
TcpHelper
.
d
eckStrings
)
foreach
(
var
item
in
TcpHelper
Async
.
D
eckStrings
)
{
{
master
.
Add
(
item
);
master
.
Add
(
item
);
}
}
...
...
Assets/SibylSystem/Menu/Menu.cs
View file @
9e5a0496
...
@@ -97,7 +97,7 @@ public class Menu : WindowServantSP
...
@@ -97,7 +97,7 @@ public class Menu : WindowServantSP
{
{
Program
.
I
().
quit
();
Program
.
I
().
quit
();
Program
.
Running
=
false
;
Program
.
Running
=
false
;
TcpHelp
er
.
SaveRecord
();
GameRecordManag
er
.
SaveRecord
();
#if !UNITY_EDITOR && (UNITY_ANDROID || UNITY_IPHONE) // IL2CPP 使用此方法才能退出
#if !UNITY_EDITOR && (UNITY_ANDROID || UNITY_IPHONE) // IL2CPP 使用此方法才能退出
Application
.
Quit
();
Application
.
Quit
();
#else
#else
...
...
Assets/SibylSystem/MonoHelpers/GameMessageQueue.cs
0 → 100644
View file @
9e5a0496
using
System
;
using
System.Collections.Concurrent
;
using
UnityEngine
;
using
YGOSharp.Network.Enums
;
public
class
GameMessage
{
public
CtosMessage
MessageType
{
get
;
set
;
}
public
object
Data
{
get
;
set
;
}
public
Action
<
bool
>
OnComplete
{
get
;
set
;
}
public
GameMessage
(
CtosMessage
messageType
,
object
data
=
null
,
Action
<
bool
>
onComplete
=
null
)
{
MessageType
=
messageType
;
Data
=
data
;
OnComplete
=
onComplete
;
}
}
public
static
class
GameMessageQueue
{
private
static
readonly
ConcurrentQueue
<
GameMessage
>
_messageQueue
=
new
ConcurrentQueue
<
GameMessage
>();
public
static
void
Enqueue
(
GameMessage
message
)
{
_messageQueue
.
Enqueue
(
message
);
Debug
.
Log
(
$"[GameMessageQueue] Enqueued message:
{
message
.
MessageType
}
"
);
}
public
static
bool
TryDequeue
(
out
GameMessage
message
)
{
return
_messageQueue
.
TryDequeue
(
out
message
);
}
// 便捷方法
public
static
void
SendResponse
(
byte
[]
response
)
{
Enqueue
(
new
GameMessage
(
CtosMessage
.
Response
,
response
));
}
public
static
void
SendChat
(
string
text
)
{
Enqueue
(
new
GameMessage
(
CtosMessage
.
Chat
,
text
));
}
public
static
void
SendSurrender
()
{
Enqueue
(
new
GameMessage
(
CtosMessage
.
Surrender
));
}
public
static
void
SendHandResult
(
int
result
)
{
Enqueue
(
new
GameMessage
(
CtosMessage
.
HandResult
,
result
));
}
public
static
void
SendTpResult
(
bool
tp
)
{
Enqueue
(
new
GameMessage
(
CtosMessage
.
TpResult
,
tp
));
}
public
static
void
SendUpdateDeck
(
YGOSharp
.
Deck
deck
)
{
Enqueue
(
new
GameMessage
(
CtosMessage
.
UpdateDeck
,
deck
));
}
public
static
void
SendLeaveGame
()
{
Enqueue
(
new
GameMessage
(
CtosMessage
.
LeaveGame
));
}
public
static
void
SendTimeConfirm
()
{
Enqueue
(
new
GameMessage
(
CtosMessage
.
TimeConfirm
));
}
public
static
void
SendHsToDuelist
()
{
Enqueue
(
new
GameMessage
(
CtosMessage
.
HsToDuelist
));
}
public
static
void
SendHsToObserver
()
{
Enqueue
(
new
GameMessage
(
CtosMessage
.
HsToObserver
));
}
public
static
void
SendHsReady
()
{
Enqueue
(
new
GameMessage
(
CtosMessage
.
HsReady
));
}
public
static
void
SendHsNotReady
()
{
Enqueue
(
new
GameMessage
(
CtosMessage
.
HsNotReady
));
}
public
static
void
SendHsKick
(
int
position
)
{
Enqueue
(
new
GameMessage
(
CtosMessage
.
HsKick
,
position
));
}
public
static
void
SendHsStart
()
{
Enqueue
(
new
GameMessage
(
CtosMessage
.
HsStart
));
}
public
static
void
SendExternalAddress
(
string
hostname
)
{
Enqueue
(
new
GameMessage
(
CtosMessage
.
ExternalAddress
,
hostname
));
}
public
static
void
SendPlayerInfo
(
string
name
)
{
Enqueue
(
new
GameMessage
(
CtosMessage
.
PlayerInfo
,
name
));
}
public
static
void
SendJoinGame
(
string
password
,
string
version
=
null
)
{
Enqueue
(
new
GameMessage
(
CtosMessage
.
JoinGame
,
new
{
password
,
version
}));
}
}
\ No newline at end of file
Assets/SibylSystem/MonoHelpers/GameRecordManager.cs
0 → 100644
View file @
9e5a0496
using
System
;
using
System.Collections.Generic
;
using
System.IO
;
using
UnityEngine
;
using
YGOSharp.OCGWrapper.Enums
;
public
static
class
GameRecordManager
{
private
static
readonly
List
<
Package
>
_packagesInRecord
=
new
List
<
Package
>();
public
static
string
LastRecordName
{
get
;
private
set
;
}
=
""
;
public
static
void
AddRecordLine
(
Package
package
)
{
if
(
Program
.
I
().
ocgcore
.
condition
!=
Ocgcore
.
Condition
.
record
)
{
_packagesInRecord
.
Add
(
package
);
}
}
public
static
void
SaveRecord
()
{
try
{
if
(
_packagesInRecord
.
Count
>
10
)
{
bool
shouldWrite
=
false
;
int
startIndex
=
0
;
int
currentIndex
=
0
;
foreach
(
var
package
in
_packagesInRecord
)
{
currentIndex
++;
try
{
if
(
package
.
Fuction
==
(
int
)
GameMessage
.
Start
||
package
.
Fuction
==
(
int
)
GameMessage
.
ReloadField
)
{
shouldWrite
=
true
;
startIndex
=
currentIndex
;
}
}
catch
(
Exception
e
)
{
Debug
.
LogError
(
$"[GameRecordManager] Error processing package:
{
e
.
Message
}
"
);
}
}
if
(
shouldWrite
)
{
if
(
startIndex
>
_packagesInRecord
.
Count
)
{
startIndex
=
_packagesInRecord
.
Count
;
}
_packagesInRecord
.
Insert
(
startIndex
,
Program
.
I
().
ocgcore
.
getNamePacket
());
LastRecordName
=
UIHelper
.
getTimeString
();
string
replayPath
=
"replay/"
+
LastRecordName
+
".yrp3d"
;
using
(
var
stream
=
File
.
Create
(
replayPath
))
using
(
var
writer
=
new
BinaryWriter
(
stream
))
{
foreach
(
var
package
in
_packagesInRecord
)
{
writer
.
Write
((
byte
)
package
.
Fuction
);
writer
.
Write
((
uint
)
package
.
Data
.
getLength
());
writer
.
Write
(
package
.
Data
.
get
());
}
stream
.
Flush
();
}
Debug
.
Log
(
$"[GameRecordManager] Record saved:
{
replayPath
}
"
);
}
}
_packagesInRecord
.
Clear
();
}
catch
(
Exception
e
)
{
Debug
.
LogError
(
$"[GameRecordManager] Error saving record:
{
e
.
Message
}
"
);
}
}
public
static
void
ClearRecord
()
{
_packagesInRecord
.
Clear
();
Debug
.
Log
(
"[GameRecordManager] Record cleared"
);
}
public
static
List
<
Package
>
ReadPackagesFromRecord
(
string
path
)
{
Debug
.
Log
(
$"[GameRecordManager] Reading record from:
{
path
}
"
);
List
<
Package
>
packages
=
new
List
<
Package
>();
try
{
byte
[]
data
=
File
.
ReadAllBytes
(
path
);
packages
=
ParsePackages
(
data
);
}
catch
(
Exception
e
)
{
Debug
.
LogError
(
$"[GameRecordManager] Error reading record:
{
e
.
Message
}
"
);
}
return
packages
;
}
public
static
List
<
Package
>
ParsePackages
(
byte
[]
buffer
)
{
List
<
Package
>
packages
=
new
List
<
Package
>();
try
{
using
(
var
reader
=
new
BinaryReader
(
new
MemoryStream
(
buffer
)))
{
while
(
reader
.
BaseStream
.
Position
<
reader
.
BaseStream
.
Length
)
{
Package
package
=
new
Package
();
package
.
Fuction
=
reader
.
ReadByte
();
uint
dataLength
=
reader
.
ReadUInt32
();
package
.
Data
=
new
BinaryMaster
(
reader
.
ReadBytes
((
int
)
dataLength
));
packages
.
Add
(
package
);
}
}
}
catch
(
Exception
e
)
{
Debug
.
LogError
(
$"[GameRecordManager] Error parsing packages:
{
e
.
Message
}
"
);
}
return
packages
;
}
}
\ No newline at end of file
Assets/SibylSystem/MonoHelpers/TcpHelperAsync.cs
0 → 100644
View file @
9e5a0496
This diff is collapsed.
Click to expand it.
Assets/SibylSystem/MonoHelpers/TcpHelperTest.cs
0 → 100644
View file @
9e5a0496
using
UnityEngine
;
public
class
TcpHelperTest
:
MonoBehaviour
{
void
Start
()
{
// 测试连接状态
Debug
.
Log
(
$"[Test] Initial state:
{
TcpHelperAsync
.
CurrentState
}
"
);
Debug
.
Log
(
$"[Test] Is connected:
{
TcpHelperAsync
.
IsConnected
}
"
);
// 测试消息队列
GameMessageQueue
.
SendChat
(
"Test message from queue"
);
Debug
.
Log
(
"[Test] Message queued successfully"
);
// 测试事件订阅
TcpHelperAsync
.
OnStateChanged
+=
OnConnectionStateChanged
;
TcpHelperAsync
.
OnConnected
+=
OnConnected
;
TcpHelperAsync
.
OnDisconnected
+=
OnDisconnected
;
TcpHelperAsync
.
OnError
+=
OnError
;
Debug
.
Log
(
"[Test] Event handlers registered"
);
}
void
Update
()
{
// 在主线程处理消息
TcpHelperAsync
.
ProcessMessages
();
}
void
OnDestroy
()
{
// 清理事件订阅
TcpHelperAsync
.
OnStateChanged
-=
OnConnectionStateChanged
;
TcpHelperAsync
.
OnConnected
-=
OnConnected
;
TcpHelperAsync
.
OnDisconnected
-=
OnDisconnected
;
TcpHelperAsync
.
OnError
-=
OnError
;
}
private
void
OnConnectionStateChanged
(
ConnectionState
newState
)
{
Debug
.
Log
(
$"[Test] Connection state changed to:
{
newState
}
"
);
}
private
void
OnConnected
()
{
Debug
.
Log
(
"[Test] Connected successfully!"
);
}
private
void
OnDisconnected
()
{
Debug
.
Log
(
"[Test] Disconnected"
);
}
private
void
OnError
(
System
.
Exception
error
)
{
Debug
.
LogError
(
$"[Test] Connection error:
{
error
.
Message
}
"
);
}
// 测试连接方法
[
ContextMenu
(
"Test Connection"
)]
public
async
void
TestConnection
()
{
bool
success
=
await
TcpHelperAsync
.
ConnectAsync
(
"127.0.0.1"
,
"TestUser"
,
"7911"
,
"TestRoom"
,
"0x1340"
);
Debug
.
Log
(
$"[Test] Connection result:
{
success
}
"
);
}
[
ContextMenu
(
"Test Disconnect"
)]
public
void
TestDisconnect
()
{
TcpHelperAsync
.
Disconnect
();
Debug
.
Log
(
"[Test] Disconnect called"
);
}
}
\ No newline at end of file
Assets/SibylSystem/MyCard/MyCard.cs
View file @
9e5a0496
...
@@ -54,15 +54,12 @@ public class MyCard : WindowServantSP
...
@@ -54,15 +54,12 @@ public class MyCard : WindowServantSP
void
onClickExit
()
void
onClickExit
()
{
{
Program
.
I
().
shiftToServant
(
Program
.
I
().
menu
);
Program
.
I
().
shiftToServant
(
Program
.
I
().
menu
);
if
(
TcpHelper
.
tcpClient
!=
null
)
if
(
TcpHelper
Async
.
IsConnected
)
{
{
if
(
isRequesting
)
{
if
(
isRequesting
)
{
terminateThread
();
terminateThread
();
}
}
if
(
TcpHelper
.
tcpClient
.
Connected
)
TcpHelperAsync
.
Disconnect
();
{
TcpHelper
.
tcpClient
.
Close
();
}
}
}
}
}
...
@@ -95,7 +92,7 @@ public class MyCard : WindowServantSP
...
@@ -95,7 +92,7 @@ public class MyCard : WindowServantSP
Program
.
PrintToChat
(
InterString
.
Get
(
"匹配成功。正在进入房间。"
));
Program
.
PrintToChat
(
InterString
.
Get
(
"匹配成功。正在进入房间。"
));
this
.
isMatching
=
true
;
this
.
isMatching
=
true
;
(
new
Thread
(()
=>
{
TcpHelper
.
join
(
matchResultObject
.
address
,
mycardHelper
.
username
,
matchResultObject
.
port
.
ToString
(),
matchResultObject
.
password
,
"0x"
+
String
.
Format
(
"{0:X}"
,
Config
.
ClientVersion
));
})).
Start
(
);
_
=
TcpHelperAsync
.
ConnectAsync
(
matchResultObject
.
address
,
mycardHelper
.
username
,
matchResultObject
.
port
.
ToString
(),
matchResultObject
.
password
,
"0x"
+
String
.
Format
(
"{0:X}"
,
Config
.
ClientVersion
)
);
isRequesting
=
false
;
isRequesting
=
false
;
}
catch
(
Exception
e
)
{
}
catch
(
Exception
e
)
{
if
(
e
.
GetType
()
!=
typeof
(
ThreadAbortException
))
{
if
(
e
.
GetType
()
!=
typeof
(
ThreadAbortException
))
{
...
...
Assets/SibylSystem/Ocgcore/Ocgcore.cs
View file @
9e5a0496
...
@@ -794,7 +794,7 @@ public class Ocgcore : ServantWithCardDescription
...
@@ -794,7 +794,7 @@ public class Ocgcore : ServantWithCardDescription
public
void
returnTo
()
public
void
returnTo
()
{
{
TcpHelp
er
.
SaveRecord
();
GameRecordManag
er
.
SaveRecord
();
if
(
returnServant
!=
null
)
if
(
returnServant
!=
null
)
{
{
Program
.
I
().
shiftToServant
(
returnServant
);
Program
.
I
().
shiftToServant
(
returnServant
);
...
@@ -815,30 +815,19 @@ public class Ocgcore : ServantWithCardDescription
...
@@ -815,30 +815,19 @@ public class Ocgcore : ServantWithCardDescription
public
void
onExit
()
public
void
onExit
()
{
{
if
(
TcpHelper
.
tcpClient
!=
null
)
if
(
TcpHelperAsync
.
IsConnected
)
{
if
(
TcpHelper
.
tcpClient
.
Connected
)
{
{
setDefaultReturnServant
();
setDefaultReturnServant
();
TcpHelper
.
tcpClient
.
Client
.
Shutdown
(
0
);
TcpHelperAsync
.
Disconnect
();
TcpHelper
.
tcpClient
.
Close
();
}
TcpHelper
.
tcpClient
=
null
;
}
}
returnTo
();
returnTo
();
}
}
public
void
onEmergencyExit
()
public
void
onEmergencyExit
()
{
{
if
(
TcpHelper
.
tcpClient
!=
null
)
if
(
TcpHelper
Async
.
IsConnected
)
{
{
/*if (TcpHelper.tcpClient.Connected)
TcpHelperAsync
.
Disconnect
();
{
setDefaultReturnServant();
TcpHelper.tcpClient.Client.Shutdown(0);
TcpHelper.tcpClient.Close();
} */
TcpHelper
.
tcpClient
=
null
;
}
}
returnTo
();
returnTo
();
}
}
...
@@ -876,7 +865,7 @@ public class Ocgcore : ServantWithCardDescription
...
@@ -876,7 +865,7 @@ public class Ocgcore : ServantWithCardDescription
public
void
addPackage
(
Package
p
)
public
void
addPackage
(
Package
p
)
{
{
TcpHelp
er
.
AddRecordLine
(
p
);
GameRecordManag
er
.
AddRecordLine
(
p
);
Packages
.
Enqueue
(
p
);
Packages
.
Enqueue
(
p
);
Packages_ALL
.
Add
(
p
);
Packages_ALL
.
Add
(
p
);
}
}
...
@@ -2908,9 +2897,9 @@ public class Ocgcore : ServantWithCardDescription
...
@@ -2908,9 +2897,9 @@ public class Ocgcore : ServantWithCardDescription
{
{
try
try
{
{
if
(
File
.
Exists
(
"replay/"
+
TcpHelper
.
l
astRecordName
+
".yrp3d"
))
if
(
File
.
Exists
(
"replay/"
+
GameRecordManager
.
L
astRecordName
+
".yrp3d"
))
{
{
if
(
TcpHelper
.
l
astRecordName
!=
winCaculator
.
input
.
value
)
if
(
GameRecordManager
.
L
astRecordName
!=
winCaculator
.
input
.
value
)
{
{
if
(
File
.
Exists
(
"replay/"
+
winCaculator
.
input
.
value
+
".yrp3d"
))
if
(
File
.
Exists
(
"replay/"
+
winCaculator
.
input
.
value
+
".yrp3d"
))
{
{
...
@@ -2918,7 +2907,7 @@ public class Ocgcore : ServantWithCardDescription
...
@@ -2918,7 +2907,7 @@ public class Ocgcore : ServantWithCardDescription
}
}
}
}
File
.
Move
(
File
.
Move
(
"replay/"
+
TcpHelper
.
l
astRecordName
+
".yrp3d"
,
"replay/"
+
GameRecordManager
.
L
astRecordName
+
".yrp3d"
,
"replay/"
+
winCaculator
.
input
.
value
+
".yrp3d"
"replay/"
+
winCaculator
.
input
.
value
+
".yrp3d"
);
);
}
}
...
@@ -2937,14 +2926,14 @@ public class Ocgcore : ServantWithCardDescription
...
@@ -2937,14 +2926,14 @@ public class Ocgcore : ServantWithCardDescription
{
{
try
try
{
{
if
(
File
.
Exists
(
"replay/"
+
TcpHelper
.
l
astRecordName
+
".yrp3d"
))
if
(
File
.
Exists
(
"replay/"
+
GameRecordManager
.
L
astRecordName
+
".yrp3d"
))
{
{
if
(
File
.
Exists
(
"replay/"
+
"-lastReplay"
+
".yrp3d"
))
if
(
File
.
Exists
(
"replay/"
+
"-lastReplay"
+
".yrp3d"
))
{
{
File
.
Delete
(
"replay/"
+
"-lastReplay"
+
".yrp3d"
);
File
.
Delete
(
"replay/"
+
"-lastReplay"
+
".yrp3d"
);
}
}
File
.
Move
(
File
.
Move
(
"replay/"
+
TcpHelper
.
l
astRecordName
+
".yrp3d"
,
"replay/"
+
GameRecordManager
.
L
astRecordName
+
".yrp3d"
,
"replay/-lastReplay.yrp3d"
"replay/-lastReplay.yrp3d"
);
);
}
}
...
@@ -7146,7 +7135,7 @@ public class Ocgcore : ServantWithCardDescription
...
@@ -7146,7 +7135,7 @@ public class Ocgcore : ServantWithCardDescription
flagForCancleChain
=
false
;
flagForCancleChain
=
false
;
//Package p = new Package();
//Package p = new Package();
//p.Fuction = (int)GameMessage.sibyl_clear;
//p.Fuction = (int)GameMessage.sibyl_clear;
//
TcpHelp
er.AddRecordLine(p);
//
GameRecordManag
er.AddRecordLine(p);
if
(
clearTimeFlag
)
if
(
clearTimeFlag
)
{
{
clearTimeFlag
=
false
;
clearTimeFlag
=
false
;
...
@@ -7270,7 +7259,7 @@ public class Ocgcore : ServantWithCardDescription
...
@@ -7270,7 +7259,7 @@ public class Ocgcore : ServantWithCardDescription
int
player
=
r
.
ReadByte
();
int
player
=
r
.
ReadByte
();
r
.
ReadByte
();
r
.
ReadByte
();
int
time_limit
=
r
.
ReadInt16
();
int
time_limit
=
r
.
ReadInt16
();
TcpHelper
.
CtosMessage_
TimeConfirm
();
GameMessageQueue
.
Send
TimeConfirm
();
gameInfo
.
setTime
(
unSwapPlayer
(
localPlayer
(
player
)),
time_limit
);
gameInfo
.
setTime
(
unSwapPlayer
(
localPlayer
(
player
)),
time_limit
);
if
(
unSwapPlayer
(
localPlayer
(
player
))
==
0
)
if
(
unSwapPlayer
(
localPlayer
(
player
))
==
0
)
{
{
...
@@ -9079,7 +9068,7 @@ public class Ocgcore : ServantWithCardDescription
...
@@ -9079,7 +9068,7 @@ public class Ocgcore : ServantWithCardDescription
void
returnFromDeckEdit
()
void
returnFromDeckEdit
()
{
{
TcpHelper
.
CtosMessage_
UpdateDeck
(((
DeckManager
)
Program
.
I
().
deckManager
).
getRealDeck
());
GameMessageQueue
.
Send
UpdateDeck
(((
DeckManager
)
Program
.
I
().
deckManager
).
getRealDeck
());
}
}
public
GameField
gameField
;
public
GameField
gameField
;
...
@@ -9941,13 +9930,13 @@ public class Ocgcore : ServantWithCardDescription
...
@@ -9941,13 +9930,13 @@ public class Ocgcore : ServantWithCardDescription
if
(
result
.
value
==
"yes"
)
if
(
result
.
value
==
"yes"
)
{
{
surrended
=
true
;
surrended
=
true
;
if
(
TcpHelper
.
tcpClient
!=
null
&&
TcpHelper
.
tcpClient
.
Connected
)
if
(
TcpHelper
Async
.
Is
Connected
)
{
{
if
(
paused
)
if
(
paused
)
{
{
EventDelegate
.
Execute
(
UIHelper
.
getByName
<
UIButton
>(
toolBar
,
"go_"
).
onClick
);
EventDelegate
.
Execute
(
UIHelper
.
getByName
<
UIButton
>(
toolBar
,
"go_"
).
onClick
);
}
}
TcpHelper
.
CtosMessage_
Surrender
();
GameMessageQueue
.
Send
Surrender
();
}
}
else
else
{
{
...
@@ -9965,8 +9954,7 @@ public class Ocgcore : ServantWithCardDescription
...
@@ -9965,8 +9954,7 @@ public class Ocgcore : ServantWithCardDescription
if
(
if
(
Program
.
I
().
room
.
duelEnded
==
true
Program
.
I
().
room
.
duelEnded
==
true
||
surrended
||
surrended
||
TcpHelper
.
tcpClient
==
null
||
!
TcpHelperAsync
.
IsConnected
||
TcpHelper
.
tcpClient
.
Connected
==
false
)
)
{
{
surrended
=
false
;
surrended
=
false
;
...
@@ -9983,7 +9971,7 @@ public class Ocgcore : ServantWithCardDescription
...
@@ -9983,7 +9971,7 @@ public class Ocgcore : ServantWithCardDescription
RMSshow_none
(
InterString
.
Get
(
"右侧为您准备了对手上一局使用的卡。"
));
RMSshow_none
(
InterString
.
Get
(
"右侧为您准备了对手上一局使用的卡。"
));
((
DeckManager
)
Program
.
I
().
deckManager
).
shiftCondition
(
DeckManager
.
Condition
.
changeSide
);
((
DeckManager
)
Program
.
I
().
deckManager
).
shiftCondition
(
DeckManager
.
Condition
.
changeSide
);
returnTo
();
returnTo
();
((
DeckManager
)
Program
.
I
().
deckManager
).
deck
=
TcpHelper
.
d
eck
;
((
DeckManager
)
Program
.
I
().
deckManager
).
deck
=
TcpHelper
Async
.
CurrentD
eck
;
((
DeckManager
)
Program
.
I
().
deckManager
).
FormCodedDeckToObjectDeck
();
((
DeckManager
)
Program
.
I
().
deckManager
).
FormCodedDeckToObjectDeck
();
((
CardDescription
)
Program
.
I
().
cardDescription
).
setTitle
(
((
CardDescription
)
Program
.
I
().
cardDescription
).
setTitle
(
Config
.
Get
(
"deckInUse"
,
"miaowu"
)
Config
.
Get
(
"deckInUse"
,
"miaowu"
)
...
@@ -10013,8 +10001,7 @@ public class Ocgcore : ServantWithCardDescription
...
@@ -10013,8 +10001,7 @@ public class Ocgcore : ServantWithCardDescription
if
(
if
(
Program
.
I
().
room
.
duelEnded
==
true
Program
.
I
().
room
.
duelEnded
==
true
||
surrended
||
surrended
||
TcpHelper
.
tcpClient
==
null
||
!
TcpHelperAsync
.
IsConnected
||
TcpHelper
.
tcpClient
.
Connected
==
false
||
Program
.
I
().
room
.
needSide
==
true
||
Program
.
I
().
room
.
needSide
==
true
||
condition
!=
Condition
.
duel
||
condition
!=
Condition
.
duel
)
)
...
...
Assets/SibylSystem/Program.cs
View file @
9e5a0496
...
@@ -1234,7 +1234,7 @@ public class Program : MonoBehaviour
...
@@ -1234,7 +1234,7 @@ public class Program : MonoBehaviour
{
{
servants
[
i
].
Update
();
servants
[
i
].
Update
();
}
}
TcpHelper
.
preFrameFunction
();
TcpHelper
Async
.
ProcessMessages
();
delayedTask
remove
=
null
;
delayedTask
remove
=
null
;
while
(
true
)
while
(
true
)
{
{
...
@@ -1321,7 +1321,7 @@ public class Program : MonoBehaviour
...
@@ -1321,7 +1321,7 @@ public class Program : MonoBehaviour
void
OnApplicationQuit
()
void
OnApplicationQuit
()
{
{
TcpHelp
er
.
SaveRecord
();
GameRecordManag
er
.
SaveRecord
();
SaveConfig
();
SaveConfig
();
for
(
int
i
=
0
;
i
<
servants
.
Count
;
i
++)
for
(
int
i
=
0
;
i
<
servants
.
Count
;
i
++)
{
{
...
@@ -1330,7 +1330,7 @@ public class Program : MonoBehaviour
...
@@ -1330,7 +1330,7 @@ public class Program : MonoBehaviour
Running
=
false
;
Running
=
false
;
try
try
{
{
TcpHelper
.
tcpClient
.
Close
();
TcpHelper
Async
.
Disconnect
();
}
}
catch
(
System
.
Exception
e
)
catch
(
System
.
Exception
e
)
{
{
...
...
Assets/SibylSystem/Room/Room.cs
View file @
9e5a0496
...
@@ -29,11 +29,11 @@ public class Room : WindowServantSP
...
@@ -29,11 +29,11 @@ public class Room : WindowServantSP
&&
realPlayers
[
selftype
].
getIfPreped
()
&&
realPlayers
[
selftype
].
getIfPreped
()
)
)
{
{
TcpHelper
.
CtosMessage_
HsNotReady
();
GameMessageQueue
.
Send
HsNotReady
();
TcpHelper
.
CtosMessage_
UpdateDeck
(
GameMessageQueue
.
Send
UpdateDeck
(
new
YGOSharp
.
Deck
(
"deck/"
+
superScrollView
.
selectedString
+
".ydk"
)
new
YGOSharp
.
Deck
(
"deck/"
+
superScrollView
.
selectedString
+
".ydk"
)
);
);
TcpHelper
.
CtosMessage_
HsReady
();
GameMessageQueue
.
Send
HsReady
();
}
}
}
}
...
@@ -99,7 +99,7 @@ public class Room : WindowServantSP
...
@@ -99,7 +99,7 @@ public class Room : WindowServantSP
{
{
if
(
val
!=
""
)
if
(
val
!=
""
)
{
{
TcpHelper
.
CtosMessage_
Chat
(
val
);
GameMessageQueue
.
Send
Chat
(
val
);
//AddChatMsg(val, -1);
//AddChatMsg(val, -1);
}
}
}
}
...
@@ -112,7 +112,7 @@ public class Room : WindowServantSP
...
@@ -112,7 +112,7 @@ public class Room : WindowServantSP
void
handler
(
byte
[]
buffer
)
void
handler
(
byte
[]
buffer
)
{
{
TcpHelper
.
CtosMessage_
Response
(
buffer
);
GameMessageQueue
.
Send
Response
(
buffer
);
}
}
#
region
STOC
#
region
STOC
...
@@ -288,7 +288,7 @@ public class Room : WindowServantSP
...
@@ -288,7 +288,7 @@ public class Room : WindowServantSP
p
.
Fuction
=
(
int
)
YGOSharp
.
OCGWrapper
.
Enums
.
GameMessage
.
sibyl_chat
;
p
.
Fuction
=
(
int
)
YGOSharp
.
OCGWrapper
.
Enums
.
GameMessage
.
sibyl_chat
;
p
.
Data
=
new
BinaryMaster
();
p
.
Data
=
new
BinaryMaster
();
p
.
Data
.
writer
.
WriteUnicode
(
res
,
res
.
Length
+
1
);
p
.
Data
.
writer
.
WriteUnicode
(
res
,
res
.
Length
+
1
);
TcpHelp
er
.
AddRecordLine
(
p
);
GameRecordManag
er
.
AddRecordLine
(
p
);
switch
((
PlayerType
)
player
)
switch
((
PlayerType
)
player
)
{
{
case
PlayerType
.
Red
:
case
PlayerType
.
Red
:
...
@@ -537,8 +537,8 @@ public class Room : WindowServantSP
...
@@ -537,8 +537,8 @@ public class Room : WindowServantSP
p
.
Fuction
=
(
int
)
YGOSharp
.
OCGWrapper
.
Enums
.
GameMessage
.
sibyl_replay
;
p
.
Fuction
=
(
int
)
YGOSharp
.
OCGWrapper
.
Enums
.
GameMessage
.
sibyl_replay
;
p
.
Data
=
new
BinaryMaster
();
p
.
Data
=
new
BinaryMaster
();
p
.
Data
.
writer
.
Write
(
data
);
p
.
Data
.
writer
.
Write
(
data
);
TcpHelp
er
.
AddRecordLine
(
p
);
GameRecordManag
er
.
AddRecordLine
(
p
);
TcpHelp
er
.
SaveRecord
();
GameRecordManag
er
.
SaveRecord
();
}
}
public
bool
duelEnded
=
false
;
public
bool
duelEnded
=
false
;
...
@@ -739,26 +739,26 @@ public class Room : WindowServantSP
...
@@ -739,26 +739,26 @@ public class Room : WindowServantSP
{
{
if
(
result
[
0
].
value
==
"first"
)
if
(
result
[
0
].
value
==
"first"
)
{
{
TcpHelper
.
CtosMessage_
TpResult
(
true
);
GameMessageQueue
.
Send
TpResult
(
true
);
}
}
if
(
result
[
0
].
value
==
"second"
)
if
(
result
[
0
].
value
==
"second"
)
{
{
TcpHelper
.
CtosMessage_
TpResult
(
false
);
GameMessageQueue
.
Send
TpResult
(
false
);
}
}
}
}
if
(
hashCode
==
"StocMessage_SelectHand"
)
if
(
hashCode
==
"StocMessage_SelectHand"
)
{
{
if
(
result
[
0
].
value
==
"jiandao"
)
if
(
result
[
0
].
value
==
"jiandao"
)
{
{
TcpHelper
.
CtosMessage_
HandResult
(
1
);
GameMessageQueue
.
Send
HandResult
(
1
);
}
}
if
(
result
[
0
].
value
==
"shitou"
)
if
(
result
[
0
].
value
==
"shitou"
)
{
{
TcpHelper
.
CtosMessage_
HandResult
(
2
);
GameMessageQueue
.
Send
HandResult
(
2
);
}
}
if
(
result
[
0
].
value
==
"bu"
)
if
(
result
[
0
].
value
==
"bu"
)
{
{
TcpHelper
.
CtosMessage_
HandResult
(
3
);
GameMessageQueue
.
Send
HandResult
(
3
);
}
}
}
}
}
}
...
@@ -1236,20 +1236,20 @@ public class Room : WindowServantSP
...
@@ -1236,20 +1236,20 @@ public class Room : WindowServantSP
}
}
if
(
arg2
)
if
(
arg2
)
{
{
TcpHelper
.
CtosMessage_
UpdateDeck
(
GameMessageQueue
.
Send
UpdateDeck
(
new
YGOSharp
.
Deck
(
"deck/"
+
Config
.
Get
(
"deckInUse"
,
"miaouwu"
)
+
".ydk"
)
new
YGOSharp
.
Deck
(
"deck/"
+
Config
.
Get
(
"deckInUse"
,
"miaouwu"
)
+
".ydk"
)
);
);
TcpHelper
.
CtosMessage_
HsReady
();
GameMessageQueue
.
Send
HsReady
();
}
}
else
else
{
{
TcpHelper
.
CtosMessage_
HsNotReady
();
GameMessageQueue
.
Send
HsNotReady
();
}
}
}
}
private
void
OnKick
(
int
pos
)
private
void
OnKick
(
int
pos
)
{
{
TcpHelper
.
CtosMessage_
HsKick
(
pos
);
GameMessageQueue
.
Send
HsKick
(
pos
);
}
}
private
UIButton
startButton
()
private
UIButton
startButton
()
...
@@ -1289,28 +1289,28 @@ public class Room : WindowServantSP
...
@@ -1289,28 +1289,28 @@ public class Room : WindowServantSP
{
{
if
(
realPlayers
[
selftype
].
getIfPreped
())
if
(
realPlayers
[
selftype
].
getIfPreped
())
{
{
TcpHelper
.
CtosMessage_
HsNotReady
();
GameMessageQueue
.
Send
HsNotReady
();
}
}
else
else
{
{
TcpHelper
.
CtosMessage_
UpdateDeck
(
GameMessageQueue
.
Send
UpdateDeck
(
new
YGOSharp
.
Deck
(
"deck/"
+
Config
.
Get
(
"deckInUse"
,
"wizard"
)
+
".ydk"
)
new
YGOSharp
.
Deck
(
"deck/"
+
Config
.
Get
(
"deckInUse"
,
"wizard"
)
+
".ydk"
)
);
);
TcpHelper
.
CtosMessage_
HsReady
();
GameMessageQueue
.
Send
HsReady
();
}
}
}
}
}
}
if
(
gameObjectListened
.
name
==
"duelist_"
)
if
(
gameObjectListened
.
name
==
"duelist_"
)
{
{
TcpHelper
.
CtosMessage_
HsToDuelist
();
GameMessageQueue
.
Send
HsToDuelist
();
}
}
if
(
gameObjectListened
.
name
==
"observer_"
)
if
(
gameObjectListened
.
name
==
"observer_"
)
{
{
TcpHelper
.
CtosMessage_
HsToObserver
();
GameMessageQueue
.
Send
HsToObserver
();
}
}
if
(
gameObjectListened
.
name
==
"start_"
)
if
(
gameObjectListened
.
name
==
"start_"
)
{
{
TcpHelper
.
CtosMessage_
HsStart
();
GameMessageQueue
.
Send
HsStart
();
}
}
}
}
...
...
Assets/SibylSystem/precy.cs
View file @
9e5a0496
...
@@ -33,7 +33,7 @@ public class PrecyOcg
...
@@ -33,7 +33,7 @@ public class PrecyOcg
byte
[]
bufferR
=
new
byte
[
buffer
.
Length
+
1
];
byte
[]
bufferR
=
new
byte
[
buffer
.
Length
+
1
];
bufferR
[
0
]
=
1
;
bufferR
[
0
]
=
1
;
buffer
.
CopyTo
(
bufferR
,
1
);
buffer
.
CopyTo
(
bufferR
,
1
);
TcpHelper
.
addDateJumoLine
(
bufferR
);
TcpHelper
Async
.
AddReceivedData
(
bufferR
);
}
}
public
void
startPuzzle
(
System
.
String
path
)
public
void
startPuzzle
(
System
.
String
path
)
...
...
Assets/SibylSystem/selectReplay/selectReplay.cs
View file @
9e5a0496
...
@@ -141,7 +141,7 @@ public class selectReplay : WindowServantSP
...
@@ -141,7 +141,7 @@ public class selectReplay : WindowServantSP
byte
[]
returnValue
=
null
;
byte
[]
returnValue
=
null
;
try
try
{
{
var
collection
=
TcpHelper
.
readPackagesIn
Record
(
path
);
var
collection
=
GameRecordManager
.
ReadPackagesFrom
Record
(
path
);
foreach
(
var
item
in
collection
)
foreach
(
var
item
in
collection
)
{
{
Debug
.
Log
(
item
.
Fuction
);
Debug
.
Log
(
item
.
Fuction
);
...
@@ -467,7 +467,7 @@ public class selectReplay : WindowServantSP
...
@@ -467,7 +467,7 @@ public class selectReplay : WindowServantSP
if
(
precy
!=
null
)
if
(
precy
!=
null
)
precy
.
dispose
();
precy
.
dispose
();
precy
=
new
PrecyOcg
();
precy
=
new
PrecyOcg
();
var
collections
=
TcpHelper
.
get
Packages
(
var
collections
=
GameRecordManager
.
Parse
Packages
(
precy
.
ygopro
.
getYRP3dBuffer
(
precy
.
ygopro
.
getYRP3dBuffer
(
getYRP
(
getYRPbuffer
(
"replay/"
+
name
+
".yrp3d"
))
getYRP
(
getYRPbuffer
(
"replay/"
+
name
+
".yrp3d"
))
)
)
...
@@ -476,7 +476,7 @@ public class selectReplay : WindowServantSP
...
@@ -476,7 +476,7 @@ public class selectReplay : WindowServantSP
}
}
else
else
{
{
var
collection
=
TcpHelper
.
readPackagesIn
Record
(
"replay/"
+
name
+
".yrp3d"
);
var
collection
=
GameRecordManager
.
ReadPackagesFrom
Record
(
"replay/"
+
name
+
".yrp3d"
);
pushCollection
(
collection
);
pushCollection
(
collection
);
}
}
}
}
...
@@ -492,7 +492,7 @@ public class selectReplay : WindowServantSP
...
@@ -492,7 +492,7 @@ public class selectReplay : WindowServantSP
if
(
precy
!=
null
)
if
(
precy
!=
null
)
precy
.
dispose
();
precy
.
dispose
();
precy
=
new
PrecyOcg
();
precy
=
new
PrecyOcg
();
var
collections
=
TcpHelper
.
get
Packages
(
var
collections
=
GameRecordManager
.
Parse
Packages
(
precy
.
ygopro
.
getYRP3dBuffer
(
getYRP
(
File
.
ReadAllBytes
(
"replay/"
+
name
)))
precy
.
ygopro
.
getYRP3dBuffer
(
getYRP
(
File
.
ReadAllBytes
(
"replay/"
+
name
)))
);
);
pushCollection
(
collections
);
pushCollection
(
collections
);
...
...
Assets/SibylSystem/selectServer/SelectServer.cs
View file @
9e5a0496
...
@@ -300,12 +300,9 @@ public class SelectServer : WindowServantSP
...
@@ -300,12 +300,9 @@ public class SelectServer : WindowServantSP
void
onClickExit
()
void
onClickExit
()
{
{
Program
.
I
().
shiftToServant
(
Program
.
I
().
menu
);
Program
.
I
().
shiftToServant
(
Program
.
I
().
menu
);
if
(
TcpHelper
.
tcpClient
!=
null
)
if
(
TcpHelper
Async
.
IsConnected
)
{
{
if
(
TcpHelper
.
tcpClient
.
Connected
)
TcpHelperAsync
.
Disconnect
();
{
TcpHelper
.
tcpClient
.
Close
();
}
}
}
}
}
...
@@ -383,12 +380,7 @@ public class SelectServer : WindowServantSP
...
@@ -383,12 +380,7 @@ public class SelectServer : WindowServantSP
File
.
WriteAllText
(
"config/passwords.conf"
,
all
);
File
.
WriteAllText
(
"config/passwords.conf"
,
all
);
printFile
(
false
);
printFile
(
false
);
Program
.
I
().
mycard
.
isMatching
=
false
;
Program
.
I
().
mycard
.
isMatching
=
false
;
(
_
=
TcpHelperAsync
.
ConnectAsync
(
ipString
,
name
,
portString
,
pswString
,
versionString
);
new
Thread
(()
=>
{
TcpHelper
.
join
(
ipString
,
name
,
portString
,
pswString
,
versionString
);
})
).
Start
();
}
}
else
else
{
{
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment