Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Sign in / Register
Toggle navigation
N
Neos
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
love_飞影
Neos
Commits
d31f77a7
Commit
d31f77a7
authored
Jul 10, 2023
by
Chunchi Che
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Feat/replay
parent
f15b790f
Changes
18
Hide whitespace changes
Inline
Side-by-side
Showing
18 changed files
with
580 additions
and
25 deletions
+580
-25
neos-protobuf
neos-protobuf
+1
-1
neos.config.json
neos.config.json
+5
-1
neos.config.prod.json
neos.config.prod.json
+5
-1
src/api/ocgcore/idl/ocgcore.ts
src/api/ocgcore/idl/ocgcore.ts
+321
-5
src/api/ocgcore/ocgAdapter/protoDecl.ts
src/api/ocgcore/ocgAdapter/protoDecl.ts
+1
-0
src/api/ocgcore/ocgAdapter/stoc/stocGameMsg/mod.ts
src/api/ocgcore/ocgAdapter/stoc/stocGameMsg/mod.ts
+6
-0
src/api/ocgcore/ocgAdapter/stoc/stocGameMsg/sibylName.ts
src/api/ocgcore/ocgAdapter/stoc/stocGameMsg/sibylName.ts
+45
-0
src/middleware/socket.ts
src/middleware/socket.ts
+14
-1
src/service/duel/gameMsg.ts
src/service/duel/gameMsg.ts
+27
-0
src/service/duel/sibylName.ts
src/service/duel/sibylName.ts
+8
-0
src/service/duel/start.ts
src/service/duel/start.ts
+6
-1
src/stores/matStore/store.ts
src/stores/matStore/store.ts
+1
-0
src/stores/matStore/types.ts
src/stores/matStore/types.ts
+2
-0
src/ui/Login.tsx
src/ui/Login.tsx
+4
-0
src/ui/Neos.tsx
src/ui/Neos.tsx
+9
-0
src/ui/Replay/index.scss
src/ui/Replay/index.scss
+0
-0
src/ui/Replay/index.tsx
src/ui/Replay/index.tsx
+110
-0
src/ui/WaitRoom.tsx
src/ui/WaitRoom.tsx
+15
-15
No files found.
neos-protobuf
@
30f4ea7a
Subproject commit
2b7892f461be231b95ccc3c13512359177f3bb98
Subproject commit
30f4ea7acd79b9cb18a358548520ca939e22dc5f
neos.config.json
View file @
d31f77a7
...
@@ -10,6 +10,7 @@
...
@@ -10,6 +10,7 @@
"cardImgUrl"
:
"https://cdn02.moecube.com:444/images/ygopro-images-zh-CN"
,
"cardImgUrl"
:
"https://cdn02.moecube.com:444/images/ygopro-images-zh-CN"
,
"cardsDbUrl"
:
"https://cdn02.moecube.com:444/ygopro-database/zh-CN/cards.cdb"
,
"cardsDbUrl"
:
"https://cdn02.moecube.com:444/ygopro-database/zh-CN/cards.cdb"
,
"stringsUrl"
:
"https://cdn02.moecube.com:444/ygopro-database/zh-CN/strings.conf"
,
"stringsUrl"
:
"https://cdn02.moecube.com:444/ygopro-database/zh-CN/strings.conf"
,
"replayUrl"
:
"replay.neos.moe"
,
"chainALL"
:
false
,
"chainALL"
:
false
,
"streamInterval"
:
20
,
"streamInterval"
:
20
,
"startDelay"
:
1000
,
"startDelay"
:
1000
,
...
@@ -68,6 +69,9 @@
...
@@ -68,6 +69,9 @@
164
,
164
,
165
,
165
,
170
,
170
,
180
180
,
230
,
231
,
236
]
]
}
}
neos.config.prod.json
View file @
d31f77a7
...
@@ -10,6 +10,7 @@
...
@@ -10,6 +10,7 @@
"cardImgUrl"
:
"https://cdn02.moecube.com:444/images/ygopro-images-zh-CN"
,
"cardImgUrl"
:
"https://cdn02.moecube.com:444/images/ygopro-images-zh-CN"
,
"cardsDbUrl"
:
"https://cdn02.moecube.com:444/ygopro-database/zh-CN/cards.cdb"
,
"cardsDbUrl"
:
"https://cdn02.moecube.com:444/ygopro-database/zh-CN/cards.cdb"
,
"stringsUrl"
:
"https://cdn02.moecube.com:444/ygopro-database/zh-CN/strings.conf"
,
"stringsUrl"
:
"https://cdn02.moecube.com:444/ygopro-database/zh-CN/strings.conf"
,
"replayUrl"
:
"replay.neos.moe"
,
"chainALL"
:
false
,
"chainALL"
:
false
,
"streamInterval"
:
20
,
"streamInterval"
:
20
,
"startDelay"
:
1000
,
"startDelay"
:
1000
,
...
@@ -68,6 +69,9 @@
...
@@ -68,6 +69,9 @@
164
,
164
,
165
,
165
,
170
,
170
,
180
180
,
230
,
231
,
236
]
]
}
}
src/api/ocgcore/idl/ocgcore.ts
View file @
d31f77a7
/**
/**
* Generated by the protoc-gen-ts. DO NOT EDIT!
* Generated by the protoc-gen-ts. DO NOT EDIT!
* compiler version: 3.21.
9
* compiler version: 3.21.
5
* source: idl/ocgcore.proto
* source: idl/ocgcore.proto
* git: https://github.com/thesayyn/protoc-gen-ts */
* git: https://github.com/thesayyn/protoc-gen-ts */
import
*
as
pb_1
from
"
google-protobuf
"
;
import
*
as
pb_1
from
"
google-protobuf
"
;
...
@@ -4511,7 +4511,7 @@ export namespace ygopro {
...
@@ -4511,7 +4511,7 @@ export namespace ygopro {
}
}
}
}
export
class
StocGameMessage
extends
pb_1
.
Message
{
export
class
StocGameMessage
extends
pb_1
.
Message
{
#
one_of_decls
:
number
[][]
=
[[
1
,
2
,
3
,
4
,
5
,
6
,
7
,
8
,
9
,
10
,
11
,
12
,
13
,
14
,
15
,
16
,
17
,
18
,
19
,
20
,
21
,
22
,
23
,
24
,
25
,
26
,
27
,
28
,
29
,
30
,
31
,
32
,
33
,
34
,
35
,
36
,
37
,
38
,
39
,
40
,
41
,
42
,
43
,
44
,
45
,
46
,
47
,
48
,
49
,
50
,
51
,
52
,
53
]];
#
one_of_decls
:
number
[][]
=
[[
1
,
2
,
3
,
4
,
5
,
6
,
7
,
8
,
9
,
10
,
11
,
12
,
13
,
14
,
15
,
16
,
17
,
18
,
19
,
20
,
21
,
22
,
23
,
24
,
25
,
26
,
27
,
28
,
29
,
30
,
31
,
32
,
33
,
34
,
35
,
36
,
37
,
38
,
39
,
40
,
41
,
42
,
43
,
44
,
45
,
46
,
47
,
48
,
49
,
50
,
51
,
52
,
53
,
54
]];
constructor
(
data
?:
any
[]
|
({}
&
(({
constructor
(
data
?:
any
[]
|
({}
&
(({
start
?:
StocGameMessage
.
MsgStart
;
start
?:
StocGameMessage
.
MsgStart
;
draw
?:
never
;
draw
?:
never
;
...
@@ -4566,6 +4566,7 @@ export namespace ygopro {
...
@@ -4566,6 +4566,7 @@ export namespace ygopro {
rock_paper_scissors
?:
never
;
rock_paper_scissors
?:
never
;
hand_res
?:
never
;
hand_res
?:
never
;
swap_grave_deck
?:
never
;
swap_grave_deck
?:
never
;
sibyl_name
?:
never
;
}
|
{
}
|
{
start
?:
never
;
start
?:
never
;
draw
?:
StocGameMessage
.
MsgDraw
;
draw
?:
StocGameMessage
.
MsgDraw
;
...
@@ -4620,6 +4621,7 @@ export namespace ygopro {
...
@@ -4620,6 +4621,7 @@ export namespace ygopro {
rock_paper_scissors
?:
never
;
rock_paper_scissors
?:
never
;
hand_res
?:
never
;
hand_res
?:
never
;
swap_grave_deck
?:
never
;
swap_grave_deck
?:
never
;
sibyl_name
?:
never
;
}
|
{
}
|
{
start
?:
never
;
start
?:
never
;
draw
?:
never
;
draw
?:
never
;
...
@@ -4674,6 +4676,7 @@ export namespace ygopro {
...
@@ -4674,6 +4676,7 @@ export namespace ygopro {
rock_paper_scissors
?:
never
;
rock_paper_scissors
?:
never
;
hand_res
?:
never
;
hand_res
?:
never
;
swap_grave_deck
?:
never
;
swap_grave_deck
?:
never
;
sibyl_name
?:
never
;
}
|
{
}
|
{
start
?:
never
;
start
?:
never
;
draw
?:
never
;
draw
?:
never
;
...
@@ -4728,6 +4731,7 @@ export namespace ygopro {
...
@@ -4728,6 +4731,7 @@ export namespace ygopro {
rock_paper_scissors
?:
never
;
rock_paper_scissors
?:
never
;
hand_res
?:
never
;
hand_res
?:
never
;
swap_grave_deck
?:
never
;
swap_grave_deck
?:
never
;
sibyl_name
?:
never
;
}
|
{
}
|
{
start
?:
never
;
start
?:
never
;
draw
?:
never
;
draw
?:
never
;
...
@@ -4782,6 +4786,7 @@ export namespace ygopro {
...
@@ -4782,6 +4786,7 @@ export namespace ygopro {
rock_paper_scissors
?:
never
;
rock_paper_scissors
?:
never
;
hand_res
?:
never
;
hand_res
?:
never
;
swap_grave_deck
?:
never
;
swap_grave_deck
?:
never
;
sibyl_name
?:
never
;
}
|
{
}
|
{
start
?:
never
;
start
?:
never
;
draw
?:
never
;
draw
?:
never
;
...
@@ -4836,6 +4841,7 @@ export namespace ygopro {
...
@@ -4836,6 +4841,7 @@ export namespace ygopro {
rock_paper_scissors
?:
never
;
rock_paper_scissors
?:
never
;
hand_res
?:
never
;
hand_res
?:
never
;
swap_grave_deck
?:
never
;
swap_grave_deck
?:
never
;
sibyl_name
?:
never
;
}
|
{
}
|
{
start
?:
never
;
start
?:
never
;
draw
?:
never
;
draw
?:
never
;
...
@@ -4890,6 +4896,7 @@ export namespace ygopro {
...
@@ -4890,6 +4896,7 @@ export namespace ygopro {
rock_paper_scissors
?:
never
;
rock_paper_scissors
?:
never
;
hand_res
?:
never
;
hand_res
?:
never
;
swap_grave_deck
?:
never
;
swap_grave_deck
?:
never
;
sibyl_name
?:
never
;
}
|
{
}
|
{
start
?:
never
;
start
?:
never
;
draw
?:
never
;
draw
?:
never
;
...
@@ -4944,6 +4951,7 @@ export namespace ygopro {
...
@@ -4944,6 +4951,7 @@ export namespace ygopro {
rock_paper_scissors
?:
never
;
rock_paper_scissors
?:
never
;
hand_res
?:
never
;
hand_res
?:
never
;
swap_grave_deck
?:
never
;
swap_grave_deck
?:
never
;
sibyl_name
?:
never
;
}
|
{
}
|
{
start
?:
never
;
start
?:
never
;
draw
?:
never
;
draw
?:
never
;
...
@@ -4998,6 +5006,7 @@ export namespace ygopro {
...
@@ -4998,6 +5006,7 @@ export namespace ygopro {
rock_paper_scissors
?:
never
;
rock_paper_scissors
?:
never
;
hand_res
?:
never
;
hand_res
?:
never
;
swap_grave_deck
?:
never
;
swap_grave_deck
?:
never
;
sibyl_name
?:
never
;
}
|
{
}
|
{
start
?:
never
;
start
?:
never
;
draw
?:
never
;
draw
?:
never
;
...
@@ -5052,6 +5061,7 @@ export namespace ygopro {
...
@@ -5052,6 +5061,7 @@ export namespace ygopro {
rock_paper_scissors
?:
never
;
rock_paper_scissors
?:
never
;
hand_res
?:
never
;
hand_res
?:
never
;
swap_grave_deck
?:
never
;
swap_grave_deck
?:
never
;
sibyl_name
?:
never
;
}
|
{
}
|
{
start
?:
never
;
start
?:
never
;
draw
?:
never
;
draw
?:
never
;
...
@@ -5106,6 +5116,7 @@ export namespace ygopro {
...
@@ -5106,6 +5116,7 @@ export namespace ygopro {
rock_paper_scissors
?:
never
;
rock_paper_scissors
?:
never
;
hand_res
?:
never
;
hand_res
?:
never
;
swap_grave_deck
?:
never
;
swap_grave_deck
?:
never
;
sibyl_name
?:
never
;
}
|
{
}
|
{
start
?:
never
;
start
?:
never
;
draw
?:
never
;
draw
?:
never
;
...
@@ -5160,6 +5171,7 @@ export namespace ygopro {
...
@@ -5160,6 +5171,7 @@ export namespace ygopro {
rock_paper_scissors
?:
never
;
rock_paper_scissors
?:
never
;
hand_res
?:
never
;
hand_res
?:
never
;
swap_grave_deck
?:
never
;
swap_grave_deck
?:
never
;
sibyl_name
?:
never
;
}
|
{
}
|
{
start
?:
never
;
start
?:
never
;
draw
?:
never
;
draw
?:
never
;
...
@@ -5214,6 +5226,7 @@ export namespace ygopro {
...
@@ -5214,6 +5226,7 @@ export namespace ygopro {
rock_paper_scissors
?:
never
;
rock_paper_scissors
?:
never
;
hand_res
?:
never
;
hand_res
?:
never
;
swap_grave_deck
?:
never
;
swap_grave_deck
?:
never
;
sibyl_name
?:
never
;
}
|
{
}
|
{
start
?:
never
;
start
?:
never
;
draw
?:
never
;
draw
?:
never
;
...
@@ -5268,6 +5281,7 @@ export namespace ygopro {
...
@@ -5268,6 +5281,7 @@ export namespace ygopro {
rock_paper_scissors
?:
never
;
rock_paper_scissors
?:
never
;
hand_res
?:
never
;
hand_res
?:
never
;
swap_grave_deck
?:
never
;
swap_grave_deck
?:
never
;
sibyl_name
?:
never
;
}
|
{
}
|
{
start
?:
never
;
start
?:
never
;
draw
?:
never
;
draw
?:
never
;
...
@@ -5322,6 +5336,7 @@ export namespace ygopro {
...
@@ -5322,6 +5336,7 @@ export namespace ygopro {
rock_paper_scissors
?:
never
;
rock_paper_scissors
?:
never
;
hand_res
?:
never
;
hand_res
?:
never
;
swap_grave_deck
?:
never
;
swap_grave_deck
?:
never
;
sibyl_name
?:
never
;
}
|
{
}
|
{
start
?:
never
;
start
?:
never
;
draw
?:
never
;
draw
?:
never
;
...
@@ -5376,6 +5391,7 @@ export namespace ygopro {
...
@@ -5376,6 +5391,7 @@ export namespace ygopro {
rock_paper_scissors
?:
never
;
rock_paper_scissors
?:
never
;
hand_res
?:
never
;
hand_res
?:
never
;
swap_grave_deck
?:
never
;
swap_grave_deck
?:
never
;
sibyl_name
?:
never
;
}
|
{
}
|
{
start
?:
never
;
start
?:
never
;
draw
?:
never
;
draw
?:
never
;
...
@@ -5430,6 +5446,7 @@ export namespace ygopro {
...
@@ -5430,6 +5446,7 @@ export namespace ygopro {
rock_paper_scissors
?:
never
;
rock_paper_scissors
?:
never
;
hand_res
?:
never
;
hand_res
?:
never
;
swap_grave_deck
?:
never
;
swap_grave_deck
?:
never
;
sibyl_name
?:
never
;
}
|
{
}
|
{
start
?:
never
;
start
?:
never
;
draw
?:
never
;
draw
?:
never
;
...
@@ -5484,6 +5501,7 @@ export namespace ygopro {
...
@@ -5484,6 +5501,7 @@ export namespace ygopro {
rock_paper_scissors
?:
never
;
rock_paper_scissors
?:
never
;
hand_res
?:
never
;
hand_res
?:
never
;
swap_grave_deck
?:
never
;
swap_grave_deck
?:
never
;
sibyl_name
?:
never
;
}
|
{
}
|
{
start
?:
never
;
start
?:
never
;
draw
?:
never
;
draw
?:
never
;
...
@@ -5538,6 +5556,7 @@ export namespace ygopro {
...
@@ -5538,6 +5556,7 @@ export namespace ygopro {
rock_paper_scissors
?:
never
;
rock_paper_scissors
?:
never
;
hand_res
?:
never
;
hand_res
?:
never
;
swap_grave_deck
?:
never
;
swap_grave_deck
?:
never
;
sibyl_name
?:
never
;
}
|
{
}
|
{
start
?:
never
;
start
?:
never
;
draw
?:
never
;
draw
?:
never
;
...
@@ -5592,6 +5611,7 @@ export namespace ygopro {
...
@@ -5592,6 +5611,7 @@ export namespace ygopro {
rock_paper_scissors
?:
never
;
rock_paper_scissors
?:
never
;
hand_res
?:
never
;
hand_res
?:
never
;
swap_grave_deck
?:
never
;
swap_grave_deck
?:
never
;
sibyl_name
?:
never
;
}
|
{
}
|
{
start
?:
never
;
start
?:
never
;
draw
?:
never
;
draw
?:
never
;
...
@@ -5646,6 +5666,7 @@ export namespace ygopro {
...
@@ -5646,6 +5666,7 @@ export namespace ygopro {
rock_paper_scissors
?:
never
;
rock_paper_scissors
?:
never
;
hand_res
?:
never
;
hand_res
?:
never
;
swap_grave_deck
?:
never
;
swap_grave_deck
?:
never
;
sibyl_name
?:
never
;
}
|
{
}
|
{
start
?:
never
;
start
?:
never
;
draw
?:
never
;
draw
?:
never
;
...
@@ -5700,6 +5721,7 @@ export namespace ygopro {
...
@@ -5700,6 +5721,7 @@ export namespace ygopro {
rock_paper_scissors
?:
never
;
rock_paper_scissors
?:
never
;
hand_res
?:
never
;
hand_res
?:
never
;
swap_grave_deck
?:
never
;
swap_grave_deck
?:
never
;
sibyl_name
?:
never
;
}
|
{
}
|
{
start
?:
never
;
start
?:
never
;
draw
?:
never
;
draw
?:
never
;
...
@@ -5754,6 +5776,7 @@ export namespace ygopro {
...
@@ -5754,6 +5776,7 @@ export namespace ygopro {
rock_paper_scissors
?:
never
;
rock_paper_scissors
?:
never
;
hand_res
?:
never
;
hand_res
?:
never
;
swap_grave_deck
?:
never
;
swap_grave_deck
?:
never
;
sibyl_name
?:
never
;
}
|
{
}
|
{
start
?:
never
;
start
?:
never
;
draw
?:
never
;
draw
?:
never
;
...
@@ -5808,6 +5831,7 @@ export namespace ygopro {
...
@@ -5808,6 +5831,7 @@ export namespace ygopro {
rock_paper_scissors
?:
never
;
rock_paper_scissors
?:
never
;
hand_res
?:
never
;
hand_res
?:
never
;
swap_grave_deck
?:
never
;
swap_grave_deck
?:
never
;
sibyl_name
?:
never
;
}
|
{
}
|
{
start
?:
never
;
start
?:
never
;
draw
?:
never
;
draw
?:
never
;
...
@@ -5862,6 +5886,7 @@ export namespace ygopro {
...
@@ -5862,6 +5886,7 @@ export namespace ygopro {
rock_paper_scissors
?:
never
;
rock_paper_scissors
?:
never
;
hand_res
?:
never
;
hand_res
?:
never
;
swap_grave_deck
?:
never
;
swap_grave_deck
?:
never
;
sibyl_name
?:
never
;
}
|
{
}
|
{
start
?:
never
;
start
?:
never
;
draw
?:
never
;
draw
?:
never
;
...
@@ -5916,6 +5941,7 @@ export namespace ygopro {
...
@@ -5916,6 +5941,7 @@ export namespace ygopro {
rock_paper_scissors
?:
never
;
rock_paper_scissors
?:
never
;
hand_res
?:
never
;
hand_res
?:
never
;
swap_grave_deck
?:
never
;
swap_grave_deck
?:
never
;
sibyl_name
?:
never
;
}
|
{
}
|
{
start
?:
never
;
start
?:
never
;
draw
?:
never
;
draw
?:
never
;
...
@@ -5970,6 +5996,7 @@ export namespace ygopro {
...
@@ -5970,6 +5996,7 @@ export namespace ygopro {
rock_paper_scissors
?:
never
;
rock_paper_scissors
?:
never
;
hand_res
?:
never
;
hand_res
?:
never
;
swap_grave_deck
?:
never
;
swap_grave_deck
?:
never
;
sibyl_name
?:
never
;
}
|
{
}
|
{
start
?:
never
;
start
?:
never
;
draw
?:
never
;
draw
?:
never
;
...
@@ -6024,6 +6051,7 @@ export namespace ygopro {
...
@@ -6024,6 +6051,7 @@ export namespace ygopro {
rock_paper_scissors
?:
never
;
rock_paper_scissors
?:
never
;
hand_res
?:
never
;
hand_res
?:
never
;
swap_grave_deck
?:
never
;
swap_grave_deck
?:
never
;
sibyl_name
?:
never
;
}
|
{
}
|
{
start
?:
never
;
start
?:
never
;
draw
?:
never
;
draw
?:
never
;
...
@@ -6078,6 +6106,7 @@ export namespace ygopro {
...
@@ -6078,6 +6106,7 @@ export namespace ygopro {
rock_paper_scissors
?:
never
;
rock_paper_scissors
?:
never
;
hand_res
?:
never
;
hand_res
?:
never
;
swap_grave_deck
?:
never
;
swap_grave_deck
?:
never
;
sibyl_name
?:
never
;
}
|
{
}
|
{
start
?:
never
;
start
?:
never
;
draw
?:
never
;
draw
?:
never
;
...
@@ -6132,6 +6161,7 @@ export namespace ygopro {
...
@@ -6132,6 +6161,7 @@ export namespace ygopro {
rock_paper_scissors
?:
never
;
rock_paper_scissors
?:
never
;
hand_res
?:
never
;
hand_res
?:
never
;
swap_grave_deck
?:
never
;
swap_grave_deck
?:
never
;
sibyl_name
?:
never
;
}
|
{
}
|
{
start
?:
never
;
start
?:
never
;
draw
?:
never
;
draw
?:
never
;
...
@@ -6186,6 +6216,7 @@ export namespace ygopro {
...
@@ -6186,6 +6216,7 @@ export namespace ygopro {
rock_paper_scissors
?:
never
;
rock_paper_scissors
?:
never
;
hand_res
?:
never
;
hand_res
?:
never
;
swap_grave_deck
?:
never
;
swap_grave_deck
?:
never
;
sibyl_name
?:
never
;
}
|
{
}
|
{
start
?:
never
;
start
?:
never
;
draw
?:
never
;
draw
?:
never
;
...
@@ -6240,6 +6271,7 @@ export namespace ygopro {
...
@@ -6240,6 +6271,7 @@ export namespace ygopro {
rock_paper_scissors
?:
never
;
rock_paper_scissors
?:
never
;
hand_res
?:
never
;
hand_res
?:
never
;
swap_grave_deck
?:
never
;
swap_grave_deck
?:
never
;
sibyl_name
?:
never
;
}
|
{
}
|
{
start
?:
never
;
start
?:
never
;
draw
?:
never
;
draw
?:
never
;
...
@@ -6294,6 +6326,7 @@ export namespace ygopro {
...
@@ -6294,6 +6326,7 @@ export namespace ygopro {
rock_paper_scissors
?:
never
;
rock_paper_scissors
?:
never
;
hand_res
?:
never
;
hand_res
?:
never
;
swap_grave_deck
?:
never
;
swap_grave_deck
?:
never
;
sibyl_name
?:
never
;
}
|
{
}
|
{
start
?:
never
;
start
?:
never
;
draw
?:
never
;
draw
?:
never
;
...
@@ -6348,6 +6381,7 @@ export namespace ygopro {
...
@@ -6348,6 +6381,7 @@ export namespace ygopro {
rock_paper_scissors
?:
never
;
rock_paper_scissors
?:
never
;
hand_res
?:
never
;
hand_res
?:
never
;
swap_grave_deck
?:
never
;
swap_grave_deck
?:
never
;
sibyl_name
?:
never
;
}
|
{
}
|
{
start
?:
never
;
start
?:
never
;
draw
?:
never
;
draw
?:
never
;
...
@@ -6402,6 +6436,7 @@ export namespace ygopro {
...
@@ -6402,6 +6436,7 @@ export namespace ygopro {
rock_paper_scissors
?:
never
;
rock_paper_scissors
?:
never
;
hand_res
?:
never
;
hand_res
?:
never
;
swap_grave_deck
?:
never
;
swap_grave_deck
?:
never
;
sibyl_name
?:
never
;
}
|
{
}
|
{
start
?:
never
;
start
?:
never
;
draw
?:
never
;
draw
?:
never
;
...
@@ -6456,6 +6491,7 @@ export namespace ygopro {
...
@@ -6456,6 +6491,7 @@ export namespace ygopro {
rock_paper_scissors
?:
never
;
rock_paper_scissors
?:
never
;
hand_res
?:
never
;
hand_res
?:
never
;
swap_grave_deck
?:
never
;
swap_grave_deck
?:
never
;
sibyl_name
?:
never
;
}
|
{
}
|
{
start
?:
never
;
start
?:
never
;
draw
?:
never
;
draw
?:
never
;
...
@@ -6510,6 +6546,7 @@ export namespace ygopro {
...
@@ -6510,6 +6546,7 @@ export namespace ygopro {
rock_paper_scissors
?:
never
;
rock_paper_scissors
?:
never
;
hand_res
?:
never
;
hand_res
?:
never
;
swap_grave_deck
?:
never
;
swap_grave_deck
?:
never
;
sibyl_name
?:
never
;
}
|
{
}
|
{
start
?:
never
;
start
?:
never
;
draw
?:
never
;
draw
?:
never
;
...
@@ -6564,6 +6601,7 @@ export namespace ygopro {
...
@@ -6564,6 +6601,7 @@ export namespace ygopro {
rock_paper_scissors
?:
never
;
rock_paper_scissors
?:
never
;
hand_res
?:
never
;
hand_res
?:
never
;
swap_grave_deck
?:
never
;
swap_grave_deck
?:
never
;
sibyl_name
?:
never
;
}
|
{
}
|
{
start
?:
never
;
start
?:
never
;
draw
?:
never
;
draw
?:
never
;
...
@@ -6618,6 +6656,7 @@ export namespace ygopro {
...
@@ -6618,6 +6656,7 @@ export namespace ygopro {
rock_paper_scissors
?:
never
;
rock_paper_scissors
?:
never
;
hand_res
?:
never
;
hand_res
?:
never
;
swap_grave_deck
?:
never
;
swap_grave_deck
?:
never
;
sibyl_name
?:
never
;
}
|
{
}
|
{
start
?:
never
;
start
?:
never
;
draw
?:
never
;
draw
?:
never
;
...
@@ -6672,6 +6711,7 @@ export namespace ygopro {
...
@@ -6672,6 +6711,7 @@ export namespace ygopro {
rock_paper_scissors
?:
never
;
rock_paper_scissors
?:
never
;
hand_res
?:
never
;
hand_res
?:
never
;
swap_grave_deck
?:
never
;
swap_grave_deck
?:
never
;
sibyl_name
?:
never
;
}
|
{
}
|
{
start
?:
never
;
start
?:
never
;
draw
?:
never
;
draw
?:
never
;
...
@@ -6726,6 +6766,7 @@ export namespace ygopro {
...
@@ -6726,6 +6766,7 @@ export namespace ygopro {
rock_paper_scissors
?:
never
;
rock_paper_scissors
?:
never
;
hand_res
?:
never
;
hand_res
?:
never
;
swap_grave_deck
?:
never
;
swap_grave_deck
?:
never
;
sibyl_name
?:
never
;
}
|
{
}
|
{
start
?:
never
;
start
?:
never
;
draw
?:
never
;
draw
?:
never
;
...
@@ -6780,6 +6821,7 @@ export namespace ygopro {
...
@@ -6780,6 +6821,7 @@ export namespace ygopro {
rock_paper_scissors
?:
never
;
rock_paper_scissors
?:
never
;
hand_res
?:
never
;
hand_res
?:
never
;
swap_grave_deck
?:
never
;
swap_grave_deck
?:
never
;
sibyl_name
?:
never
;
}
|
{
}
|
{
start
?:
never
;
start
?:
never
;
draw
?:
never
;
draw
?:
never
;
...
@@ -6834,6 +6876,7 @@ export namespace ygopro {
...
@@ -6834,6 +6876,7 @@ export namespace ygopro {
rock_paper_scissors
?:
never
;
rock_paper_scissors
?:
never
;
hand_res
?:
never
;
hand_res
?:
never
;
swap_grave_deck
?:
never
;
swap_grave_deck
?:
never
;
sibyl_name
?:
never
;
}
|
{
}
|
{
start
?:
never
;
start
?:
never
;
draw
?:
never
;
draw
?:
never
;
...
@@ -6888,6 +6931,7 @@ export namespace ygopro {
...
@@ -6888,6 +6931,7 @@ export namespace ygopro {
rock_paper_scissors
?:
never
;
rock_paper_scissors
?:
never
;
hand_res
?:
never
;
hand_res
?:
never
;
swap_grave_deck
?:
never
;
swap_grave_deck
?:
never
;
sibyl_name
?:
never
;
}
|
{
}
|
{
start
?:
never
;
start
?:
never
;
draw
?:
never
;
draw
?:
never
;
...
@@ -6942,6 +6986,7 @@ export namespace ygopro {
...
@@ -6942,6 +6986,7 @@ export namespace ygopro {
rock_paper_scissors
?:
never
;
rock_paper_scissors
?:
never
;
hand_res
?:
never
;
hand_res
?:
never
;
swap_grave_deck
?:
never
;
swap_grave_deck
?:
never
;
sibyl_name
?:
never
;
}
|
{
}
|
{
start
?:
never
;
start
?:
never
;
draw
?:
never
;
draw
?:
never
;
...
@@ -6996,6 +7041,7 @@ export namespace ygopro {
...
@@ -6996,6 +7041,7 @@ export namespace ygopro {
rock_paper_scissors
?:
never
;
rock_paper_scissors
?:
never
;
hand_res
?:
never
;
hand_res
?:
never
;
swap_grave_deck
?:
never
;
swap_grave_deck
?:
never
;
sibyl_name
?:
never
;
}
|
{
}
|
{
start
?:
never
;
start
?:
never
;
draw
?:
never
;
draw
?:
never
;
...
@@ -7050,6 +7096,7 @@ export namespace ygopro {
...
@@ -7050,6 +7096,7 @@ export namespace ygopro {
rock_paper_scissors
?:
never
;
rock_paper_scissors
?:
never
;
hand_res
?:
never
;
hand_res
?:
never
;
swap_grave_deck
?:
never
;
swap_grave_deck
?:
never
;
sibyl_name
?:
never
;
}
|
{
}
|
{
start
?:
never
;
start
?:
never
;
draw
?:
never
;
draw
?:
never
;
...
@@ -7104,6 +7151,7 @@ export namespace ygopro {
...
@@ -7104,6 +7151,7 @@ export namespace ygopro {
rock_paper_scissors
?:
never
;
rock_paper_scissors
?:
never
;
hand_res
?:
never
;
hand_res
?:
never
;
swap_grave_deck
?:
never
;
swap_grave_deck
?:
never
;
sibyl_name
?:
never
;
}
|
{
}
|
{
start
?:
never
;
start
?:
never
;
draw
?:
never
;
draw
?:
never
;
...
@@ -7158,6 +7206,7 @@ export namespace ygopro {
...
@@ -7158,6 +7206,7 @@ export namespace ygopro {
rock_paper_scissors
?:
never
;
rock_paper_scissors
?:
never
;
hand_res
?:
never
;
hand_res
?:
never
;
swap_grave_deck
?:
never
;
swap_grave_deck
?:
never
;
sibyl_name
?:
never
;
}
|
{
}
|
{
start
?:
never
;
start
?:
never
;
draw
?:
never
;
draw
?:
never
;
...
@@ -7212,6 +7261,7 @@ export namespace ygopro {
...
@@ -7212,6 +7261,7 @@ export namespace ygopro {
rock_paper_scissors
?:
never
;
rock_paper_scissors
?:
never
;
hand_res
?:
never
;
hand_res
?:
never
;
swap_grave_deck
?:
never
;
swap_grave_deck
?:
never
;
sibyl_name
?:
never
;
}
|
{
}
|
{
start
?:
never
;
start
?:
never
;
draw
?:
never
;
draw
?:
never
;
...
@@ -7266,6 +7316,7 @@ export namespace ygopro {
...
@@ -7266,6 +7316,7 @@ export namespace ygopro {
rock_paper_scissors
?:
StocGameMessage
.
MsgRockPaperScissors
;
rock_paper_scissors
?:
StocGameMessage
.
MsgRockPaperScissors
;
hand_res
?:
never
;
hand_res
?:
never
;
swap_grave_deck
?:
never
;
swap_grave_deck
?:
never
;
sibyl_name
?:
never
;
}
|
{
}
|
{
start
?:
never
;
start
?:
never
;
draw
?:
never
;
draw
?:
never
;
...
@@ -7320,6 +7371,7 @@ export namespace ygopro {
...
@@ -7320,6 +7371,7 @@ export namespace ygopro {
rock_paper_scissors
?:
never
;
rock_paper_scissors
?:
never
;
hand_res
?:
StocGameMessage
.
MsgHandResult
;
hand_res
?:
StocGameMessage
.
MsgHandResult
;
swap_grave_deck
?:
never
;
swap_grave_deck
?:
never
;
sibyl_name
?:
never
;
}
|
{
}
|
{
start
?:
never
;
start
?:
never
;
draw
?:
never
;
draw
?:
never
;
...
@@ -7374,6 +7426,62 @@ export namespace ygopro {
...
@@ -7374,6 +7426,62 @@ export namespace ygopro {
rock_paper_scissors
?:
never
;
rock_paper_scissors
?:
never
;
hand_res
?:
never
;
hand_res
?:
never
;
swap_grave_deck
?:
StocGameMessage
.
MsgSwapGraveDeck
;
swap_grave_deck
?:
StocGameMessage
.
MsgSwapGraveDeck
;
sibyl_name
?:
never
;
}
|
{
start
?:
never
;
draw
?:
never
;
new_turn
?:
never
;
new_phase
?:
never
;
hint
?:
never
;
select_idle_cmd
?:
never
;
select_place
?:
never
;
move
?:
never
;
select_card
?:
never
;
select_chain
?:
never
;
select_effect_yn
?:
never
;
select_position
?:
never
;
select_option
?:
never
;
shuffle_hand_extra
?:
never
;
select_battle_cmd
?:
never
;
pos_change
?:
never
;
select_unselect_card
?:
never
;
select_yes_no
?:
never
;
update_hp
?:
never
;
win
?:
never
;
wait
?:
never
;
unimplemented
?:
never
;
update_data
?:
never
;
reload_field
?:
never
;
select_sum
?:
never
;
select_tribute
?:
never
;
update_counter
?:
never
;
select_counter
?:
never
;
sort_card
?:
never
;
set
?:
never
;
swap
?:
never
;
summoning
?:
never
;
summoned
?:
never
;
flip_summoning
?:
never
;
flip_summoned
?:
never
;
sp_summoning
?:
never
;
sp_summoned
?:
never
;
chaining
?:
never
;
attack
?:
never
;
attack_disable
?:
never
;
chain_solved
?:
never
;
chain_end
?:
never
;
announce
?:
never
;
lp_update
?:
never
;
confirm_cards
?:
never
;
become_target
?:
never
;
toss
?:
never
;
shuffle_set_card
?:
never
;
field_disabled
?:
never
;
shuffle_deck
?:
never
;
rock_paper_scissors
?:
never
;
hand_res
?:
never
;
swap_grave_deck
?:
never
;
sibyl_name
?:
StocGameMessage
.
MsgSibylName
;
}))))
{
}))))
{
super
();
super
();
pb_1
.
Message
.
initialize
(
this
,
Array
.
isArray
(
data
)
?
data
:
[],
0
,
-
1
,
[],
this
.
#
one_of_decls
);
pb_1
.
Message
.
initialize
(
this
,
Array
.
isArray
(
data
)
?
data
:
[],
0
,
-
1
,
[],
this
.
#
one_of_decls
);
...
@@ -7537,6 +7645,9 @@ export namespace ygopro {
...
@@ -7537,6 +7645,9 @@ export namespace ygopro {
if
(
"
swap_grave_deck
"
in
data
&&
data
.
swap_grave_deck
!=
undefined
)
{
if
(
"
swap_grave_deck
"
in
data
&&
data
.
swap_grave_deck
!=
undefined
)
{
this
.
swap_grave_deck
=
data
.
swap_grave_deck
;
this
.
swap_grave_deck
=
data
.
swap_grave_deck
;
}
}
if
(
"
sibyl_name
"
in
data
&&
data
.
sibyl_name
!=
undefined
)
{
this
.
sibyl_name
=
data
.
sibyl_name
;
}
}
}
}
}
get
start
()
{
get
start
()
{
...
@@ -8016,9 +8127,18 @@ export namespace ygopro {
...
@@ -8016,9 +8127,18 @@ export namespace ygopro {
get
has_swap_grave_deck
()
{
get
has_swap_grave_deck
()
{
return
pb_1
.
Message
.
getField
(
this
,
53
)
!=
null
;
return
pb_1
.
Message
.
getField
(
this
,
53
)
!=
null
;
}
}
get
sibyl_name
()
{
return
pb_1
.
Message
.
getWrapperField
(
this
,
StocGameMessage
.
MsgSibylName
,
54
)
as
StocGameMessage
.
MsgSibylName
;
}
set
sibyl_name
(
value
:
StocGameMessage
.
MsgSibylName
)
{
pb_1
.
Message
.
setOneofWrapperField
(
this
,
54
,
this
.
#
one_of_decls
[
0
],
value
);
}
get
has_sibyl_name
()
{
return
pb_1
.
Message
.
getField
(
this
,
54
)
!=
null
;
}
get
gameMsg
()
{
get
gameMsg
()
{
const
cases
:
{
const
cases
:
{
[
index
:
number
]:
"
none
"
|
"
start
"
|
"
draw
"
|
"
new_turn
"
|
"
new_phase
"
|
"
hint
"
|
"
select_idle_cmd
"
|
"
select_place
"
|
"
move
"
|
"
select_card
"
|
"
select_chain
"
|
"
select_effect_yn
"
|
"
select_position
"
|
"
select_option
"
|
"
shuffle_hand_extra
"
|
"
select_battle_cmd
"
|
"
pos_change
"
|
"
select_unselect_card
"
|
"
select_yes_no
"
|
"
update_hp
"
|
"
win
"
|
"
wait
"
|
"
unimplemented
"
|
"
update_data
"
|
"
reload_field
"
|
"
select_sum
"
|
"
select_tribute
"
|
"
update_counter
"
|
"
select_counter
"
|
"
sort_card
"
|
"
set
"
|
"
swap
"
|
"
summoning
"
|
"
summoned
"
|
"
flip_summoning
"
|
"
flip_summoned
"
|
"
sp_summoning
"
|
"
sp_summoned
"
|
"
chaining
"
|
"
attack
"
|
"
attack_disable
"
|
"
chain_solved
"
|
"
chain_end
"
|
"
announce
"
|
"
lp_update
"
|
"
confirm_cards
"
|
"
become_target
"
|
"
toss
"
|
"
shuffle_set_card
"
|
"
field_disabled
"
|
"
shuffle_deck
"
|
"
rock_paper_scissors
"
|
"
hand_res
"
|
"
swap_grave_deck
"
;
[
index
:
number
]:
"
none
"
|
"
start
"
|
"
draw
"
|
"
new_turn
"
|
"
new_phase
"
|
"
hint
"
|
"
select_idle_cmd
"
|
"
select_place
"
|
"
move
"
|
"
select_card
"
|
"
select_chain
"
|
"
select_effect_yn
"
|
"
select_position
"
|
"
select_option
"
|
"
shuffle_hand_extra
"
|
"
select_battle_cmd
"
|
"
pos_change
"
|
"
select_unselect_card
"
|
"
select_yes_no
"
|
"
update_hp
"
|
"
win
"
|
"
wait
"
|
"
unimplemented
"
|
"
update_data
"
|
"
reload_field
"
|
"
select_sum
"
|
"
select_tribute
"
|
"
update_counter
"
|
"
select_counter
"
|
"
sort_card
"
|
"
set
"
|
"
swap
"
|
"
summoning
"
|
"
summoned
"
|
"
flip_summoning
"
|
"
flip_summoned
"
|
"
sp_summoning
"
|
"
sp_summoned
"
|
"
chaining
"
|
"
attack
"
|
"
attack_disable
"
|
"
chain_solved
"
|
"
chain_end
"
|
"
announce
"
|
"
lp_update
"
|
"
confirm_cards
"
|
"
become_target
"
|
"
toss
"
|
"
shuffle_set_card
"
|
"
field_disabled
"
|
"
shuffle_deck
"
|
"
rock_paper_scissors
"
|
"
hand_res
"
|
"
swap_grave_deck
"
|
"
sibyl_name
"
;
}
=
{
}
=
{
0
:
"
none
"
,
0
:
"
none
"
,
1
:
"
start
"
,
1
:
"
start
"
,
...
@@ -8073,9 +8193,10 @@ export namespace ygopro {
...
@@ -8073,9 +8193,10 @@ export namespace ygopro {
50
:
"
shuffle_deck
"
,
50
:
"
shuffle_deck
"
,
51
:
"
rock_paper_scissors
"
,
51
:
"
rock_paper_scissors
"
,
52
:
"
hand_res
"
,
52
:
"
hand_res
"
,
53
:
"
swap_grave_deck
"
53
:
"
swap_grave_deck
"
,
54
:
"
sibyl_name
"
};
};
return
cases
[
pb_1
.
Message
.
computeOneofCase
(
this
,
[
1
,
2
,
3
,
4
,
5
,
6
,
7
,
8
,
9
,
10
,
11
,
12
,
13
,
14
,
15
,
16
,
17
,
18
,
19
,
20
,
21
,
22
,
23
,
24
,
25
,
26
,
27
,
28
,
29
,
30
,
31
,
32
,
33
,
34
,
35
,
36
,
37
,
38
,
39
,
40
,
41
,
42
,
43
,
44
,
45
,
46
,
47
,
48
,
49
,
50
,
51
,
52
,
53
])];
return
cases
[
pb_1
.
Message
.
computeOneofCase
(
this
,
[
1
,
2
,
3
,
4
,
5
,
6
,
7
,
8
,
9
,
10
,
11
,
12
,
13
,
14
,
15
,
16
,
17
,
18
,
19
,
20
,
21
,
22
,
23
,
24
,
25
,
26
,
27
,
28
,
29
,
30
,
31
,
32
,
33
,
34
,
35
,
36
,
37
,
38
,
39
,
40
,
41
,
42
,
43
,
44
,
45
,
46
,
47
,
48
,
49
,
50
,
51
,
52
,
53
,
54
])];
}
}
static
fromObject
(
data
:
{
static
fromObject
(
data
:
{
start
?:
ReturnType
<
typeof
StocGameMessage
.
MsgStart
.
prototype
.
toObject
>
;
start
?:
ReturnType
<
typeof
StocGameMessage
.
MsgStart
.
prototype
.
toObject
>
;
...
@@ -8131,6 +8252,7 @@ export namespace ygopro {
...
@@ -8131,6 +8252,7 @@ export namespace ygopro {
rock_paper_scissors
?:
ReturnType
<
typeof
StocGameMessage
.
MsgRockPaperScissors
.
prototype
.
toObject
>
;
rock_paper_scissors
?:
ReturnType
<
typeof
StocGameMessage
.
MsgRockPaperScissors
.
prototype
.
toObject
>
;
hand_res
?:
ReturnType
<
typeof
StocGameMessage
.
MsgHandResult
.
prototype
.
toObject
>
;
hand_res
?:
ReturnType
<
typeof
StocGameMessage
.
MsgHandResult
.
prototype
.
toObject
>
;
swap_grave_deck
?:
ReturnType
<
typeof
StocGameMessage
.
MsgSwapGraveDeck
.
prototype
.
toObject
>
;
swap_grave_deck
?:
ReturnType
<
typeof
StocGameMessage
.
MsgSwapGraveDeck
.
prototype
.
toObject
>
;
sibyl_name
?:
ReturnType
<
typeof
StocGameMessage
.
MsgSibylName
.
prototype
.
toObject
>
;
}):
StocGameMessage
{
}):
StocGameMessage
{
const
message
=
new
StocGameMessage
({});
const
message
=
new
StocGameMessage
({});
if
(
data
.
start
!=
null
)
{
if
(
data
.
start
!=
null
)
{
...
@@ -8292,6 +8414,9 @@ export namespace ygopro {
...
@@ -8292,6 +8414,9 @@ export namespace ygopro {
if
(
data
.
swap_grave_deck
!=
null
)
{
if
(
data
.
swap_grave_deck
!=
null
)
{
message
.
swap_grave_deck
=
StocGameMessage
.
MsgSwapGraveDeck
.
fromObject
(
data
.
swap_grave_deck
);
message
.
swap_grave_deck
=
StocGameMessage
.
MsgSwapGraveDeck
.
fromObject
(
data
.
swap_grave_deck
);
}
}
if
(
data
.
sibyl_name
!=
null
)
{
message
.
sibyl_name
=
StocGameMessage
.
MsgSibylName
.
fromObject
(
data
.
sibyl_name
);
}
return
message
;
return
message
;
}
}
toObject
()
{
toObject
()
{
...
@@ -8349,6 +8474,7 @@ export namespace ygopro {
...
@@ -8349,6 +8474,7 @@ export namespace ygopro {
rock_paper_scissors
?:
ReturnType
<
typeof
StocGameMessage
.
MsgRockPaperScissors
.
prototype
.
toObject
>
;
rock_paper_scissors
?:
ReturnType
<
typeof
StocGameMessage
.
MsgRockPaperScissors
.
prototype
.
toObject
>
;
hand_res
?:
ReturnType
<
typeof
StocGameMessage
.
MsgHandResult
.
prototype
.
toObject
>
;
hand_res
?:
ReturnType
<
typeof
StocGameMessage
.
MsgHandResult
.
prototype
.
toObject
>
;
swap_grave_deck
?:
ReturnType
<
typeof
StocGameMessage
.
MsgSwapGraveDeck
.
prototype
.
toObject
>
;
swap_grave_deck
?:
ReturnType
<
typeof
StocGameMessage
.
MsgSwapGraveDeck
.
prototype
.
toObject
>
;
sibyl_name
?:
ReturnType
<
typeof
StocGameMessage
.
MsgSibylName
.
prototype
.
toObject
>
;
}
=
{};
}
=
{};
if
(
this
.
start
!=
null
)
{
if
(
this
.
start
!=
null
)
{
data
.
start
=
this
.
start
.
toObject
();
data
.
start
=
this
.
start
.
toObject
();
...
@@ -8509,6 +8635,9 @@ export namespace ygopro {
...
@@ -8509,6 +8635,9 @@ export namespace ygopro {
if
(
this
.
swap_grave_deck
!=
null
)
{
if
(
this
.
swap_grave_deck
!=
null
)
{
data
.
swap_grave_deck
=
this
.
swap_grave_deck
.
toObject
();
data
.
swap_grave_deck
=
this
.
swap_grave_deck
.
toObject
();
}
}
if
(
this
.
sibyl_name
!=
null
)
{
data
.
sibyl_name
=
this
.
sibyl_name
.
toObject
();
}
return
data
;
return
data
;
}
}
serialize
():
Uint8Array
;
serialize
():
Uint8Array
;
...
@@ -8621,6 +8750,8 @@ export namespace ygopro {
...
@@ -8621,6 +8750,8 @@ export namespace ygopro {
writer
.
writeMessage
(
52
,
this
.
hand_res
,
()
=>
this
.
hand_res
.
serialize
(
writer
));
writer
.
writeMessage
(
52
,
this
.
hand_res
,
()
=>
this
.
hand_res
.
serialize
(
writer
));
if
(
this
.
has_swap_grave_deck
)
if
(
this
.
has_swap_grave_deck
)
writer
.
writeMessage
(
53
,
this
.
swap_grave_deck
,
()
=>
this
.
swap_grave_deck
.
serialize
(
writer
));
writer
.
writeMessage
(
53
,
this
.
swap_grave_deck
,
()
=>
this
.
swap_grave_deck
.
serialize
(
writer
));
if
(
this
.
has_sibyl_name
)
writer
.
writeMessage
(
54
,
this
.
sibyl_name
,
()
=>
this
.
sibyl_name
.
serialize
(
writer
));
if
(
!
w
)
if
(
!
w
)
return
writer
.
getResultBuffer
();
return
writer
.
getResultBuffer
();
}
}
...
@@ -8789,6 +8920,9 @@ export namespace ygopro {
...
@@ -8789,6 +8920,9 @@ export namespace ygopro {
case
53
:
case
53
:
reader
.
readMessage
(
message
.
swap_grave_deck
,
()
=>
message
.
swap_grave_deck
=
StocGameMessage
.
MsgSwapGraveDeck
.
deserialize
(
reader
));
reader
.
readMessage
(
message
.
swap_grave_deck
,
()
=>
message
.
swap_grave_deck
=
StocGameMessage
.
MsgSwapGraveDeck
.
deserialize
(
reader
));
break
;
break
;
case
54
:
reader
.
readMessage
(
message
.
sibyl_name
,
()
=>
message
.
sibyl_name
=
StocGameMessage
.
MsgSibylName
.
deserialize
(
reader
));
break
;
default
:
reader
.
skipField
();
default
:
reader
.
skipField
();
}
}
}
}
...
@@ -16674,6 +16808,188 @@ export namespace ygopro {
...
@@ -16674,6 +16808,188 @@ export namespace ygopro {
return
MsgSwapGraveDeck
.
deserialize
(
bytes
);
return
MsgSwapGraveDeck
.
deserialize
(
bytes
);
}
}
}
}
export
class
MsgSibylName
extends
pb_1
.
Message
{
#
one_of_decls
:
number
[][]
=
[];
constructor
(
data
?:
any
[]
|
{
name_0
?:
string
;
name_0_tag
?:
string
;
name_0_c
?:
string
;
name_1
?:
string
;
name_1_tag
?:
string
;
name_1_c
?:
string
;
})
{
super
();
pb_1
.
Message
.
initialize
(
this
,
Array
.
isArray
(
data
)
?
data
:
[],
0
,
-
1
,
[],
this
.
#
one_of_decls
);
if
(
!
Array
.
isArray
(
data
)
&&
typeof
data
==
"
object
"
)
{
if
(
"
name_0
"
in
data
&&
data
.
name_0
!=
undefined
)
{
this
.
name_0
=
data
.
name_0
;
}
if
(
"
name_0_tag
"
in
data
&&
data
.
name_0_tag
!=
undefined
)
{
this
.
name_0_tag
=
data
.
name_0_tag
;
}
if
(
"
name_0_c
"
in
data
&&
data
.
name_0_c
!=
undefined
)
{
this
.
name_0_c
=
data
.
name_0_c
;
}
if
(
"
name_1
"
in
data
&&
data
.
name_1
!=
undefined
)
{
this
.
name_1
=
data
.
name_1
;
}
if
(
"
name_1_tag
"
in
data
&&
data
.
name_1_tag
!=
undefined
)
{
this
.
name_1_tag
=
data
.
name_1_tag
;
}
if
(
"
name_1_c
"
in
data
&&
data
.
name_1_c
!=
undefined
)
{
this
.
name_1_c
=
data
.
name_1_c
;
}
}
}
get
name_0
()
{
return
pb_1
.
Message
.
getFieldWithDefault
(
this
,
1
,
""
)
as
string
;
}
set
name_0
(
value
:
string
)
{
pb_1
.
Message
.
setField
(
this
,
1
,
value
);
}
get
name_0_tag
()
{
return
pb_1
.
Message
.
getFieldWithDefault
(
this
,
2
,
""
)
as
string
;
}
set
name_0_tag
(
value
:
string
)
{
pb_1
.
Message
.
setField
(
this
,
2
,
value
);
}
get
name_0_c
()
{
return
pb_1
.
Message
.
getFieldWithDefault
(
this
,
3
,
""
)
as
string
;
}
set
name_0_c
(
value
:
string
)
{
pb_1
.
Message
.
setField
(
this
,
3
,
value
);
}
get
name_1
()
{
return
pb_1
.
Message
.
getFieldWithDefault
(
this
,
4
,
""
)
as
string
;
}
set
name_1
(
value
:
string
)
{
pb_1
.
Message
.
setField
(
this
,
4
,
value
);
}
get
name_1_tag
()
{
return
pb_1
.
Message
.
getFieldWithDefault
(
this
,
5
,
""
)
as
string
;
}
set
name_1_tag
(
value
:
string
)
{
pb_1
.
Message
.
setField
(
this
,
5
,
value
);
}
get
name_1_c
()
{
return
pb_1
.
Message
.
getFieldWithDefault
(
this
,
6
,
""
)
as
string
;
}
set
name_1_c
(
value
:
string
)
{
pb_1
.
Message
.
setField
(
this
,
6
,
value
);
}
static
fromObject
(
data
:
{
name_0
?:
string
;
name_0_tag
?:
string
;
name_0_c
?:
string
;
name_1
?:
string
;
name_1_tag
?:
string
;
name_1_c
?:
string
;
}):
MsgSibylName
{
const
message
=
new
MsgSibylName
({});
if
(
data
.
name_0
!=
null
)
{
message
.
name_0
=
data
.
name_0
;
}
if
(
data
.
name_0_tag
!=
null
)
{
message
.
name_0_tag
=
data
.
name_0_tag
;
}
if
(
data
.
name_0_c
!=
null
)
{
message
.
name_0_c
=
data
.
name_0_c
;
}
if
(
data
.
name_1
!=
null
)
{
message
.
name_1
=
data
.
name_1
;
}
if
(
data
.
name_1_tag
!=
null
)
{
message
.
name_1_tag
=
data
.
name_1_tag
;
}
if
(
data
.
name_1_c
!=
null
)
{
message
.
name_1_c
=
data
.
name_1_c
;
}
return
message
;
}
toObject
()
{
const
data
:
{
name_0
?:
string
;
name_0_tag
?:
string
;
name_0_c
?:
string
;
name_1
?:
string
;
name_1_tag
?:
string
;
name_1_c
?:
string
;
}
=
{};
if
(
this
.
name_0
!=
null
)
{
data
.
name_0
=
this
.
name_0
;
}
if
(
this
.
name_0_tag
!=
null
)
{
data
.
name_0_tag
=
this
.
name_0_tag
;
}
if
(
this
.
name_0_c
!=
null
)
{
data
.
name_0_c
=
this
.
name_0_c
;
}
if
(
this
.
name_1
!=
null
)
{
data
.
name_1
=
this
.
name_1
;
}
if
(
this
.
name_1_tag
!=
null
)
{
data
.
name_1_tag
=
this
.
name_1_tag
;
}
if
(
this
.
name_1_c
!=
null
)
{
data
.
name_1_c
=
this
.
name_1_c
;
}
return
data
;
}
serialize
():
Uint8Array
;
serialize
(
w
:
pb_1
.
BinaryWriter
):
void
;
serialize
(
w
?:
pb_1
.
BinaryWriter
):
Uint8Array
|
void
{
const
writer
=
w
||
new
pb_1
.
BinaryWriter
();
if
(
this
.
name_0
.
length
)
writer
.
writeString
(
1
,
this
.
name_0
);
if
(
this
.
name_0_tag
.
length
)
writer
.
writeString
(
2
,
this
.
name_0_tag
);
if
(
this
.
name_0_c
.
length
)
writer
.
writeString
(
3
,
this
.
name_0_c
);
if
(
this
.
name_1
.
length
)
writer
.
writeString
(
4
,
this
.
name_1
);
if
(
this
.
name_1_tag
.
length
)
writer
.
writeString
(
5
,
this
.
name_1_tag
);
if
(
this
.
name_1_c
.
length
)
writer
.
writeString
(
6
,
this
.
name_1_c
);
if
(
!
w
)
return
writer
.
getResultBuffer
();
}
static
deserialize
(
bytes
:
Uint8Array
|
pb_1
.
BinaryReader
):
MsgSibylName
{
const
reader
=
bytes
instanceof
pb_1
.
BinaryReader
?
bytes
:
new
pb_1
.
BinaryReader
(
bytes
),
message
=
new
MsgSibylName
();
while
(
reader
.
nextField
())
{
if
(
reader
.
isEndGroup
())
break
;
switch
(
reader
.
getFieldNumber
())
{
case
1
:
message
.
name_0
=
reader
.
readString
();
break
;
case
2
:
message
.
name_0_tag
=
reader
.
readString
();
break
;
case
3
:
message
.
name_0_c
=
reader
.
readString
();
break
;
case
4
:
message
.
name_1
=
reader
.
readString
();
break
;
case
5
:
message
.
name_1_tag
=
reader
.
readString
();
break
;
case
6
:
message
.
name_1_c
=
reader
.
readString
();
break
;
default
:
reader
.
skipField
();
}
}
return
message
;
}
serializeBinary
():
Uint8Array
{
return
this
.
serialize
();
}
static
deserializeBinary
(
bytes
:
Uint8Array
):
MsgSibylName
{
return
MsgSibylName
.
deserialize
(
bytes
);
}
}
export
class
MsgReloadField
extends
pb_1
.
Message
{
export
class
MsgReloadField
extends
pb_1
.
Message
{
#
one_of_decls
:
number
[][]
=
[];
#
one_of_decls
:
number
[][]
=
[];
constructor
(
data
?:
any
[]
|
{
constructor
(
data
?:
any
[]
|
{
...
...
src/api/ocgcore/ocgAdapter/protoDecl.ts
View file @
d31f77a7
...
@@ -69,3 +69,4 @@ export const MSG_FIELD_DISABLED = 56;
...
@@ -69,3 +69,4 @@ export const MSG_FIELD_DISABLED = 56;
export
const
MSG_HAND_RES
=
133
;
export
const
MSG_HAND_RES
=
133
;
export
const
MSG_SHUFFLE_HAND
=
33
;
export
const
MSG_SHUFFLE_HAND
=
33
;
export
const
MSG_SHUFFLE_EXTRA
=
39
;
export
const
MSG_SHUFFLE_EXTRA
=
39
;
export
const
MSG_SIBYL_NAME
=
235
;
src/api/ocgcore/ocgAdapter/stoc/stocGameMsg/mod.ts
View file @
d31f77a7
...
@@ -37,6 +37,7 @@ import MsgSelectTributeAdapter from "./selectTribute";
...
@@ -37,6 +37,7 @@ import MsgSelectTributeAdapter from "./selectTribute";
import
MsgSelectUnselectCardAdapter
from
"
./selectUnselectCard
"
;
import
MsgSelectUnselectCardAdapter
from
"
./selectUnselectCard
"
;
import
MsgShuffleHandExtraAdapter
from
"
./shuffleHandExtra
"
;
import
MsgShuffleHandExtraAdapter
from
"
./shuffleHandExtra
"
;
import
MsgShuffleSetCard
from
"
./shuffleSetCard
"
;
import
MsgShuffleSetCard
from
"
./shuffleSetCard
"
;
import
MsgSibylNameAdapter
from
"
./sibylName
"
;
import
MsgSortCard
from
"
./sortCard
"
;
import
MsgSortCard
from
"
./sortCard
"
;
import
MsgStartAdapter
from
"
./start
"
;
import
MsgStartAdapter
from
"
./start
"
;
import
MsgTossAdapter
from
"
./toss
"
;
import
MsgTossAdapter
from
"
./toss
"
;
...
@@ -273,6 +274,11 @@ export default class GameMsgAdapter implements StocAdapter {
...
@@ -273,6 +274,11 @@ export default class GameMsgAdapter implements StocAdapter {
break
;
break
;
}
}
case
GAME_MSG
.
MSG_SIBYL_NAME
:
{
gameMsg
.
sibyl_name
=
MsgSibylNameAdapter
(
gameData
);
break
;
}
default
:
{
default
:
{
gameMsg
.
unimplemented
=
new
ygopro
.
StocGameMessage
.
MsgUnimplemented
({
gameMsg
.
unimplemented
=
new
ygopro
.
StocGameMessage
.
MsgUnimplemented
({
command
:
func
,
command
:
func
,
...
...
src/api/ocgcore/ocgAdapter/stoc/stocGameMsg/sibylName.ts
0 → 100644
View file @
d31f77a7
import
{
ygopro
}
from
"
@/api/ocgcore/idl/ocgcore
"
;
import
MsgSibylName
=
ygopro
.
StocGameMessage
.
MsgSibylName
;
const
LEN
=
100
;
/*
* Msg Sibyl Name
* @param - TODO
*
* @usage - Replay模式获取对战双方的昵称
* */
export
default
(
data
:
Uint8Array
)
=>
{
const
decoder
=
new
TextDecoder
(
"
utf-16
"
);
let
offset
=
0
;
const
name_0
=
cutString
(
decoder
.
decode
(
data
.
slice
(
offset
,
offset
+
LEN
)));
offset
+=
LEN
;
const
name_0_tag
=
cutString
(
decoder
.
decode
(
data
.
slice
(
offset
,
offset
+
LEN
))
);
offset
+=
LEN
;
const
name_0_c
=
cutString
(
decoder
.
decode
(
data
.
slice
(
offset
,
offset
+
LEN
)));
offset
+=
LEN
;
const
name_1
=
cutString
(
decoder
.
decode
(
data
.
slice
(
offset
,
offset
+
LEN
)));
offset
+=
LEN
;
const
name_1_tag
=
cutString
(
decoder
.
decode
(
data
.
slice
(
offset
,
offset
+
LEN
))
);
offset
+=
LEN
;
const
name_1_c
=
cutString
(
decoder
.
decode
(
data
.
slice
(
offset
,
offset
+
LEN
)));
return
new
MsgSibylName
({
name_0
,
name_0_tag
,
name_0_c
,
name_1
,
name_1_tag
,
name_1_c
,
});
};
function
cutString
(
str
:
string
):
string
{
const
end
=
str
.
indexOf
(
"
\
0
"
);
return
str
.
substring
(
0
,
end
);
}
src/middleware/socket.ts
View file @
d31f77a7
...
@@ -26,6 +26,11 @@ export interface socketAction {
...
@@ -26,6 +26,11 @@ export interface socketAction {
player
:
string
;
player
:
string
;
passWd
:
string
;
passWd
:
string
;
};
};
isReplay
?:
boolean
;
// 是否是回放模式
replayInfo
?:
{
Url
:
string
;
// 提供回放服务的地址
data
:
ArrayBuffer
;
// 回放数据
};
// 通过长连接发送的数据
// 通过长连接发送的数据
payload
?:
Uint8Array
;
payload
?:
Uint8Array
;
}
}
...
@@ -36,12 +41,20 @@ let ws: WebSocketStream | null = null;
...
@@ -36,12 +41,20 @@ let ws: WebSocketStream | null = null;
export
default
async
function
(
action
:
socketAction
)
{
export
default
async
function
(
action
:
socketAction
)
{
switch
(
action
.
cmd
)
{
switch
(
action
.
cmd
)
{
case
socketCmd
.
CONNECT
:
{
case
socketCmd
.
CONNECT
:
{
const
info
=
action
.
initInfo
;
const
{
initInfo
:
info
,
isReplay
,
replayInfo
}
=
action
;
if
(
info
)
{
if
(
info
)
{
ws
=
new
WebSocketStream
(
info
.
ip
,
(
conn
,
_event
)
=>
ws
=
new
WebSocketStream
(
info
.
ip
,
(
conn
,
_event
)
=>
handleSocketOpen
(
conn
,
info
.
ip
,
info
.
player
,
info
.
passWd
)
handleSocketOpen
(
conn
,
info
.
ip
,
info
.
player
,
info
.
passWd
)
);
);
await
ws
.
execute
(
handleSocketMessage
);
}
else
if
(
isReplay
&&
replayInfo
)
{
ws
=
new
WebSocketStream
(
replayInfo
.
Url
,
(
conn
,
_event
)
=>
{
console
.
info
(
"
replay websocket open.
"
);
conn
.
binaryType
=
"
arraybuffer
"
;
conn
.
send
(
replayInfo
.
data
);
});
await
ws
.
execute
(
handleSocketMessage
);
await
ws
.
execute
(
handleSocketMessage
);
}
}
...
...
src/service/duel/gameMsg.ts
View file @
d31f77a7
import
{
ygopro
}
from
"
@/api
"
;
import
{
ygopro
}
from
"
@/api
"
;
import
{
sleep
}
from
"
@/infra
"
;
import
{
sleep
}
from
"
@/infra
"
;
import
{
matStore
}
from
"
@/stores
"
;
import
{
showWaiting
}
from
"
@/ui/Duel/Message
"
;
import
{
showWaiting
}
from
"
@/ui/Duel/Message
"
;
import
onAnnounce
from
"
./announce
"
;
import
onAnnounce
from
"
./announce
"
;
...
@@ -40,6 +41,7 @@ import onMsgSet from "./set";
...
@@ -40,6 +41,7 @@ import onMsgSet from "./set";
import
onMsgShuffleDeck
from
"
./shuffleDeck
"
;
import
onMsgShuffleDeck
from
"
./shuffleDeck
"
;
import
onMsgShuffleHandExtra
from
"
./shuffleHandExtra
"
;
import
onMsgShuffleHandExtra
from
"
./shuffleHandExtra
"
;
import
onMsgShuffleSetCard
from
"
./shuffleSetCard
"
;
import
onMsgShuffleSetCard
from
"
./shuffleSetCard
"
;
import
onMsgSibylName
from
"
./sibylName
"
;
import
onMsgSortCard
from
"
./sortCard
"
;
import
onMsgSortCard
from
"
./sortCard
"
;
import
onMsgSpSummoned
from
"
./spSummoned
"
;
import
onMsgSpSummoned
from
"
./spSummoned
"
;
import
onMsgSpSummoning
from
"
./spSummoning
"
;
import
onMsgSpSummoning
from
"
./spSummoning
"
;
...
@@ -69,6 +71,24 @@ const ActiveList = [
...
@@ -69,6 +71,24 @@ const ActiveList = [
"
select_yes_no
"
,
"
select_yes_no
"
,
];
];
const
ReplayIgnoreMsg
=
[
"
select_idle_cmd
"
,
"
select_place
"
,
"
select_card
"
,
"
select_chain
"
,
"
select_effect_yn
"
,
"
select_position
"
,
"
select_option
"
,
"
select_battle_cmd
"
,
"
select_unselect_card
"
,
"
select_yes_no
"
,
"
select_tribute
"
,
"
select_counter
"
,
"
rock_paper_scissors
"
,
"
sort_card
"
,
"
announce
"
,
];
let
animation
:
Promise
<
unknown
>
=
new
Promise
<
void
>
((
rs
)
=>
rs
());
let
animation
:
Promise
<
unknown
>
=
new
Promise
<
void
>
((
rs
)
=>
rs
());
export
default
async
function
handleGameMsg
(
pb
:
ygopro
.
YgoStocMsg
)
{
export
default
async
function
handleGameMsg
(
pb
:
ygopro
.
YgoStocMsg
)
{
...
@@ -83,6 +103,8 @@ async function _handleGameMsg(pb: ygopro.YgoStocMsg) {
...
@@ -83,6 +103,8 @@ async function _handleGameMsg(pb: ygopro.YgoStocMsg) {
showWaiting
(
false
);
showWaiting
(
false
);
}
}
if
(
matStore
.
isReplay
&&
ReplayIgnoreMsg
.
includes
(
msg
.
gameMsg
))
return
;
switch
(
msg
.
gameMsg
)
{
switch
(
msg
.
gameMsg
)
{
case
"
start
"
:
{
case
"
start
"
:
{
await
onMsgStart
(
msg
.
start
);
await
onMsgStart
(
msg
.
start
);
...
@@ -345,6 +367,11 @@ async function _handleGameMsg(pb: ygopro.YgoStocMsg) {
...
@@ -345,6 +367,11 @@ async function _handleGameMsg(pb: ygopro.YgoStocMsg) {
break
;
break
;
}
}
case
"
sibyl_name
"
:
{
onMsgSibylName
(
msg
.
sibyl_name
);
break
;
}
case
"
unimplemented
"
:
{
case
"
unimplemented
"
:
{
onUnimplemented
(
msg
.
unimplemented
);
onUnimplemented
(
msg
.
unimplemented
);
...
...
src/service/duel/sibylName.ts
0 → 100644
View file @
d31f77a7
import
{
ygopro
}
from
"
@/api
"
;
import
{
playerStore
}
from
"
@/stores
"
;
type
MsgSibylName
=
ygopro
.
StocGameMessage
.
MsgSibylName
;
export
default
(
sibylName
:
MsgSibylName
)
=>
{
playerStore
.
getMePlayer
().
name
=
sibylName
.
name_0
;
playerStore
.
getOpPlayer
().
name
=
sibylName
.
name_1
;
};
src/service/duel/start.ts
View file @
d31f77a7
...
@@ -7,6 +7,7 @@ import { fetchCard, ygopro } from "@/api";
...
@@ -7,6 +7,7 @@ import { fetchCard, ygopro } from "@/api";
import
{
useConfig
}
from
"
@/config
"
;
import
{
useConfig
}
from
"
@/config
"
;
import
{
sleep
}
from
"
@/infra
"
;
import
{
sleep
}
from
"
@/infra
"
;
import
{
cardStore
,
CardType
,
matStore
}
from
"
@/stores
"
;
import
{
cardStore
,
CardType
,
matStore
}
from
"
@/stores
"
;
import
{
replayStart
}
from
"
@/ui/Replay
"
;
const
TOKEN_SIZE
=
13
;
// 每人场上最多就只可能有13个token
const
TOKEN_SIZE
=
13
;
// 每人场上最多就只可能有13个token
export
default
async
(
start
:
ygopro
.
StocGameMessage
.
MsgStart
)
=>
{
export
default
async
(
start
:
ygopro
.
StocGameMessage
.
MsgStart
)
=>
{
...
@@ -72,7 +73,11 @@ export default async (start: ygopro.StocGameMessage.MsgStart) => {
...
@@ -72,7 +73,11 @@ export default async (start: ygopro.StocGameMessage.MsgStart) => {
// 设置自己的额外卡组,信息是在waitroom之中拿到的
// 设置自己的额外卡组,信息是在waitroom之中拿到的
cardStore
cardStore
.
at
(
ygopro
.
CardZone
.
EXTRA
,
1
-
opponent
)
.
at
(
ygopro
.
CardZone
.
EXTRA
,
1
-
opponent
)
.
forEach
((
card
)
=>
(
card
.
code
=
myExtraDeckCodes
.
pop
()
!
));
.
forEach
((
card
)
=>
(
card
.
code
=
myExtraDeckCodes
.
pop
()
??
0
));
if
(
matStore
.
isReplay
)
{
replayStart
();
}
// 初始化完后,sleep 1s,让UI初始化完成,
// 初始化完后,sleep 1s,让UI初始化完成,
// 否则在和AI对战时,由于后端给传给前端的`MSG`频率太高,会导致一些问题。
// 否则在和AI对战时,由于后端给传给前端的`MSG`频率太高,会导致一些问题。
...
...
src/stores/matStore/store.ts
View file @
d31f77a7
...
@@ -80,6 +80,7 @@ export const matStore: MatState = proxy<MatState>({
...
@@ -80,6 +80,7 @@ export const matStore: MatState = proxy<MatState>({
enableM2
:
false
,
// 允许进入M2阶段
enableM2
:
false
,
// 允许进入M2阶段
enableEp
:
false
,
// 允许回合结束
enableEp
:
false
,
// 允许回合结束
},
},
isReplay
:
false
,
unimplemented
:
0
,
unimplemented
:
0
,
handResults
:
{
handResults
:
{
me
:
0
,
me
:
0
,
...
...
src/stores/matStore/types.ts
View file @
d31f77a7
...
@@ -28,6 +28,8 @@ export interface MatState {
...
@@ -28,6 +28,8 @@ export interface MatState {
phase
:
PhaseState
;
phase
:
PhaseState
;
isReplay
:
boolean
;
// 是否是回放模式
result
?:
{
result
?:
{
isWin
:
boolean
;
isWin
:
boolean
;
reason
:
string
;
reason
:
string
;
...
...
src/ui/Login.tsx
View file @
d31f77a7
...
@@ -9,6 +9,7 @@
...
@@ -9,6 +9,7 @@
import
"
../styles/core.scss
"
;
import
"
../styles/core.scss
"
;
import
{
Input
}
from
"
antd
"
;
import
{
Input
}
from
"
antd
"
;
import
Link
from
"
antd/es/typography/Link
"
;
import
React
,
{
ChangeEvent
,
useEffect
,
useState
}
from
"
react
"
;
import
React
,
{
ChangeEvent
,
useEffect
,
useState
}
from
"
react
"
;
import
{
useNavigate
}
from
"
react-router-dom
"
;
import
{
useNavigate
}
from
"
react-router-dom
"
;
...
@@ -88,6 +89,9 @@ export default function Login() {
...
@@ -88,6 +89,9 @@ export default function Login() {
<
a
href=
"https://doc.neos.moe"
>
Player Guide
</
a
>
<
a
href=
"https://doc.neos.moe"
>
Player Guide
</
a
>
<
span
className=
"fa fa-arrow-right"
></
span
>
<
span
className=
"fa fa-arrow-right"
></
span
>
</
p
>
</
p
>
<
p
>
<
Link
href=
"replay"
>
Clik here to play ygo replay
</
Link
>
</
p
>
</
div
>
</
div
>
<
div
className=
"sign-in__actions clearfix"
>
<
div
className=
"sign-in__actions clearfix"
>
<
ul
>
<
ul
>
...
...
src/ui/Neos.tsx
View file @
d31f77a7
...
@@ -7,6 +7,7 @@ const Login = React.lazy(() => import("./Login"));
...
@@ -7,6 +7,7 @@ const Login = React.lazy(() => import("./Login"));
const
WaitRoom
=
React
.
lazy
(()
=>
import
(
"
./WaitRoom
"
));
const
WaitRoom
=
React
.
lazy
(()
=>
import
(
"
./WaitRoom
"
));
const
Mora
=
React
.
lazy
(()
=>
import
(
"
./Mora
"
));
const
Mora
=
React
.
lazy
(()
=>
import
(
"
./Mora
"
));
const
NeosDuel
=
React
.
lazy
(()
=>
import
(
"
./Duel/Main
"
));
const
NeosDuel
=
React
.
lazy
(()
=>
import
(
"
./Duel/Main
"
));
const
Replay
=
React
.
lazy
(()
=>
import
(
"
./Replay
"
));
export
default
function
()
{
export
default
function
()
{
return
(
return
(
...
@@ -28,6 +29,14 @@ export default function () {
...
@@ -28,6 +29,14 @@ export default function () {
</
Suspense
>
</
Suspense
>
}
}
/>
/>
<
Route
path=
"/replay"
element=
{
<
Suspense
fallback=
{
<
Loading
/>
}
>
<
Replay
/>
</
Suspense
>
}
/>
<
Route
<
Route
path=
"/duel/:player/:passWd/:ip"
path=
"/duel/:player/:passWd/:ip"
element=
{
element=
{
...
...
src/ui/Replay/index.scss
0 → 100644
View file @
d31f77a7
src/ui/Replay/index.tsx
0 → 100644
View file @
d31f77a7
import
"
../../styles/core.scss
"
;
import
{
UploadOutlined
}
from
"
@ant-design/icons
"
;
import
{
Button
,
message
,
Modal
,
Upload
,
UploadProps
}
from
"
antd
"
;
import
React
,
{
useEffect
,
useState
}
from
"
react
"
;
import
{
useNavigate
}
from
"
react-router-dom
"
;
import
rustInit
from
"
rust-src
"
;
import
{
proxy
,
useSnapshot
}
from
"
valtio
"
;
import
{
initStrings
}
from
"
@/api
"
;
import
{
useConfig
}
from
"
@/config
"
;
import
socketMiddleWare
,
{
socketCmd
}
from
"
@/middleware/socket
"
;
import
sqliteMiddleWare
,
{
sqliteCmd
}
from
"
@/middleware/sqlite
"
;
import
{
matStore
}
from
"
@/stores
"
;
const
NeosConfig
=
useConfig
();
const
localStore
=
proxy
({
hasStart
:
false
,
});
const
ReplayModal
:
React
.
FC
=
()
=>
{
const
{
hasStart
}
=
useSnapshot
(
localStore
);
const
[
replay
,
setReplay
]
=
useState
<
null
|
ArrayBuffer
>
(
null
);
const
uploadProps
:
UploadProps
=
{
name
:
"
replay
"
,
onChange
(
info
)
{
info
.
file
.
status
=
"
done
"
;
},
beforeUpload
(
file
,
_
)
{
const
reader
=
new
FileReader
();
reader
.
readAsArrayBuffer
(
file
);
reader
.
onload
=
(
e
)
=>
setReplay
(
e
.
target
?.
result
as
ArrayBuffer
);
},
};
const
navigate
=
useNavigate
();
useEffect
(()
=>
{
if
(
hasStart
)
{
// 跳转
navigate
(
`/duel/neos/replay/
${
NeosConfig
.
replayUrl
}
`
);
}
},
[
hasStart
]);
return
(
<
Modal
title=
"选择回放"
open=
{
true
}
maskClosable=
{
false
}
onOk=
{
async
()
=>
{
if
(
replay
===
null
)
{
message
.
error
(
"
请先上传录像文件
"
);
}
else
{
// 标记为回放模式
matStore
.
isReplay
=
true
;
// 初始化wasm
const
url
=
import
.
meta
.
env
.
BASE_URL
===
"
/
"
?
undefined
:
new
URL
(
"
rust_src_bg.wasm
"
,
`${import.meta.env.BASE_URL}assets/`
);
await
rustInit
(
url
);
// 初始化额外卡组
// FIXME: 这样写应该不对,有空来修
window
.
myExtraDeckCodes
=
[];
// 初始化sqlite
await
sqliteMiddleWare
({
cmd
:
sqliteCmd
.
INIT
,
initInfo
:
{
dbUrl
:
NeosConfig
.
cardsDbUrl
},
});
// 初始化文案
await
initStrings
();
// 连接回放websocket服务
socketMiddleWare
({
cmd
:
socketCmd
.
CONNECT
,
isReplay
:
true
,
replayInfo
:
{
Url
:
NeosConfig
.
replayUrl
,
data
:
replay
,
},
});
}
}
}
onCancel=
{
()
=>
{
// 断开websocket连接
socketMiddleWare
({
cmd
:
socketCmd
.
DISCONNECT
});
// 回到初始界面
navigate
(
"
/
"
);
}
}
>
<
Upload
{
...
uploadProps
}
>
<
Button
icon=
{
<
UploadOutlined
/>
}
>
点击上传录像文件
</
Button
>
</
Upload
>
</
Modal
>
);
};
export
const
replayStart
=
()
=>
{
localStore
.
hasStart
=
true
;
};
export
default
ReplayModal
;
src/ui/WaitRoom.tsx
View file @
d31f77a7
...
@@ -59,15 +59,12 @@ const WaitRoom = () => {
...
@@ -59,15 +59,12 @@ const WaitRoom = () => {
useEffect
(()
=>
{
useEffect
(()
=>
{
if
(
ip
&&
player
&&
player
.
length
!=
0
&&
passWd
&&
passWd
.
length
!=
0
)
{
if
(
ip
&&
player
&&
player
.
length
!=
0
&&
passWd
&&
passWd
.
length
!=
0
)
{
const
init
=
async
()
=>
{
const
init
=
async
()
=>
{
// 页面第一次渲染时,通过socket中间件向ygopro服务端请求建立长连接
// 初始化wasm
socketMiddleWare
({
const
url
=
cmd
:
socketCmd
.
CONNECT
,
import
.
meta
.
env
.
BASE_URL
===
"
/
"
initInfo
:
{
?
undefined
ip
,
:
new
URL
(
"
rust_src_bg.wasm
"
,
`
${
import
.
meta
.
env
.
BASE_URL
}
assets/`
);
player
,
await
rustInit
(
url
);
passWd
,
},
});
// 初始化sqlite
// 初始化sqlite
await
sqliteMiddleWare
({
await
sqliteMiddleWare
({
...
@@ -78,12 +75,15 @@ const WaitRoom = () => {
...
@@ -78,12 +75,15 @@ const WaitRoom = () => {
// 初始化文案
// 初始化文案
await
initStrings
();
await
initStrings
();
// 初始化wasm
// 页面第一次渲染时,通过socket中间件向ygopro服务端请求建立长连接
const
url
=
socketMiddleWare
({
import
.
meta
.
env
.
BASE_URL
===
"
/
"
cmd
:
socketCmd
.
CONNECT
,
?
undefined
initInfo
:
{
:
new
URL
(
"
rust_src_bg.wasm
"
,
`
${
import
.
meta
.
env
.
BASE_URL
}
assets/`
);
ip
,
await
rustInit
(
url
);
player
,
passWd
,
},
});
};
};
init
();
init
();
...
...
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