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
58ce6d5e
Commit
58ce6d5e
authored
Dec 25, 2022
by
Chunchi Che
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'feat/service/select_place' into 'main'
Feat/service/select place See merge request
!48
parents
e0fc2b96
6dad97f5
Changes
10
Show whitespace changes
Inline
Side-by-side
Showing
10 changed files
with
878 additions
and
184 deletions
+878
-184
neos-protobuf
neos-protobuf
+1
-1
src/api/ocgcore/idl/ocgcore.ts
src/api/ocgcore/idl/ocgcore.ts
+700
-175
src/api/ocgcore/ocgAdapter/bufferIO.ts
src/api/ocgcore/ocgAdapter/bufferIO.ts
+2
-2
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/selectPlace.ts
src/api/ocgcore/ocgAdapter/stoc/stocGameMsg/selectPlace.ts
+99
-0
src/reducers/duel/hintSlice.ts
src/reducers/duel/hintSlice.ts
+43
-4
src/service/duel/gameMsg.ts
src/service/duel/gameMsg.ts
+8
-0
src/service/duel/hint.ts
src/service/duel/hint.ts
+9
-2
src/service/duel/selectPlace.ts
src/service/duel/selectPlace.ts
+9
-0
No files found.
neos-protobuf
@
8cfeb7ac
Subproject commit
1ba7de35c6c717fe9f361dcdada8ffd6c43f9a8b
Subproject commit
8cfeb7ac4563b27f2f56e36b53b1453a953d9a9c
src/api/ocgcore/idl/ocgcore.ts
View file @
58ce6d5e
...
...
@@ -5,12 +5,171 @@
* git: https://github.com/thesayyn/protoc-gen-ts */
import
*
as
pb_1
from
"
google-protobuf
"
;
export
namespace
ygopro
{
export
enum
CardZone
{
DECK
=
0
,
HAND
=
1
,
MZONE
=
2
,
SZONE
=
3
,
GRAVE
=
4
,
REMOVED
=
5
,
EXTRA
=
6
,
OVERLAY
=
7
,
ONFIELD
=
8
,
FZONE
=
9
,
PZONE
=
10
,
}
export
enum
HandType
{
UNKNOWN
=
0
,
SCISSORS
=
1
,
ROCK
=
2
,
PAPER
=
3
,
}
export
class
CardInfo
extends
pb_1
.
Message
{
#
one_of_decls
:
number
[][]
=
[];
constructor
(
data
?:
|
any
[]
|
{
code
?:
number
;
controler
?:
number
;
location
?:
number
;
sequence
?:
number
;
}
)
{
super
();
pb_1
.
Message
.
initialize
(
this
,
Array
.
isArray
(
data
)
?
data
:
[],
0
,
-
1
,
[],
this
.
#
one_of_decls
);
if
(
!
Array
.
isArray
(
data
)
&&
typeof
data
==
"
object
"
)
{
if
(
"
code
"
in
data
&&
data
.
code
!=
undefined
)
{
this
.
code
=
data
.
code
;
}
if
(
"
controler
"
in
data
&&
data
.
controler
!=
undefined
)
{
this
.
controler
=
data
.
controler
;
}
if
(
"
location
"
in
data
&&
data
.
location
!=
undefined
)
{
this
.
location
=
data
.
location
;
}
if
(
"
sequence
"
in
data
&&
data
.
sequence
!=
undefined
)
{
this
.
sequence
=
data
.
sequence
;
}
}
}
get
code
()
{
return
pb_1
.
Message
.
getFieldWithDefault
(
this
,
1
,
0
)
as
number
;
}
set
code
(
value
:
number
)
{
pb_1
.
Message
.
setField
(
this
,
1
,
value
);
}
get
controler
()
{
return
pb_1
.
Message
.
getFieldWithDefault
(
this
,
2
,
0
)
as
number
;
}
set
controler
(
value
:
number
)
{
pb_1
.
Message
.
setField
(
this
,
2
,
value
);
}
get
location
()
{
return
pb_1
.
Message
.
getFieldWithDefault
(
this
,
3
,
0
)
as
number
;
}
set
location
(
value
:
number
)
{
pb_1
.
Message
.
setField
(
this
,
3
,
value
);
}
get
sequence
()
{
return
pb_1
.
Message
.
getFieldWithDefault
(
this
,
4
,
0
)
as
number
;
}
set
sequence
(
value
:
number
)
{
pb_1
.
Message
.
setField
(
this
,
4
,
value
);
}
static
fromObject
(
data
:
{
code
?:
number
;
controler
?:
number
;
location
?:
number
;
sequence
?:
number
;
}):
CardInfo
{
const
message
=
new
CardInfo
({});
if
(
data
.
code
!=
null
)
{
message
.
code
=
data
.
code
;
}
if
(
data
.
controler
!=
null
)
{
message
.
controler
=
data
.
controler
;
}
if
(
data
.
location
!=
null
)
{
message
.
location
=
data
.
location
;
}
if
(
data
.
sequence
!=
null
)
{
message
.
sequence
=
data
.
sequence
;
}
return
message
;
}
toObject
()
{
const
data
:
{
code
?:
number
;
controler
?:
number
;
location
?:
number
;
sequence
?:
number
;
}
=
{};
if
(
this
.
code
!=
null
)
{
data
.
code
=
this
.
code
;
}
if
(
this
.
controler
!=
null
)
{
data
.
controler
=
this
.
controler
;
}
if
(
this
.
location
!=
null
)
{
data
.
location
=
this
.
location
;
}
if
(
this
.
sequence
!=
null
)
{
data
.
sequence
=
this
.
sequence
;
}
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
.
code
!=
0
)
writer
.
writeInt32
(
1
,
this
.
code
);
if
(
this
.
controler
!=
0
)
writer
.
writeInt32
(
2
,
this
.
controler
);
if
(
this
.
location
!=
0
)
writer
.
writeInt32
(
3
,
this
.
location
);
if
(
this
.
sequence
!=
0
)
writer
.
writeInt32
(
4
,
this
.
sequence
);
if
(
!
w
)
return
writer
.
getResultBuffer
();
}
static
deserialize
(
bytes
:
Uint8Array
|
pb_1
.
BinaryReader
):
CardInfo
{
const
reader
=
bytes
instanceof
pb_1
.
BinaryReader
?
bytes
:
new
pb_1
.
BinaryReader
(
bytes
),
message
=
new
CardInfo
();
while
(
reader
.
nextField
())
{
if
(
reader
.
isEndGroup
())
break
;
switch
(
reader
.
getFieldNumber
())
{
case
1
:
message
.
code
=
reader
.
readInt32
();
break
;
case
2
:
message
.
controler
=
reader
.
readInt32
();
break
;
case
3
:
message
.
location
=
reader
.
readInt32
();
break
;
case
4
:
message
.
sequence
=
reader
.
readInt32
();
break
;
default
:
reader
.
skipField
();
}
}
return
message
;
}
serializeBinary
():
Uint8Array
{
return
this
.
serialize
();
}
static
deserializeBinary
(
bytes
:
Uint8Array
):
CardInfo
{
return
CardInfo
.
deserialize
(
bytes
);
}
}
export
class
YgoCtosMsg
extends
pb_1
.
Message
{
#
one_of_decls
:
number
[][]
=
[[
1
,
2
,
3
,
4
,
5
,
6
,
7
,
8
,
9
,
10
]];
constructor
(
...
...
@@ -2069,13 +2228,20 @@ export namespace ygopro {
}
}
export
class
CtosGameMsgResponse
extends
pb_1
.
Message
{
#
one_of_decls
:
number
[][]
=
[[
1
]];
#
one_of_decls
:
number
[][]
=
[[
1
,
2
]];
constructor
(
data
?:
|
any
[]
|
({}
&
{
|
({}
&
(
|
{
select_idle_cmd
?:
CtosGameMsgResponse
.
SelectIdleCmdResponse
;
})
select_place
?:
never
;
}
|
{
select_idle_cmd
?:
never
;
select_place
?:
CtosGameMsgResponse
.
SelectPlaceResponse
;
}
))
)
{
super
();
pb_1
.
Message
.
initialize
(
...
...
@@ -2090,6 +2256,9 @@ export namespace ygopro {
if
(
"
select_idle_cmd
"
in
data
&&
data
.
select_idle_cmd
!=
undefined
)
{
this
.
select_idle_cmd
=
data
.
select_idle_cmd
;
}
if
(
"
select_place
"
in
data
&&
data
.
select_place
!=
undefined
)
{
this
.
select_place
=
data
.
select_place
;
}
}
}
get
select_idle_cmd
()
{
...
...
@@ -2105,19 +2274,36 @@ export namespace ygopro {
get
has_select_idle_cmd
()
{
return
pb_1
.
Message
.
getField
(
this
,
1
)
!=
null
;
}
get
select_place
()
{
return
pb_1
.
Message
.
getWrapperField
(
this
,
CtosGameMsgResponse
.
SelectPlaceResponse
,
2
)
as
CtosGameMsgResponse
.
SelectPlaceResponse
;
}
set
select_place
(
value
:
CtosGameMsgResponse
.
SelectPlaceResponse
)
{
pb_1
.
Message
.
setOneofWrapperField
(
this
,
2
,
this
.
#
one_of_decls
[
0
],
value
);
}
get
has_select_place
()
{
return
pb_1
.
Message
.
getField
(
this
,
2
)
!=
null
;
}
get
gameMsgResponse
()
{
const
cases
:
{
[
index
:
number
]:
"
none
"
|
"
select_idle_cmd
"
;
[
index
:
number
]:
"
none
"
|
"
select_idle_cmd
"
|
"
select_place
"
;
}
=
{
0
:
"
none
"
,
1
:
"
select_idle_cmd
"
,
2
:
"
select_place
"
,
};
return
cases
[
pb_1
.
Message
.
computeOneofCase
(
this
,
[
1
])];
return
cases
[
pb_1
.
Message
.
computeOneofCase
(
this
,
[
1
,
2
])];
}
static
fromObject
(
data
:
{
select_idle_cmd
?:
ReturnType
<
typeof
CtosGameMsgResponse
.
SelectIdleCmdResponse
.
prototype
.
toObject
>
;
select_place
?:
ReturnType
<
typeof
CtosGameMsgResponse
.
SelectPlaceResponse
.
prototype
.
toObject
>
;
}):
CtosGameMsgResponse
{
const
message
=
new
CtosGameMsgResponse
({});
if
(
data
.
select_idle_cmd
!=
null
)
{
...
...
@@ -2126,6 +2312,10 @@ export namespace ygopro {
data
.
select_idle_cmd
);
}
if
(
data
.
select_place
!=
null
)
{
message
.
select_place
=
CtosGameMsgResponse
.
SelectPlaceResponse
.
fromObject
(
data
.
select_place
);
}
return
message
;
}
toObject
()
{
...
...
@@ -2133,10 +2323,16 @@ export namespace ygopro {
select_idle_cmd
?:
ReturnType
<
typeof
CtosGameMsgResponse
.
SelectIdleCmdResponse
.
prototype
.
toObject
>
;
select_place
?:
ReturnType
<
typeof
CtosGameMsgResponse
.
SelectPlaceResponse
.
prototype
.
toObject
>
;
}
=
{};
if
(
this
.
select_idle_cmd
!=
null
)
{
data
.
select_idle_cmd
=
this
.
select_idle_cmd
.
toObject
();
}
if
(
this
.
select_place
!=
null
)
{
data
.
select_place
=
this
.
select_place
.
toObject
();
}
return
data
;
}
serialize
():
Uint8Array
;
...
...
@@ -2147,6 +2343,10 @@ export namespace ygopro {
writer
.
writeMessage
(
1
,
this
.
select_idle_cmd
,
()
=>
this
.
select_idle_cmd
.
serialize
(
writer
)
);
if
(
this
.
has_select_place
)
writer
.
writeMessage
(
2
,
this
.
select_place
,
()
=>
this
.
select_place
.
serialize
(
writer
)
);
if
(
!
w
)
return
writer
.
getResultBuffer
();
}
static
deserialize
(
...
...
@@ -2168,6 +2368,14 @@ export namespace ygopro {
CtosGameMsgResponse
.
SelectIdleCmdResponse
.
deserialize
(
reader
))
);
break
;
case
2
:
reader
.
readMessage
(
message
.
select_place
,
()
=>
(
message
.
select_place
=
CtosGameMsgResponse
.
SelectPlaceResponse
.
deserialize
(
reader
))
);
break
;
default
:
reader
.
skipField
();
}
...
...
@@ -2262,23 +2470,15 @@ export namespace ygopro {
return
SelectIdleCmdResponse
.
deserialize
(
bytes
);
}
}
}
export
class
StocJoinGame
extends
pb_1
.
Message
{
export
class
SelectPlaceResponse
extends
pb_1
.
Message
{
#
one_of_decls
:
number
[][]
=
[];
constructor
(
data
?:
|
any
[]
|
{
lflist
?:
number
;
rule
?:
number
;
mode
?:
number
;
duel_rule
?:
number
;
no_check_deck
?:
boolean
;
no_shuffle_deck
?:
boolean
;
start_lp
?:
number
;
start_hand
?:
number
;
draw_count
?:
number
;
time_limit
?:
number
;
player
?:
number
;
zone
?:
CardZone
;
sequence
?:
number
;
}
)
{
super
();
...
...
@@ -2291,76 +2491,214 @@ export namespace ygopro {
this
.
#
one_of_decls
);
if
(
!
Array
.
isArray
(
data
)
&&
typeof
data
==
"
object
"
)
{
if
(
"
lflist
"
in
data
&&
data
.
lflist
!=
undefined
)
{
this
.
lflist
=
data
.
lflist
;
}
if
(
"
rule
"
in
data
&&
data
.
rule
!=
undefined
)
{
this
.
rule
=
data
.
rule
;
}
if
(
"
mode
"
in
data
&&
data
.
mode
!=
undefined
)
{
this
.
mode
=
data
.
mode
;
}
if
(
"
duel_rule
"
in
data
&&
data
.
duel_rule
!=
undefined
)
{
this
.
duel_rule
=
data
.
duel_rule
;
}
if
(
"
no_check_deck
"
in
data
&&
data
.
no_check_deck
!=
undefined
)
{
this
.
no_check_deck
=
data
.
no_check_deck
;
}
if
(
"
no_shuffle_deck
"
in
data
&&
data
.
no_shuffle_deck
!=
undefined
)
{
this
.
no_shuffle_deck
=
data
.
no_shuffle_deck
;
}
if
(
"
start_lp
"
in
data
&&
data
.
start_lp
!=
undefined
)
{
this
.
start_lp
=
data
.
start_lp
;
}
if
(
"
start_hand
"
in
data
&&
data
.
start_hand
!=
undefined
)
{
this
.
start_hand
=
data
.
start_hand
;
if
(
"
player
"
in
data
&&
data
.
player
!=
undefined
)
{
this
.
player
=
data
.
player
;
}
if
(
"
draw_count
"
in
data
&&
data
.
draw_count
!=
undefined
)
{
this
.
draw_count
=
data
.
draw_count
;
if
(
"
zone
"
in
data
&&
data
.
zone
!=
undefined
)
{
this
.
zone
=
data
.
zone
;
}
if
(
"
time_limit
"
in
data
&&
data
.
time_limit
!=
undefined
)
{
this
.
time_limit
=
data
.
time_limit
;
if
(
"
sequence
"
in
data
&&
data
.
sequence
!=
undefined
)
{
this
.
sequence
=
data
.
sequence
;
}
}
}
get
lflist
()
{
get
player
()
{
return
pb_1
.
Message
.
getFieldWithDefault
(
this
,
1
,
0
)
as
number
;
}
set
lflist
(
value
:
number
)
{
set
player
(
value
:
number
)
{
pb_1
.
Message
.
setField
(
this
,
1
,
value
);
}
get
rule
()
{
return
pb_1
.
Message
.
getFieldWithDefault
(
this
,
2
,
0
)
as
number
;
get
zone
()
{
return
pb_1
.
Message
.
getFieldWithDefault
(
this
,
2
,
CardZone
.
DECK
)
as
CardZone
;
}
set
rule
(
value
:
number
)
{
set
zone
(
value
:
CardZone
)
{
pb_1
.
Message
.
setField
(
this
,
2
,
value
);
}
get
mod
e
()
{
get
sequenc
e
()
{
return
pb_1
.
Message
.
getFieldWithDefault
(
this
,
3
,
0
)
as
number
;
}
set
mod
e
(
value
:
number
)
{
set
sequenc
e
(
value
:
number
)
{
pb_1
.
Message
.
setField
(
this
,
3
,
value
);
}
get
duel_rule
()
{
return
pb_1
.
Message
.
getFieldWithDefault
(
this
,
4
,
0
)
as
number
;
}
set
duel_rule
(
value
:
number
)
{
pb_1
.
Message
.
setField
(
this
,
4
,
value
);
}
get
no_check_deck
(
)
{
return
pb_1
.
Message
.
getFieldWithDefault
(
this
,
5
,
false
)
as
boolean
;
static
fromObject
(
data
:
{
player
?:
number
;
zone
?:
CardZone
;
sequence
?:
number
;
}):
SelectPlaceResponse
{
const
message
=
new
SelectPlaceResponse
({});
if
(
data
.
player
!=
null
)
{
message
.
player
=
data
.
player
;
}
set
no_check_deck
(
value
:
boolean
)
{
pb_1
.
Message
.
setField
(
this
,
5
,
value
)
;
if
(
data
.
zone
!=
null
)
{
message
.
zone
=
data
.
zone
;
}
get
no_shuffle_deck
(
)
{
return
pb_1
.
Message
.
getFieldWithDefault
(
this
,
6
,
false
)
as
boolean
;
if
(
data
.
sequence
!=
null
)
{
message
.
sequence
=
data
.
sequence
;
}
set
no_shuffle_deck
(
value
:
boolean
)
{
pb_1
.
Message
.
setField
(
this
,
6
,
value
);
return
message
;
}
get
start_lp
()
{
return
pb_1
.
Message
.
getFieldWithDefault
(
this
,
7
,
0
)
as
number
;
toObject
()
{
const
data
:
{
player
?:
number
;
zone
?:
CardZone
;
sequence
?:
number
;
}
=
{};
if
(
this
.
player
!=
null
)
{
data
.
player
=
this
.
player
;
}
if
(
this
.
zone
!=
null
)
{
data
.
zone
=
this
.
zone
;
}
if
(
this
.
sequence
!=
null
)
{
data
.
sequence
=
this
.
sequence
;
}
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
.
player
!=
0
)
writer
.
writeInt32
(
1
,
this
.
player
);
if
(
this
.
zone
!=
CardZone
.
DECK
)
writer
.
writeEnum
(
2
,
this
.
zone
);
if
(
this
.
sequence
!=
0
)
writer
.
writeInt32
(
3
,
this
.
sequence
);
if
(
!
w
)
return
writer
.
getResultBuffer
();
}
static
deserialize
(
bytes
:
Uint8Array
|
pb_1
.
BinaryReader
):
SelectPlaceResponse
{
const
reader
=
bytes
instanceof
pb_1
.
BinaryReader
?
bytes
:
new
pb_1
.
BinaryReader
(
bytes
),
message
=
new
SelectPlaceResponse
();
while
(
reader
.
nextField
())
{
if
(
reader
.
isEndGroup
())
break
;
switch
(
reader
.
getFieldNumber
())
{
case
1
:
message
.
player
=
reader
.
readInt32
();
break
;
case
2
:
message
.
zone
=
reader
.
readEnum
();
break
;
case
3
:
message
.
sequence
=
reader
.
readInt32
();
break
;
default
:
reader
.
skipField
();
}
}
return
message
;
}
serializeBinary
():
Uint8Array
{
return
this
.
serialize
();
}
static
deserializeBinary
(
bytes
:
Uint8Array
):
SelectPlaceResponse
{
return
SelectPlaceResponse
.
deserialize
(
bytes
);
}
}
}
export
class
StocJoinGame
extends
pb_1
.
Message
{
#
one_of_decls
:
number
[][]
=
[];
constructor
(
data
?:
|
any
[]
|
{
lflist
?:
number
;
rule
?:
number
;
mode
?:
number
;
duel_rule
?:
number
;
no_check_deck
?:
boolean
;
no_shuffle_deck
?:
boolean
;
start_lp
?:
number
;
start_hand
?:
number
;
draw_count
?:
number
;
time_limit
?:
number
;
}
)
{
super
();
pb_1
.
Message
.
initialize
(
this
,
Array
.
isArray
(
data
)
?
data
:
[],
0
,
-
1
,
[],
this
.
#
one_of_decls
);
if
(
!
Array
.
isArray
(
data
)
&&
typeof
data
==
"
object
"
)
{
if
(
"
lflist
"
in
data
&&
data
.
lflist
!=
undefined
)
{
this
.
lflist
=
data
.
lflist
;
}
if
(
"
rule
"
in
data
&&
data
.
rule
!=
undefined
)
{
this
.
rule
=
data
.
rule
;
}
if
(
"
mode
"
in
data
&&
data
.
mode
!=
undefined
)
{
this
.
mode
=
data
.
mode
;
}
if
(
"
duel_rule
"
in
data
&&
data
.
duel_rule
!=
undefined
)
{
this
.
duel_rule
=
data
.
duel_rule
;
}
if
(
"
no_check_deck
"
in
data
&&
data
.
no_check_deck
!=
undefined
)
{
this
.
no_check_deck
=
data
.
no_check_deck
;
}
if
(
"
no_shuffle_deck
"
in
data
&&
data
.
no_shuffle_deck
!=
undefined
)
{
this
.
no_shuffle_deck
=
data
.
no_shuffle_deck
;
}
if
(
"
start_lp
"
in
data
&&
data
.
start_lp
!=
undefined
)
{
this
.
start_lp
=
data
.
start_lp
;
}
if
(
"
start_hand
"
in
data
&&
data
.
start_hand
!=
undefined
)
{
this
.
start_hand
=
data
.
start_hand
;
}
if
(
"
draw_count
"
in
data
&&
data
.
draw_count
!=
undefined
)
{
this
.
draw_count
=
data
.
draw_count
;
}
if
(
"
time_limit
"
in
data
&&
data
.
time_limit
!=
undefined
)
{
this
.
time_limit
=
data
.
time_limit
;
}
}
}
get
lflist
()
{
return
pb_1
.
Message
.
getFieldWithDefault
(
this
,
1
,
0
)
as
number
;
}
set
lflist
(
value
:
number
)
{
pb_1
.
Message
.
setField
(
this
,
1
,
value
);
}
get
rule
()
{
return
pb_1
.
Message
.
getFieldWithDefault
(
this
,
2
,
0
)
as
number
;
}
set
rule
(
value
:
number
)
{
pb_1
.
Message
.
setField
(
this
,
2
,
value
);
}
get
mode
()
{
return
pb_1
.
Message
.
getFieldWithDefault
(
this
,
3
,
0
)
as
number
;
}
set
mode
(
value
:
number
)
{
pb_1
.
Message
.
setField
(
this
,
3
,
value
);
}
get
duel_rule
()
{
return
pb_1
.
Message
.
getFieldWithDefault
(
this
,
4
,
0
)
as
number
;
}
set
duel_rule
(
value
:
number
)
{
pb_1
.
Message
.
setField
(
this
,
4
,
value
);
}
get
no_check_deck
()
{
return
pb_1
.
Message
.
getFieldWithDefault
(
this
,
5
,
false
)
as
boolean
;
}
set
no_check_deck
(
value
:
boolean
)
{
pb_1
.
Message
.
setField
(
this
,
5
,
value
);
}
get
no_shuffle_deck
()
{
return
pb_1
.
Message
.
getFieldWithDefault
(
this
,
6
,
false
)
as
boolean
;
}
set
no_shuffle_deck
(
value
:
boolean
)
{
pb_1
.
Message
.
setField
(
this
,
6
,
value
);
}
get
start_lp
()
{
return
pb_1
.
Message
.
getFieldWithDefault
(
this
,
7
,
0
)
as
number
;
}
set
start_lp
(
value
:
number
)
{
pb_1
.
Message
.
setField
(
this
,
7
,
value
);
...
...
@@ -3641,7 +3979,7 @@ export namespace ygopro {
}
}
export
class
StocGameMessage
extends
pb_1
.
Message
{
#
one_of_decls
:
number
[][]
=
[[
1
,
2
,
3
,
4
,
5
,
6
]];
#
one_of_decls
:
number
[][]
=
[[
1
,
2
,
3
,
4
,
5
,
6
,
7
]];
constructor
(
data
?:
|
any
[]
...
...
@@ -3653,6 +3991,7 @@ export namespace ygopro {
new_phase
?:
never
;
hint
?:
never
;
select_idle_cmd
?:
never
;
select_place
?:
never
;
}
|
{
start
?:
never
;
...
...
@@ -3661,6 +4000,7 @@ export namespace ygopro {
new_phase
?:
never
;
hint
?:
never
;
select_idle_cmd
?:
never
;
select_place
?:
never
;
}
|
{
start
?:
never
;
...
...
@@ -3669,6 +4009,7 @@ export namespace ygopro {
new_phase
?:
never
;
hint
?:
never
;
select_idle_cmd
?:
never
;
select_place
?:
never
;
}
|
{
start
?:
never
;
...
...
@@ -3677,6 +4018,7 @@ export namespace ygopro {
new_phase
?:
StocGameMessage
.
MsgNewPhase
;
hint
?:
never
;
select_idle_cmd
?:
never
;
select_place
?:
never
;
}
|
{
start
?:
never
;
...
...
@@ -3685,6 +4027,7 @@ export namespace ygopro {
new_phase
?:
never
;
hint
?:
StocGameMessage
.
MsgHint
;
select_idle_cmd
?:
never
;
select_place
?:
never
;
}
|
{
start
?:
never
;
...
...
@@ -3693,6 +4036,16 @@ export namespace ygopro {
new_phase
?:
never
;
hint
?:
never
;
select_idle_cmd
?:
StocGameMessage
.
MsgSelectIdleCmd
;
select_place
?:
never
;
}
|
{
start
?:
never
;
draw
?:
never
;
new_turn
?:
never
;
new_phase
?:
never
;
hint
?:
never
;
select_idle_cmd
?:
never
;
select_place
?:
StocGameMessage
.
MsgSelectPlace
;
}
))
)
{
...
...
@@ -3724,6 +4077,9 @@ export namespace ygopro {
if
(
"
select_idle_cmd
"
in
data
&&
data
.
select_idle_cmd
!=
undefined
)
{
this
.
select_idle_cmd
=
data
.
select_idle_cmd
;
}
if
(
"
select_place
"
in
data
&&
data
.
select_place
!=
undefined
)
{
this
.
select_place
=
data
.
select_place
;
}
}
}
get
start
()
{
...
...
@@ -3804,6 +4160,19 @@ export namespace ygopro {
get
has_select_idle_cmd
()
{
return
pb_1
.
Message
.
getField
(
this
,
6
)
!=
null
;
}
get
select_place
()
{
return
pb_1
.
Message
.
getWrapperField
(
this
,
StocGameMessage
.
MsgSelectPlace
,
7
)
as
StocGameMessage
.
MsgSelectPlace
;
}
set
select_place
(
value
:
StocGameMessage
.
MsgSelectPlace
)
{
pb_1
.
Message
.
setOneofWrapperField
(
this
,
7
,
this
.
#
one_of_decls
[
0
],
value
);
}
get
has_select_place
()
{
return
pb_1
.
Message
.
getField
(
this
,
7
)
!=
null
;
}
get
gameMsg
()
{
const
cases
:
{
[
index
:
number
]:
...
...
@@ -3813,7 +4182,8 @@ export namespace ygopro {
|
"
new_turn
"
|
"
new_phase
"
|
"
hint
"
|
"
select_idle_cmd
"
;
|
"
select_idle_cmd
"
|
"
select_place
"
;
}
=
{
0
:
"
none
"
,
1
:
"
start
"
,
...
...
@@ -3822,8 +4192,9 @@ export namespace ygopro {
4
:
"
new_phase
"
,
5
:
"
hint
"
,
6
:
"
select_idle_cmd
"
,
7
:
"
select_place
"
,
};
return
cases
[
pb_1
.
Message
.
computeOneofCase
(
this
,
[
1
,
2
,
3
,
4
,
5
,
6
])];
return
cases
[
pb_1
.
Message
.
computeOneofCase
(
this
,
[
1
,
2
,
3
,
4
,
5
,
6
,
7
])];
}
static
fromObject
(
data
:
{
start
?:
ReturnType
<
typeof
StocGameMessage
.
MsgStart
.
prototype
.
toObject
>
;
...
...
@@ -3838,6 +4209,9 @@ export namespace ygopro {
select_idle_cmd
?:
ReturnType
<
typeof
StocGameMessage
.
MsgSelectIdleCmd
.
prototype
.
toObject
>
;
select_place
?:
ReturnType
<
typeof
StocGameMessage
.
MsgSelectPlace
.
prototype
.
toObject
>
;
}):
StocGameMessage
{
const
message
=
new
StocGameMessage
({});
if
(
data
.
start
!=
null
)
{
...
...
@@ -3862,6 +4236,11 @@ export namespace ygopro {
data
.
select_idle_cmd
);
}
if
(
data
.
select_place
!=
null
)
{
message
.
select_place
=
StocGameMessage
.
MsgSelectPlace
.
fromObject
(
data
.
select_place
);
}
return
message
;
}
toObject
()
{
...
...
@@ -3878,6 +4257,9 @@ export namespace ygopro {
select_idle_cmd
?:
ReturnType
<
typeof
StocGameMessage
.
MsgSelectIdleCmd
.
prototype
.
toObject
>
;
select_place
?:
ReturnType
<
typeof
StocGameMessage
.
MsgSelectPlace
.
prototype
.
toObject
>
;
}
=
{};
if
(
this
.
start
!=
null
)
{
data
.
start
=
this
.
start
.
toObject
();
...
...
@@ -3897,6 +4279,9 @@ export namespace ygopro {
if
(
this
.
select_idle_cmd
!=
null
)
{
data
.
select_idle_cmd
=
this
.
select_idle_cmd
.
toObject
();
}
if
(
this
.
select_place
!=
null
)
{
data
.
select_place
=
this
.
select_place
.
toObject
();
}
return
data
;
}
serialize
():
Uint8Array
;
...
...
@@ -3921,6 +4306,10 @@ export namespace ygopro {
writer
.
writeMessage
(
6
,
this
.
select_idle_cmd
,
()
=>
this
.
select_idle_cmd
.
serialize
(
writer
)
);
if
(
this
.
has_select_place
)
writer
.
writeMessage
(
7
,
this
.
select_place
,
()
=>
this
.
select_place
.
serialize
(
writer
)
);
if
(
!
w
)
return
writer
.
getResultBuffer
();
}
static
deserialize
(
bytes
:
Uint8Array
|
pb_1
.
BinaryReader
):
StocGameMessage
{
...
...
@@ -3975,6 +4364,14 @@ export namespace ygopro {
StocGameMessage
.
MsgSelectIdleCmd
.
deserialize
(
reader
))
);
break
;
case
7
:
reader
.
readMessage
(
message
.
select_place
,
()
=>
(
message
.
select_place
=
StocGameMessage
.
MsgSelectPlace
.
deserialize
(
reader
))
);
break
;
default
:
reader
.
skipField
();
}
...
...
@@ -3989,16 +4386,19 @@ export namespace ygopro {
}
}
export
namespace
StocGameMessage
{
export
class
CardInfo
extends
pb_1
.
Message
{
export
class
MsgStart
extends
pb_1
.
Message
{
#
one_of_decls
:
number
[][]
=
[];
constructor
(
data
?:
|
any
[]
|
{
code
?:
number
;
controler
?:
number
;
location
?:
number
;
sequence
?:
number
;
playerType
?:
StocGameMessage
.
MsgStart
.
PlayerType
;
life1
?:
number
;
life2
?:
number
;
deckSize1
?:
number
;
deckSize2
?:
number
;
extraSize1
?:
number
;
extraSize2
?:
number
;
}
)
{
super
();
...
...
@@ -4011,214 +4411,65 @@ export namespace ygopro {
this
.
#
one_of_decls
);
if
(
!
Array
.
isArray
(
data
)
&&
typeof
data
==
"
object
"
)
{
if
(
"
code
"
in
data
&&
data
.
cod
e
!=
undefined
)
{
this
.
code
=
data
.
cod
e
;
if
(
"
playerType
"
in
data
&&
data
.
playerTyp
e
!=
undefined
)
{
this
.
playerType
=
data
.
playerTyp
e
;
}
if
(
"
controler
"
in
data
&&
data
.
controler
!=
undefined
)
{
this
.
controler
=
data
.
controler
;
if
(
"
life1
"
in
data
&&
data
.
life1
!=
undefined
)
{
this
.
life1
=
data
.
life1
;
}
if
(
"
l
ocation
"
in
data
&&
data
.
location
!=
undefined
)
{
this
.
l
ocation
=
data
.
location
;
if
(
"
l
ife2
"
in
data
&&
data
.
life2
!=
undefined
)
{
this
.
l
ife2
=
data
.
life2
;
}
if
(
"
sequence
"
in
data
&&
data
.
sequence
!=
undefined
)
{
this
.
sequence
=
data
.
sequence
;
if
(
"
deckSize1
"
in
data
&&
data
.
deckSize1
!=
undefined
)
{
this
.
deckSize1
=
data
.
deckSize1
;
}
if
(
"
deckSize2
"
in
data
&&
data
.
deckSize2
!=
undefined
)
{
this
.
deckSize2
=
data
.
deckSize2
;
}
if
(
"
extraSize1
"
in
data
&&
data
.
extraSize1
!=
undefined
)
{
this
.
extraSize1
=
data
.
extraSize1
;
}
if
(
"
extraSize2
"
in
data
&&
data
.
extraSize2
!=
undefined
)
{
this
.
extraSize2
=
data
.
extraSize2
;
}
}
get
code
()
{
return
pb_1
.
Message
.
getFieldWithDefault
(
this
,
1
,
0
)
as
number
;
}
set
code
(
value
:
number
)
{
get
playerType
()
{
return
pb_1
.
Message
.
getFieldWithDefault
(
this
,
1
,
StocGameMessage
.
MsgStart
.
PlayerType
.
UNKNOWN
)
as
StocGameMessage
.
MsgStart
.
PlayerType
;
}
set
playerType
(
value
:
StocGameMessage
.
MsgStart
.
PlayerType
)
{
pb_1
.
Message
.
setField
(
this
,
1
,
value
);
}
get
controler
()
{
get
life1
()
{
return
pb_1
.
Message
.
getFieldWithDefault
(
this
,
2
,
0
)
as
number
;
}
set
controler
(
value
:
number
)
{
set
life1
(
value
:
number
)
{
pb_1
.
Message
.
setField
(
this
,
2
,
value
);
}
get
l
ocation
()
{
get
l
ife2
()
{
return
pb_1
.
Message
.
getFieldWithDefault
(
this
,
3
,
0
)
as
number
;
}
set
l
ocation
(
value
:
number
)
{
set
l
ife2
(
value
:
number
)
{
pb_1
.
Message
.
setField
(
this
,
3
,
value
);
}
get
sequence
()
{
get
deckSize1
()
{
return
pb_1
.
Message
.
getFieldWithDefault
(
this
,
4
,
0
)
as
number
;
}
set
sequence
(
value
:
number
)
{
set
deckSize1
(
value
:
number
)
{
pb_1
.
Message
.
setField
(
this
,
4
,
value
);
}
static
fromObject
(
data
:
{
code
?:
number
;
controler
?:
number
;
location
?:
number
;
sequence
?:
number
;
}):
CardInfo
{
const
message
=
new
CardInfo
({});
if
(
data
.
code
!=
null
)
{
message
.
code
=
data
.
code
;
get
deckSize2
()
{
return
pb_1
.
Message
.
getFieldWithDefault
(
this
,
5
,
0
)
as
number
;
}
if
(
data
.
controler
!=
null
)
{
message
.
controler
=
data
.
controler
;
set
deckSize2
(
value
:
number
)
{
pb_1
.
Message
.
setField
(
this
,
5
,
value
)
;
}
if
(
data
.
location
!=
null
)
{
message
.
location
=
data
.
location
;
}
if
(
data
.
sequence
!=
null
)
{
message
.
sequence
=
data
.
sequence
;
}
return
message
;
}
toObject
()
{
const
data
:
{
code
?:
number
;
controler
?:
number
;
location
?:
number
;
sequence
?:
number
;
}
=
{};
if
(
this
.
code
!=
null
)
{
data
.
code
=
this
.
code
;
}
if
(
this
.
controler
!=
null
)
{
data
.
controler
=
this
.
controler
;
}
if
(
this
.
location
!=
null
)
{
data
.
location
=
this
.
location
;
}
if
(
this
.
sequence
!=
null
)
{
data
.
sequence
=
this
.
sequence
;
}
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
.
code
!=
0
)
writer
.
writeInt32
(
1
,
this
.
code
);
if
(
this
.
controler
!=
0
)
writer
.
writeInt32
(
2
,
this
.
controler
);
if
(
this
.
location
!=
0
)
writer
.
writeInt32
(
3
,
this
.
location
);
if
(
this
.
sequence
!=
0
)
writer
.
writeInt32
(
4
,
this
.
sequence
);
if
(
!
w
)
return
writer
.
getResultBuffer
();
}
static
deserialize
(
bytes
:
Uint8Array
|
pb_1
.
BinaryReader
):
CardInfo
{
const
reader
=
bytes
instanceof
pb_1
.
BinaryReader
?
bytes
:
new
pb_1
.
BinaryReader
(
bytes
),
message
=
new
CardInfo
();
while
(
reader
.
nextField
())
{
if
(
reader
.
isEndGroup
())
break
;
switch
(
reader
.
getFieldNumber
())
{
case
1
:
message
.
code
=
reader
.
readInt32
();
break
;
case
2
:
message
.
controler
=
reader
.
readInt32
();
break
;
case
3
:
message
.
location
=
reader
.
readInt32
();
break
;
case
4
:
message
.
sequence
=
reader
.
readInt32
();
break
;
default
:
reader
.
skipField
();
}
}
return
message
;
}
serializeBinary
():
Uint8Array
{
return
this
.
serialize
();
}
static
deserializeBinary
(
bytes
:
Uint8Array
):
CardInfo
{
return
CardInfo
.
deserialize
(
bytes
);
}
}
export
class
MsgStart
extends
pb_1
.
Message
{
#
one_of_decls
:
number
[][]
=
[];
constructor
(
data
?:
|
any
[]
|
{
playerType
?:
StocGameMessage
.
MsgStart
.
PlayerType
;
life1
?:
number
;
life2
?:
number
;
deckSize1
?:
number
;
deckSize2
?:
number
;
extraSize1
?:
number
;
extraSize2
?:
number
;
}
)
{
super
();
pb_1
.
Message
.
initialize
(
this
,
Array
.
isArray
(
data
)
?
data
:
[],
0
,
-
1
,
[],
this
.
#
one_of_decls
);
if
(
!
Array
.
isArray
(
data
)
&&
typeof
data
==
"
object
"
)
{
if
(
"
playerType
"
in
data
&&
data
.
playerType
!=
undefined
)
{
this
.
playerType
=
data
.
playerType
;
}
if
(
"
life1
"
in
data
&&
data
.
life1
!=
undefined
)
{
this
.
life1
=
data
.
life1
;
}
if
(
"
life2
"
in
data
&&
data
.
life2
!=
undefined
)
{
this
.
life2
=
data
.
life2
;
}
if
(
"
deckSize1
"
in
data
&&
data
.
deckSize1
!=
undefined
)
{
this
.
deckSize1
=
data
.
deckSize1
;
}
if
(
"
deckSize2
"
in
data
&&
data
.
deckSize2
!=
undefined
)
{
this
.
deckSize2
=
data
.
deckSize2
;
}
if
(
"
extraSize1
"
in
data
&&
data
.
extraSize1
!=
undefined
)
{
this
.
extraSize1
=
data
.
extraSize1
;
}
if
(
"
extraSize2
"
in
data
&&
data
.
extraSize2
!=
undefined
)
{
this
.
extraSize2
=
data
.
extraSize2
;
}
}
}
get
playerType
()
{
return
pb_1
.
Message
.
getFieldWithDefault
(
this
,
1
,
StocGameMessage
.
MsgStart
.
PlayerType
.
UNKNOWN
)
as
StocGameMessage
.
MsgStart
.
PlayerType
;
}
set
playerType
(
value
:
StocGameMessage
.
MsgStart
.
PlayerType
)
{
pb_1
.
Message
.
setField
(
this
,
1
,
value
);
}
get
life1
()
{
return
pb_1
.
Message
.
getFieldWithDefault
(
this
,
2
,
0
)
as
number
;
}
set
life1
(
value
:
number
)
{
pb_1
.
Message
.
setField
(
this
,
2
,
value
);
}
get
life2
()
{
return
pb_1
.
Message
.
getFieldWithDefault
(
this
,
3
,
0
)
as
number
;
}
set
life2
(
value
:
number
)
{
pb_1
.
Message
.
setField
(
this
,
3
,
value
);
}
get
deckSize1
()
{
return
pb_1
.
Message
.
getFieldWithDefault
(
this
,
4
,
0
)
as
number
;
}
set
deckSize1
(
value
:
number
)
{
pb_1
.
Message
.
setField
(
this
,
4
,
value
);
}
get
deckSize2
()
{
return
pb_1
.
Message
.
getFieldWithDefault
(
this
,
5
,
0
)
as
number
;
}
set
deckSize2
(
value
:
number
)
{
pb_1
.
Message
.
setField
(
this
,
5
,
value
);
}
get
extraSize1
()
{
return
pb_1
.
Message
.
getFieldWithDefault
(
this
,
6
,
0
)
as
number
;
get
extraSize1
()
{
return
pb_1
.
Message
.
getFieldWithDefault
(
this
,
6
,
0
)
as
number
;
}
set
extraSize1
(
value
:
number
)
{
pb_1
.
Message
.
setField
(
this
,
6
,
value
);
...
...
@@ -5165,7 +5416,7 @@ export namespace ygopro {
data
?:
|
any
[]
|
{
card_info
?:
StocGameMessage
.
CardInfo
;
card_info
?:
CardInfo
;
effect_description
?:
number
;
response
?:
number
;
}
...
...
@@ -5195,13 +5446,9 @@ export namespace ygopro {
}
}
get
card_info
()
{
return
pb_1
.
Message
.
getWrapperField
(
this
,
StocGameMessage
.
CardInfo
,
1
)
as
StocGameMessage
.
CardInfo
;
return
pb_1
.
Message
.
getWrapperField
(
this
,
CardInfo
,
1
)
as
CardInfo
;
}
set
card_info
(
value
:
StocGameMessage
.
CardInfo
)
{
set
card_info
(
value
:
CardInfo
)
{
pb_1
.
Message
.
setWrapperField
(
this
,
1
,
value
);
}
get
has_card_info
()
{
...
...
@@ -5220,17 +5467,13 @@ export namespace ygopro {
pb_1
.
Message
.
setField
(
this
,
3
,
value
);
}
static
fromObject
(
data
:
{
card_info
?:
ReturnType
<
typeof
StocGameMessage
.
CardInfo
.
prototype
.
toObject
>
;
card_info
?:
ReturnType
<
typeof
CardInfo
.
prototype
.
toObject
>
;
effect_description
?:
number
;
response
?:
number
;
}):
IdleData
{
const
message
=
new
IdleData
({});
if
(
data
.
card_info
!=
null
)
{
message
.
card_info
=
StocGameMessage
.
CardInfo
.
fromObject
(
data
.
card_info
);
message
.
card_info
=
CardInfo
.
fromObject
(
data
.
card_info
);
}
if
(
data
.
effect_description
!=
null
)
{
message
.
effect_description
=
data
.
effect_description
;
...
...
@@ -5242,9 +5485,7 @@ export namespace ygopro {
}
toObject
()
{
const
data
:
{
card_info
?:
ReturnType
<
typeof
StocGameMessage
.
CardInfo
.
prototype
.
toObject
>
;
card_info
?:
ReturnType
<
typeof
CardInfo
.
prototype
.
toObject
>
;
effect_description
?:
number
;
response
?:
number
;
}
=
{};
...
...
@@ -5284,9 +5525,7 @@ export namespace ygopro {
case
1
:
reader
.
readMessage
(
message
.
card_info
,
()
=>
(
message
.
card_info
=
StocGameMessage
.
CardInfo
.
deserialize
(
reader
))
()
=>
(
message
.
card_info
=
CardInfo
.
deserialize
(
reader
))
);
break
;
case
2
:
...
...
@@ -5310,5 +5549,291 @@ export namespace ygopro {
}
}
}
export
class
MsgSelectPlace
extends
pb_1
.
Message
{
#
one_of_decls
:
number
[][]
=
[];
constructor
(
data
?:
|
any
[]
|
{
player
?:
number
;
count
?:
number
;
places
?:
StocGameMessage
.
MsgSelectPlace
.
SelectAblePlace
[];
}
)
{
super
();
pb_1
.
Message
.
initialize
(
this
,
Array
.
isArray
(
data
)
?
data
:
[],
0
,
-
1
,
[
3
],
this
.
#
one_of_decls
);
if
(
!
Array
.
isArray
(
data
)
&&
typeof
data
==
"
object
"
)
{
if
(
"
player
"
in
data
&&
data
.
player
!=
undefined
)
{
this
.
player
=
data
.
player
;
}
if
(
"
count
"
in
data
&&
data
.
count
!=
undefined
)
{
this
.
count
=
data
.
count
;
}
if
(
"
places
"
in
data
&&
data
.
places
!=
undefined
)
{
this
.
places
=
data
.
places
;
}
}
}
get
player
()
{
return
pb_1
.
Message
.
getFieldWithDefault
(
this
,
1
,
0
)
as
number
;
}
set
player
(
value
:
number
)
{
pb_1
.
Message
.
setField
(
this
,
1
,
value
);
}
get
count
()
{
return
pb_1
.
Message
.
getFieldWithDefault
(
this
,
2
,
0
)
as
number
;
}
set
count
(
value
:
number
)
{
pb_1
.
Message
.
setField
(
this
,
2
,
value
);
}
get
places
()
{
return
pb_1
.
Message
.
getRepeatedWrapperField
(
this
,
StocGameMessage
.
MsgSelectPlace
.
SelectAblePlace
,
3
)
as
StocGameMessage
.
MsgSelectPlace
.
SelectAblePlace
[];
}
set
places
(
value
:
StocGameMessage
.
MsgSelectPlace
.
SelectAblePlace
[])
{
pb_1
.
Message
.
setRepeatedWrapperField
(
this
,
3
,
value
);
}
static
fromObject
(
data
:
{
player
?:
number
;
count
?:
number
;
places
?:
ReturnType
<
typeof
StocGameMessage
.
MsgSelectPlace
.
SelectAblePlace
.
prototype
.
toObject
>
[];
}):
MsgSelectPlace
{
const
message
=
new
MsgSelectPlace
({});
if
(
data
.
player
!=
null
)
{
message
.
player
=
data
.
player
;
}
if
(
data
.
count
!=
null
)
{
message
.
count
=
data
.
count
;
}
if
(
data
.
places
!=
null
)
{
message
.
places
=
data
.
places
.
map
((
item
)
=>
StocGameMessage
.
MsgSelectPlace
.
SelectAblePlace
.
fromObject
(
item
)
);
}
return
message
;
}
toObject
()
{
const
data
:
{
player
?:
number
;
count
?:
number
;
places
?:
ReturnType
<
typeof
StocGameMessage
.
MsgSelectPlace
.
SelectAblePlace
.
prototype
.
toObject
>
[];
}
=
{};
if
(
this
.
player
!=
null
)
{
data
.
player
=
this
.
player
;
}
if
(
this
.
count
!=
null
)
{
data
.
count
=
this
.
count
;
}
if
(
this
.
places
!=
null
)
{
data
.
places
=
this
.
places
.
map
(
(
item
:
StocGameMessage
.
MsgSelectPlace
.
SelectAblePlace
)
=>
item
.
toObject
()
);
}
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
.
player
!=
0
)
writer
.
writeInt32
(
1
,
this
.
player
);
if
(
this
.
count
!=
0
)
writer
.
writeInt32
(
2
,
this
.
count
);
if
(
this
.
places
.
length
)
writer
.
writeRepeatedMessage
(
3
,
this
.
places
,
(
item
:
StocGameMessage
.
MsgSelectPlace
.
SelectAblePlace
)
=>
item
.
serialize
(
writer
)
);
if
(
!
w
)
return
writer
.
getResultBuffer
();
}
static
deserialize
(
bytes
:
Uint8Array
|
pb_1
.
BinaryReader
):
MsgSelectPlace
{
const
reader
=
bytes
instanceof
pb_1
.
BinaryReader
?
bytes
:
new
pb_1
.
BinaryReader
(
bytes
),
message
=
new
MsgSelectPlace
();
while
(
reader
.
nextField
())
{
if
(
reader
.
isEndGroup
())
break
;
switch
(
reader
.
getFieldNumber
())
{
case
1
:
message
.
player
=
reader
.
readInt32
();
break
;
case
2
:
message
.
count
=
reader
.
readInt32
();
break
;
case
3
:
reader
.
readMessage
(
message
.
places
,
()
=>
pb_1
.
Message
.
addToRepeatedWrapperField
(
message
,
3
,
StocGameMessage
.
MsgSelectPlace
.
SelectAblePlace
.
deserialize
(
reader
),
StocGameMessage
.
MsgSelectPlace
.
SelectAblePlace
)
);
break
;
default
:
reader
.
skipField
();
}
}
return
message
;
}
serializeBinary
():
Uint8Array
{
return
this
.
serialize
();
}
static
deserializeBinary
(
bytes
:
Uint8Array
):
MsgSelectPlace
{
return
MsgSelectPlace
.
deserialize
(
bytes
);
}
}
export
namespace
MsgSelectPlace
{
export
class
SelectAblePlace
extends
pb_1
.
Message
{
#
one_of_decls
:
number
[][]
=
[];
constructor
(
data
?:
|
any
[]
|
{
controler
?:
number
;
zone
?:
CardZone
;
sequence
?:
number
;
}
)
{
super
();
pb_1
.
Message
.
initialize
(
this
,
Array
.
isArray
(
data
)
?
data
:
[],
0
,
-
1
,
[],
this
.
#
one_of_decls
);
if
(
!
Array
.
isArray
(
data
)
&&
typeof
data
==
"
object
"
)
{
if
(
"
controler
"
in
data
&&
data
.
controler
!=
undefined
)
{
this
.
controler
=
data
.
controler
;
}
if
(
"
zone
"
in
data
&&
data
.
zone
!=
undefined
)
{
this
.
zone
=
data
.
zone
;
}
if
(
"
sequence
"
in
data
&&
data
.
sequence
!=
undefined
)
{
this
.
sequence
=
data
.
sequence
;
}
}
}
get
controler
()
{
return
pb_1
.
Message
.
getFieldWithDefault
(
this
,
1
,
0
)
as
number
;
}
set
controler
(
value
:
number
)
{
pb_1
.
Message
.
setField
(
this
,
1
,
value
);
}
get
zone
()
{
return
pb_1
.
Message
.
getFieldWithDefault
(
this
,
2
,
CardZone
.
DECK
)
as
CardZone
;
}
set
zone
(
value
:
CardZone
)
{
pb_1
.
Message
.
setField
(
this
,
2
,
value
);
}
get
sequence
()
{
return
pb_1
.
Message
.
getFieldWithDefault
(
this
,
3
,
0
)
as
number
;
}
set
sequence
(
value
:
number
)
{
pb_1
.
Message
.
setField
(
this
,
3
,
value
);
}
static
fromObject
(
data
:
{
controler
?:
number
;
zone
?:
CardZone
;
sequence
?:
number
;
}):
SelectAblePlace
{
const
message
=
new
SelectAblePlace
({});
if
(
data
.
controler
!=
null
)
{
message
.
controler
=
data
.
controler
;
}
if
(
data
.
zone
!=
null
)
{
message
.
zone
=
data
.
zone
;
}
if
(
data
.
sequence
!=
null
)
{
message
.
sequence
=
data
.
sequence
;
}
return
message
;
}
toObject
()
{
const
data
:
{
controler
?:
number
;
zone
?:
CardZone
;
sequence
?:
number
;
}
=
{};
if
(
this
.
controler
!=
null
)
{
data
.
controler
=
this
.
controler
;
}
if
(
this
.
zone
!=
null
)
{
data
.
zone
=
this
.
zone
;
}
if
(
this
.
sequence
!=
null
)
{
data
.
sequence
=
this
.
sequence
;
}
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
.
controler
!=
0
)
writer
.
writeInt32
(
1
,
this
.
controler
);
if
(
this
.
zone
!=
CardZone
.
DECK
)
writer
.
writeEnum
(
2
,
this
.
zone
);
if
(
this
.
sequence
!=
0
)
writer
.
writeInt32
(
3
,
this
.
sequence
);
if
(
!
w
)
return
writer
.
getResultBuffer
();
}
static
deserialize
(
bytes
:
Uint8Array
|
pb_1
.
BinaryReader
):
SelectAblePlace
{
const
reader
=
bytes
instanceof
pb_1
.
BinaryReader
?
bytes
:
new
pb_1
.
BinaryReader
(
bytes
),
message
=
new
SelectAblePlace
();
while
(
reader
.
nextField
())
{
if
(
reader
.
isEndGroup
())
break
;
switch
(
reader
.
getFieldNumber
())
{
case
1
:
message
.
controler
=
reader
.
readInt32
();
break
;
case
2
:
message
.
zone
=
reader
.
readEnum
();
break
;
case
3
:
message
.
sequence
=
reader
.
readInt32
();
break
;
default
:
reader
.
skipField
();
}
}
return
message
;
}
serializeBinary
():
Uint8Array
{
return
this
.
serialize
();
}
static
deserializeBinary
(
bytes
:
Uint8Array
):
SelectAblePlace
{
return
SelectAblePlace
.
deserialize
(
bytes
);
}
}
}
}
}
src/api/ocgcore/ocgAdapter/bufferIO.ts
View file @
58ce6d5e
...
...
@@ -52,8 +52,8 @@ export class BufferReader {
return
ret
;
}
readCardInfo
():
ygopro
.
StocGameMessage
.
CardInfo
{
const
cardInfo
=
new
ygopro
.
StocGameMessage
.
CardInfo
({});
readCardInfo
():
ygopro
.
CardInfo
{
const
cardInfo
=
new
ygopro
.
CardInfo
({});
cardInfo
.
code
=
this
.
readUint32
();
cardInfo
.
controler
=
this
.
readUint8
();
...
...
src/api/ocgcore/ocgAdapter/protoDecl.ts
View file @
58ce6d5e
...
...
@@ -32,3 +32,4 @@ export const MSG_NEW_TURN = 40;
export
const
MSG_NEW_PHASE
=
41
;
export
const
MSG_HINT
=
2
;
export
const
MSG_SELECT_IDLE_CMD
=
11
;
export
const
MSG_SELECT_PLACE
=
18
;
src/api/ocgcore/ocgAdapter/stoc/stocGameMsg/mod.ts
View file @
58ce6d5e
...
...
@@ -12,6 +12,7 @@ import MsgNewTurnAdapter from "./newTurn";
import
MsgNewPhaseAdapter
from
"
./newPhase
"
;
import
MsgHintAdapter
from
"
./hint
"
;
import
MsgSelectIdleCmdAdapter
from
"
./selectIdleCmd
"
;
import
MsgSelectPlaceAdapter
from
"
./selectPlace
"
;
/*
* STOC GameMsg
...
...
@@ -67,6 +68,11 @@ export default class GameMsgAdapter implements StocAdapter {
break
;
}
case
GAME_MSG
.
MSG_SELECT_PLACE
:
{
gameMsg
.
select_place
=
MsgSelectPlaceAdapter
(
gameData
);
break
;
}
default
:
{
console
.
log
(
"
Unhandled GameMessage function=
"
,
func
);
...
...
src/api/ocgcore/ocgAdapter/stoc/stocGameMsg/selectPlace.ts
0 → 100644
View file @
58ce6d5e
import
{
ygopro
}
from
"
../../../idl/ocgcore
"
;
import
{
BufferReader
}
from
"
../../bufferIO
"
;
import
MsgSelectPlace
=
ygopro
.
StocGameMessage
.
MsgSelectPlace
;
/*
* Msg Select Place
*
* @param - see: https://code.mycard.moe/mycard/neos-protobuf/-/blob/main/idl/ocgcore.proto
*
* @usage - 玩家可选择的位置
* */
export
default
(
data
:
Uint8Array
)
=>
{
const
reader
=
new
BufferReader
(
data
,
true
);
const
player
=
reader
.
readUint8
();
let
count
=
reader
.
readUint8
();
const
_field
=
~
reader
.
readUint32
();
// TODO: 暂时和`ygopro2`一样不支持取消操作,后续需要再考虑加上
if
(
count
==
0
)
{
count
=
1
;
}
const
msg
=
new
MsgSelectPlace
({
player
,
count
,
places
:
[],
});
for
(
let
i
=
0
;
i
<
2
;
i
++
)
{
const
controler
=
i
==
0
?
player
:
1
-
player
;
const
field
=
i
==
0
?
_field
&
0xffff
:
_field
>>
16
;
if
((
field
&
0x7f
)
!=
0
)
{
// 怪兽区
const
zone
=
ygopro
.
CardZone
.
MZONE
;
const
filter
=
field
&
0x7f
;
for
(
let
sequence
=
0
;
sequence
<
7
;
sequence
++
)
{
if
((
filter
&
(
1
<<
sequence
))
!=
0
)
{
msg
.
places
.
push
(
new
MsgSelectPlace
.
SelectAblePlace
({
controler
,
zone
,
sequence
:
sequence
,
})
);
}
}
}
if
((
field
&
0x1f00
)
!=
0
)
{
// 魔法陷阱区
const
zone
=
ygopro
.
CardZone
.
SZONE
;
const
filter
=
(
field
>>
8
)
&
0x1f
;
for
(
let
sequence
=
0
;
sequence
<
5
;
sequence
++
)
{
if
((
filter
&
(
1
<<
sequence
))
!=
0
)
{
msg
.
places
.
push
(
new
MsgSelectPlace
.
SelectAblePlace
({
controler
,
zone
,
sequence
,
})
);
}
}
}
if
((
field
&
0xc000
)
!=
0
)
{
// 灵摆区?
const
zone
=
ygopro
.
CardZone
.
SZONE
;
const
filter
=
(
field
>>
14
)
&
0x3
;
if
((
filter
&
0x1
)
!=
0
)
{
msg
.
places
.
push
(
new
MsgSelectPlace
.
SelectAblePlace
({
controler
,
zone
,
sequence
:
6
,
})
);
}
if
((
filter
&
0x2
)
!=
0
)
{
msg
.
places
.
push
(
new
MsgSelectPlace
.
SelectAblePlace
({
controler
,
zone
,
sequence
:
7
,
})
);
}
}
}
return
msg
;
};
src/reducers/duel/hintSlice.ts
View file @
58ce6d5e
...
...
@@ -2,6 +2,7 @@ import { createAsyncThunk, ActionReducerMapBuilder } from "@reduxjs/toolkit";
import
{
DuelState
}
from
"
./mod
"
;
import
{
RootState
}
from
"
../../store
"
;
import
{
fetchStrings
}
from
"
../../api/strings
"
;
import
{
fetchCard
}
from
"
../../api/cards
"
;
import
{
judgeSelf
}
from
"
./util
"
;
export
interface
HintState
{
...
...
@@ -9,8 +10,8 @@ export interface HintState {
msg
?:
string
;
}
export
const
fetchHintMeta
=
createAsyncThunk
(
"
duel/fetchHintMeta
"
,
export
const
fetch
Common
HintMeta
=
createAsyncThunk
(
"
duel/fetch
Common
HintMeta
"
,
async
(
param
:
[
number
,
number
])
=>
{
const
player
=
param
[
0
];
const
hintData
=
param
[
1
];
...
...
@@ -22,8 +23,21 @@ export const fetchHintMeta = createAsyncThunk(
}
);
export
const
fetchSelectPlaceHintMeta
=
createAsyncThunk
(
"
duel/fetchSelectPlaceHintMeta
"
,
async
(
param
:
[
number
,
number
])
=>
{
const
player
=
param
[
0
];
const
hintData
=
param
[
1
];
const
hintMeta
=
(
await
fetchCard
(
hintData
)).
text
.
name
||
"
[?]
"
;
const
response
:
[
number
,
string
]
=
[
player
,
hintMeta
];
return
response
;
}
);
export
const
hintCase
=
(
builder
:
ActionReducerMapBuilder
<
DuelState
>
)
=>
{
builder
.
addCase
(
fetchHintMeta
.
pending
,
(
state
,
action
)
=>
{
builder
.
addCase
(
fetch
Common
HintMeta
.
pending
,
(
state
,
action
)
=>
{
const
player
=
action
.
meta
.
arg
[
0
];
const
code
=
action
.
meta
.
arg
[
1
];
...
...
@@ -33,7 +47,7 @@ export const hintCase = (builder: ActionReducerMapBuilder<DuelState>) => {
state
.
opHint
=
{
code
};
}
});
builder
.
addCase
(
fetchHintMeta
.
fulfilled
,
(
state
,
action
)
=>
{
builder
.
addCase
(
fetch
Common
HintMeta
.
fulfilled
,
(
state
,
action
)
=>
{
const
player
=
action
.
payload
[
0
];
const
hintMeta
=
action
.
payload
[
1
];
...
...
@@ -42,6 +56,31 @@ export const hintCase = (builder: ActionReducerMapBuilder<DuelState>) => {
hint
.
msg
=
hintMeta
;
}
});
builder
.
addCase
(
fetchSelectPlaceHintMeta
.
pending
,
(
state
,
action
)
=>
{
const
player
=
action
.
meta
.
arg
[
0
];
const
code
=
action
.
meta
.
arg
[
1
];
if
(
judgeSelf
(
player
,
state
))
{
state
.
meHint
=
{
code
};
}
else
{
state
.
opHint
=
{
code
};
}
});
builder
.
addCase
(
fetchSelectPlaceHintMeta
.
fulfilled
,
(
state
,
action
)
=>
{
const
player
=
action
.
payload
[
0
];
const
hintMeta
=
action
.
payload
[
1
];
// TODO: 国际化文案
const
hintMsg
=
judgeSelf
(
player
,
state
)
?
`请为我方的<
${
hintMeta
}
>选择位置`
:
`请为对方的<
${
hintMeta
}
>选择位置`
;
const
hint
=
judgeSelf
(
player
,
state
)
?
state
.
meHint
:
state
.
opHint
;
if
(
hint
)
{
hint
.
msg
=
hintMsg
;
}
});
};
export
const
selectMeHint
=
(
state
:
RootState
)
=>
state
.
duel
.
meHint
;
...
...
src/service/duel/gameMsg.ts
View file @
58ce6d5e
...
...
@@ -6,6 +6,7 @@ import onMsgNewTurn from "./newTurn";
import
onMsgNewPhase
from
"
./newPhase
"
;
import
onMsgHint
from
"
./hint
"
;
import
onMsgSelectIdleCmd
from
"
./selectIdleCmd
"
;
import
onMsgSelectPlace
from
"
./selectPlace
"
;
export
default
function
handleGameMsg
(
pb
:
ygopro
.
YgoStocMsg
)
{
const
dispatch
=
store
.
dispatch
;
...
...
@@ -54,6 +55,13 @@ export default function handleGameMsg(pb: ygopro.YgoStocMsg) {
break
;
}
case
"
select_place
"
:
{
const
selectPlace
=
msg
.
select_place
;
onMsgSelectPlace
(
selectPlace
,
dispatch
);
break
;
}
default
:
{
break
;
}
...
...
src/service/duel/hint.ts
View file @
58ce6d5e
import
{
ygopro
}
from
"
../../api/ocgcore/idl/ocgcore
"
;
import
{
AppDispatch
}
from
"
../../store
"
;
import
{
fetchHintMeta
}
from
"
../../reducers/duel/hintSlice
"
;
import
{
fetchCommonHintMeta
,
fetchSelectPlaceHintMeta
,
}
from
"
../../reducers/duel/hintSlice
"
;
import
MsgHint
=
ygopro
.
StocGameMessage
.
MsgHint
;
export
default
(
hint
:
MsgHint
,
dispatch
:
AppDispatch
)
=>
{
...
...
@@ -8,7 +11,11 @@ export default (hint: MsgHint, dispatch: AppDispatch) => {
switch
(
hint
.
hint_type
)
{
case
MsgHint
.
HintType
.
HINT_EVENT
:
case
MsgHint
.
HintType
.
HINT_MESSAGE
:
{
dispatch
(
fetchHintMeta
([
player
,
hint
.
hint_data
]));
dispatch
(
fetchCommonHintMeta
([
player
,
hint
.
hint_data
]));
break
;
}
case
MsgHint
.
HintType
.
HINT_SELECTMSG
:
{
dispatch
(
fetchSelectPlaceHintMeta
([
player
,
hint
.
hint_data
]));
break
;
}
default
:
{
...
...
src/service/duel/selectPlace.ts
0 → 100644
View file @
58ce6d5e
import
{
ygopro
}
from
"
../../api/ocgcore/idl/ocgcore
"
;
import
{
AppDispatch
}
from
"
../../store
"
;
import
MsgSelectPlace
=
ygopro
.
StocGameMessage
.
MsgSelectPlace
;
export
default
(
selectPlace
:
MsgSelectPlace
,
dispatch
:
AppDispatch
)
=>
{
// TODO
console
.
log
(
selectPlace
);
};
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