Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Sign in / Register
Toggle navigation
Y
ygopro-match
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Locked Files
Issues
0
Issues
0
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
MyCard
ygopro-match
Commits
82074b07
Commit
82074b07
authored
Jan 01, 2026
by
nanahira
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
unify clean opponent thing
parent
51b4e817
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
28 additions
and
19 deletions
+28
-19
main.js
main.js
+28
-19
No files found.
main.js
View file @
82074b07
...
...
@@ -24,16 +24,30 @@ let localLog = function (content) {
};
let
clearUserPools
=
function
(
user
)
{
let
removedFromPlaying
=
playingPlayerPool
.
delete
(
user
);
let
removedFromPending
=
pendingPlayerPool
.
delete
(
user
);
if
(
removedFromPlaying
)
playingPlayerOpponents
.
delete
(
user
);
if
(
playingPlayerTimeout
.
has
(
user
))
{
clearTimeout
(
playingPlayerTimeout
.
get
(
user
));
playingPlayerTimeout
.
delete
(
user
);
}
if
(
pendingPlayerTimeout
.
has
(
user
))
{
clearTimeout
(
pendingPlayerTimeout
.
get
(
user
));
pendingPlayerTimeout
.
delete
(
user
);
let
removedFromPlaying
=
false
;
let
removedFromPending
=
false
;
let
toClear
=
[
user
];
let
seen
=
new
Set
();
while
(
toClear
.
length
>
0
)
{
let
currentUser
=
toClear
.
pop
();
if
(
!
currentUser
||
seen
.
has
(
currentUser
))
continue
;
seen
.
add
(
currentUser
);
if
(
playingPlayerPool
.
delete
(
currentUser
))
removedFromPlaying
=
true
;
if
(
pendingPlayerPool
.
delete
(
currentUser
))
removedFromPending
=
true
;
if
(
playingPlayerTimeout
.
has
(
currentUser
))
{
clearTimeout
(
playingPlayerTimeout
.
get
(
currentUser
));
playingPlayerTimeout
.
delete
(
currentUser
);
}
if
(
pendingPlayerTimeout
.
has
(
currentUser
))
{
clearTimeout
(
pendingPlayerTimeout
.
get
(
currentUser
));
pendingPlayerTimeout
.
delete
(
currentUser
);
}
let
opponent
=
playingPlayerOpponents
.
get
(
currentUser
);
playingPlayerOpponents
.
delete
(
currentUser
);
if
(
opponent
)
{
playingPlayerOpponents
.
delete
(
opponent
);
toClear
.
push
(
opponent
);
}
}
return
removedFromPlaying
||
removedFromPending
;
};
...
...
@@ -243,6 +257,8 @@ let pair = function (userARes, userBRes, serverName) {
}
options_buffer
.
writeUInt8
(
checksum
&
0xFF
,
0
);
localLog
(
userARes
.
username
+
"
and
"
+
userBRes
.
username
+
"
matched on room
"
+
room_id
);
playingPlayerOpponents
.
set
(
userARes
.
username
,
userBRes
.
username
);
playingPlayerOpponents
.
set
(
userBRes
.
username
,
userARes
.
username
);
for
(
let
client
of
[
userARes
,
userBRes
])
{
let
buffer
=
new
Buffer
(
6
);
let
secret
=
parseInt
(
client
.
password
)
%
65535
+
1
;
...
...
@@ -343,10 +359,6 @@ let startUser = function (query) {
let
userA
=
query
.
usernameA
;
let
userB
=
query
.
usernameB
;
if
(
!
userA
&&
!
userB
)
return
;
if
(
userA
&&
userB
)
{
playingPlayerOpponents
.
set
(
userA
,
userB
);
playingPlayerOpponents
.
set
(
userB
,
userA
);
}
for
(
let
user
of
[
userA
,
userB
])
{
if
(
!
user
)
continue
;
let
roomInfo
=
pendingPlayerPool
.
get
(
user
);
...
...
@@ -367,17 +379,14 @@ let startUser = function (query) {
// 当超过时间,而 srvpro 从未通知基本服务器游戏已结束时
let
timeoutUser
=
function
(
user
)
{
if
(
playingPlayerPool
.
delete
(
user
))
if
(
clearUserPools
(
user
))
localLog
(
"
With timeout, user is seen as had left the game:
"
+
user
);
playingPlayerOpponents
.
delete
(
user
);
playingPlayerTimeout
.
delete
(
user
);
};
// 当房间未开始而超时
let
timeoutPendingUser
=
function
(
user
)
{
if
(
pendingPlayerPool
.
delete
(
user
))
if
(
clearUserPools
(
user
))
localLog
(
"
Pending room expired for user:
"
+
user
);
pendingPlayerTimeout
.
delete
(
user
);
};
// 计算预期时间
...
...
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