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
0eb554ec
Commit
0eb554ec
authored
Mar 19, 2023
by
Chunchi Che
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'feat/reload_field' into 'main'
Feat/reload field See merge request
mycard/Neos!148
parents
998fb4a9
1d44f99e
Changes
11
Show whitespace changes
Inline
Side-by-side
Showing
11 changed files
with
1098 additions
and
7 deletions
+1098
-7
neos-protobuf
neos-protobuf
+1
-1
src/api/ocgcore/idl/ocgcore.ts
src/api/ocgcore/idl/ocgcore.ts
+798
-3
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/reloadField.ts
src/api/ocgcore/ocgAdapter/stoc/stocGameMsg/reloadField.ts
+157
-0
src/reducers/duel/commonSlice.ts
src/reducers/duel/commonSlice.ts
+86
-0
src/reducers/duel/generic.ts
src/reducers/duel/generic.ts
+31
-2
src/reducers/duel/mod.ts
src/reducers/duel/mod.ts
+3
-0
src/service/duel/gameMsg.ts
src/service/duel/gameMsg.ts
+6
-0
src/service/duel/reloadField.ts
src/service/duel/reloadField.ts
+8
-0
src/store.ts
src/store.ts
+1
-1
No files found.
neos-protobuf
@
4f6cdd7c
Subproject commit
96e06224838437a6cd0c985070f31ddedc08ad89
Subproject commit
4f6cdd7ccc3b11b39ff8aa649e423bcf401f7ad5
src/api/ocgcore/idl/ocgcore.ts
View file @
0eb554ec
...
@@ -5446,7 +5446,7 @@ export namespace ygopro {
...
@@ -5446,7 +5446,7 @@ export namespace ygopro {
#
one_of_decls
:
number
[][]
=
[
#
one_of_decls
:
number
[][]
=
[
[
[
1
,
2
,
3
,
4
,
5
,
6
,
7
,
8
,
9
,
10
,
11
,
12
,
13
,
14
,
15
,
16
,
17
,
18
,
19
,
20
,
1
,
2
,
3
,
4
,
5
,
6
,
7
,
8
,
9
,
10
,
11
,
12
,
13
,
14
,
15
,
16
,
17
,
18
,
19
,
20
,
21
,
22
,
23
,
21
,
22
,
23
,
24
,
],
],
];
];
constructor
(
constructor
(
...
@@ -5477,6 +5477,7 @@ export namespace ygopro {
...
@@ -5477,6 +5477,7 @@ export namespace ygopro {
wait
?:
never
;
wait
?:
never
;
unimplemented
?:
never
;
unimplemented
?:
never
;
update_data
?:
never
;
update_data
?:
never
;
reload_field
?:
never
;
}
}
|
{
|
{
start
?:
never
;
start
?:
never
;
...
@@ -5502,6 +5503,7 @@ export namespace ygopro {
...
@@ -5502,6 +5503,7 @@ export namespace ygopro {
wait
?:
never
;
wait
?:
never
;
unimplemented
?:
never
;
unimplemented
?:
never
;
update_data
?:
never
;
update_data
?:
never
;
reload_field
?:
never
;
}
}
|
{
|
{
start
?:
never
;
start
?:
never
;
...
@@ -5527,6 +5529,7 @@ export namespace ygopro {
...
@@ -5527,6 +5529,7 @@ export namespace ygopro {
wait
?:
never
;
wait
?:
never
;
unimplemented
?:
never
;
unimplemented
?:
never
;
update_data
?:
never
;
update_data
?:
never
;
reload_field
?:
never
;
}
}
|
{
|
{
start
?:
never
;
start
?:
never
;
...
@@ -5552,6 +5555,7 @@ export namespace ygopro {
...
@@ -5552,6 +5555,7 @@ export namespace ygopro {
wait
?:
never
;
wait
?:
never
;
unimplemented
?:
never
;
unimplemented
?:
never
;
update_data
?:
never
;
update_data
?:
never
;
reload_field
?:
never
;
}
}
|
{
|
{
start
?:
never
;
start
?:
never
;
...
@@ -5577,6 +5581,7 @@ export namespace ygopro {
...
@@ -5577,6 +5581,7 @@ export namespace ygopro {
wait
?:
never
;
wait
?:
never
;
unimplemented
?:
never
;
unimplemented
?:
never
;
update_data
?:
never
;
update_data
?:
never
;
reload_field
?:
never
;
}
}
|
{
|
{
start
?:
never
;
start
?:
never
;
...
@@ -5602,6 +5607,7 @@ export namespace ygopro {
...
@@ -5602,6 +5607,7 @@ export namespace ygopro {
wait
?:
never
;
wait
?:
never
;
unimplemented
?:
never
;
unimplemented
?:
never
;
update_data
?:
never
;
update_data
?:
never
;
reload_field
?:
never
;
}
}
|
{
|
{
start
?:
never
;
start
?:
never
;
...
@@ -5627,6 +5633,7 @@ export namespace ygopro {
...
@@ -5627,6 +5633,7 @@ export namespace ygopro {
wait
?:
never
;
wait
?:
never
;
unimplemented
?:
never
;
unimplemented
?:
never
;
update_data
?:
never
;
update_data
?:
never
;
reload_field
?:
never
;
}
}
|
{
|
{
start
?:
never
;
start
?:
never
;
...
@@ -5652,6 +5659,7 @@ export namespace ygopro {
...
@@ -5652,6 +5659,7 @@ export namespace ygopro {
wait
?:
never
;
wait
?:
never
;
unimplemented
?:
never
;
unimplemented
?:
never
;
update_data
?:
never
;
update_data
?:
never
;
reload_field
?:
never
;
}
}
|
{
|
{
start
?:
never
;
start
?:
never
;
...
@@ -5677,6 +5685,7 @@ export namespace ygopro {
...
@@ -5677,6 +5685,7 @@ export namespace ygopro {
wait
?:
never
;
wait
?:
never
;
unimplemented
?:
never
;
unimplemented
?:
never
;
update_data
?:
never
;
update_data
?:
never
;
reload_field
?:
never
;
}
}
|
{
|
{
start
?:
never
;
start
?:
never
;
...
@@ -5702,6 +5711,7 @@ export namespace ygopro {
...
@@ -5702,6 +5711,7 @@ export namespace ygopro {
wait
?:
never
;
wait
?:
never
;
unimplemented
?:
never
;
unimplemented
?:
never
;
update_data
?:
never
;
update_data
?:
never
;
reload_field
?:
never
;
}
}
|
{
|
{
start
?:
never
;
start
?:
never
;
...
@@ -5727,6 +5737,7 @@ export namespace ygopro {
...
@@ -5727,6 +5737,7 @@ export namespace ygopro {
wait
?:
never
;
wait
?:
never
;
unimplemented
?:
never
;
unimplemented
?:
never
;
update_data
?:
never
;
update_data
?:
never
;
reload_field
?:
never
;
}
}
|
{
|
{
start
?:
never
;
start
?:
never
;
...
@@ -5752,6 +5763,7 @@ export namespace ygopro {
...
@@ -5752,6 +5763,7 @@ export namespace ygopro {
wait
?:
never
;
wait
?:
never
;
unimplemented
?:
never
;
unimplemented
?:
never
;
update_data
?:
never
;
update_data
?:
never
;
reload_field
?:
never
;
}
}
|
{
|
{
start
?:
never
;
start
?:
never
;
...
@@ -5777,6 +5789,7 @@ export namespace ygopro {
...
@@ -5777,6 +5789,7 @@ export namespace ygopro {
wait
?:
never
;
wait
?:
never
;
unimplemented
?:
never
;
unimplemented
?:
never
;
update_data
?:
never
;
update_data
?:
never
;
reload_field
?:
never
;
}
}
|
{
|
{
start
?:
never
;
start
?:
never
;
...
@@ -5802,6 +5815,7 @@ export namespace ygopro {
...
@@ -5802,6 +5815,7 @@ export namespace ygopro {
wait
?:
never
;
wait
?:
never
;
unimplemented
?:
never
;
unimplemented
?:
never
;
update_data
?:
never
;
update_data
?:
never
;
reload_field
?:
never
;
}
}
|
{
|
{
start
?:
never
;
start
?:
never
;
...
@@ -5827,6 +5841,7 @@ export namespace ygopro {
...
@@ -5827,6 +5841,7 @@ export namespace ygopro {
wait
?:
never
;
wait
?:
never
;
unimplemented
?:
never
;
unimplemented
?:
never
;
update_data
?:
never
;
update_data
?:
never
;
reload_field
?:
never
;
}
}
|
{
|
{
start
?:
never
;
start
?:
never
;
...
@@ -5852,6 +5867,7 @@ export namespace ygopro {
...
@@ -5852,6 +5867,7 @@ export namespace ygopro {
wait
?:
never
;
wait
?:
never
;
unimplemented
?:
never
;
unimplemented
?:
never
;
update_data
?:
never
;
update_data
?:
never
;
reload_field
?:
never
;
}
}
|
{
|
{
start
?:
never
;
start
?:
never
;
...
@@ -5877,6 +5893,7 @@ export namespace ygopro {
...
@@ -5877,6 +5893,7 @@ export namespace ygopro {
wait
?:
never
;
wait
?:
never
;
unimplemented
?:
never
;
unimplemented
?:
never
;
update_data
?:
never
;
update_data
?:
never
;
reload_field
?:
never
;
}
}
|
{
|
{
start
?:
never
;
start
?:
never
;
...
@@ -5902,6 +5919,7 @@ export namespace ygopro {
...
@@ -5902,6 +5919,7 @@ export namespace ygopro {
wait
?:
never
;
wait
?:
never
;
unimplemented
?:
never
;
unimplemented
?:
never
;
update_data
?:
never
;
update_data
?:
never
;
reload_field
?:
never
;
}
}
|
{
|
{
start
?:
never
;
start
?:
never
;
...
@@ -5927,6 +5945,7 @@ export namespace ygopro {
...
@@ -5927,6 +5945,7 @@ export namespace ygopro {
wait
?:
never
;
wait
?:
never
;
unimplemented
?:
never
;
unimplemented
?:
never
;
update_data
?:
never
;
update_data
?:
never
;
reload_field
?:
never
;
}
}
|
{
|
{
start
?:
never
;
start
?:
never
;
...
@@ -5952,6 +5971,7 @@ export namespace ygopro {
...
@@ -5952,6 +5971,7 @@ export namespace ygopro {
wait
?:
never
;
wait
?:
never
;
unimplemented
?:
never
;
unimplemented
?:
never
;
update_data
?:
never
;
update_data
?:
never
;
reload_field
?:
never
;
}
}
|
{
|
{
start
?:
never
;
start
?:
never
;
...
@@ -5977,6 +5997,7 @@ export namespace ygopro {
...
@@ -5977,6 +5997,7 @@ export namespace ygopro {
wait
?:
StocGameMessage
.
MsgWait
;
wait
?:
StocGameMessage
.
MsgWait
;
unimplemented
?:
never
;
unimplemented
?:
never
;
update_data
?:
never
;
update_data
?:
never
;
reload_field
?:
never
;
}
}
|
{
|
{
start
?:
never
;
start
?:
never
;
...
@@ -6002,6 +6023,7 @@ export namespace ygopro {
...
@@ -6002,6 +6023,7 @@ export namespace ygopro {
wait
?:
never
;
wait
?:
never
;
unimplemented
?:
StocGameMessage
.
MsgUnimplemented
;
unimplemented
?:
StocGameMessage
.
MsgUnimplemented
;
update_data
?:
never
;
update_data
?:
never
;
reload_field
?:
never
;
}
}
|
{
|
{
start
?:
never
;
start
?:
never
;
...
@@ -6027,6 +6049,33 @@ export namespace ygopro {
...
@@ -6027,6 +6049,33 @@ export namespace ygopro {
wait
?:
never
;
wait
?:
never
;
unimplemented
?:
never
;
unimplemented
?:
never
;
update_data
?:
StocGameMessage
.
MsgUpdateData
;
update_data
?:
StocGameMessage
.
MsgUpdateData
;
reload_field
?:
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
?:
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
?:
StocGameMessage
.
MsgReloadField
;
}
}
))
))
)
{
)
{
...
@@ -6115,6 +6164,9 @@ export namespace ygopro {
...
@@ -6115,6 +6164,9 @@ export namespace ygopro {
if
(
"
update_data
"
in
data
&&
data
.
update_data
!=
undefined
)
{
if
(
"
update_data
"
in
data
&&
data
.
update_data
!=
undefined
)
{
this
.
update_data
=
data
.
update_data
;
this
.
update_data
=
data
.
update_data
;
}
}
if
(
"
reload_field
"
in
data
&&
data
.
reload_field
!=
undefined
)
{
this
.
reload_field
=
data
.
reload_field
;
}
}
}
}
}
get
start
()
{
get
start
()
{
...
@@ -6416,6 +6468,19 @@ export namespace ygopro {
...
@@ -6416,6 +6468,19 @@ export namespace ygopro {
get
has_update_data
()
{
get
has_update_data
()
{
return
pb_1
.
Message
.
getField
(
this
,
23
)
!=
null
;
return
pb_1
.
Message
.
getField
(
this
,
23
)
!=
null
;
}
}
get
reload_field
()
{
return
pb_1
.
Message
.
getWrapperField
(
this
,
StocGameMessage
.
MsgReloadField
,
24
)
as
StocGameMessage
.
MsgReloadField
;
}
set
reload_field
(
value
:
StocGameMessage
.
MsgReloadField
)
{
pb_1
.
Message
.
setOneofWrapperField
(
this
,
24
,
this
.
#
one_of_decls
[
0
],
value
);
}
get
has_reload_field
()
{
return
pb_1
.
Message
.
getField
(
this
,
24
)
!=
null
;
}
get
gameMsg
()
{
get
gameMsg
()
{
const
cases
:
{
const
cases
:
{
[
index
:
number
]:
[
index
:
number
]:
...
@@ -6442,7 +6507,8 @@ export namespace ygopro {
...
@@ -6442,7 +6507,8 @@ export namespace ygopro {
|
"
win
"
|
"
win
"
|
"
wait
"
|
"
wait
"
|
"
unimplemented
"
|
"
unimplemented
"
|
"
update_data
"
;
|
"
update_data
"
|
"
reload_field
"
;
}
=
{
}
=
{
0
:
"
none
"
,
0
:
"
none
"
,
1
:
"
start
"
,
1
:
"
start
"
,
...
@@ -6468,13 +6534,14 @@ export namespace ygopro {
...
@@ -6468,13 +6534,14 @@ export namespace ygopro {
21
:
"
wait
"
,
21
:
"
wait
"
,
22
:
"
unimplemented
"
,
22
:
"
unimplemented
"
,
23
:
"
update_data
"
,
23
:
"
update_data
"
,
24
:
"
reload_field
"
,
};
};
return
cases
[
return
cases
[
pb_1
.
Message
.
computeOneofCase
(
pb_1
.
Message
.
computeOneofCase
(
this
,
this
,
[
[
1
,
2
,
3
,
4
,
5
,
6
,
7
,
8
,
9
,
10
,
11
,
12
,
13
,
14
,
15
,
16
,
17
,
18
,
19
,
1
,
2
,
3
,
4
,
5
,
6
,
7
,
8
,
9
,
10
,
11
,
12
,
13
,
14
,
15
,
16
,
17
,
18
,
19
,
20
,
21
,
22
,
23
,
20
,
21
,
22
,
23
,
24
,
]
]
)
)
];
];
...
@@ -6537,6 +6604,9 @@ export namespace ygopro {
...
@@ -6537,6 +6604,9 @@ export namespace ygopro {
update_data
?:
ReturnType
<
update_data
?:
ReturnType
<
typeof
StocGameMessage
.
MsgUpdateData
.
prototype
.
toObject
typeof
StocGameMessage
.
MsgUpdateData
.
prototype
.
toObject
>
;
>
;
reload_field
?:
ReturnType
<
typeof
StocGameMessage
.
MsgReloadField
.
prototype
.
toObject
>
;
}):
StocGameMessage
{
}):
StocGameMessage
{
const
message
=
new
StocGameMessage
({});
const
message
=
new
StocGameMessage
({});
if
(
data
.
start
!=
null
)
{
if
(
data
.
start
!=
null
)
{
...
@@ -6640,6 +6710,11 @@ export namespace ygopro {
...
@@ -6640,6 +6710,11 @@ export namespace ygopro {
data
.
update_data
data
.
update_data
);
);
}
}
if
(
data
.
reload_field
!=
null
)
{
message
.
reload_field
=
StocGameMessage
.
MsgReloadField
.
fromObject
(
data
.
reload_field
);
}
return
message
;
return
message
;
}
}
toObject
()
{
toObject
()
{
...
@@ -6701,6 +6776,9 @@ export namespace ygopro {
...
@@ -6701,6 +6776,9 @@ export namespace ygopro {
update_data
?:
ReturnType
<
update_data
?:
ReturnType
<
typeof
StocGameMessage
.
MsgUpdateData
.
prototype
.
toObject
typeof
StocGameMessage
.
MsgUpdateData
.
prototype
.
toObject
>
;
>
;
reload_field
?:
ReturnType
<
typeof
StocGameMessage
.
MsgReloadField
.
prototype
.
toObject
>
;
}
=
{};
}
=
{};
if
(
this
.
start
!=
null
)
{
if
(
this
.
start
!=
null
)
{
data
.
start
=
this
.
start
.
toObject
();
data
.
start
=
this
.
start
.
toObject
();
...
@@ -6771,6 +6849,9 @@ export namespace ygopro {
...
@@ -6771,6 +6849,9 @@ export namespace ygopro {
if
(
this
.
update_data
!=
null
)
{
if
(
this
.
update_data
!=
null
)
{
data
.
update_data
=
this
.
update_data
.
toObject
();
data
.
update_data
=
this
.
update_data
.
toObject
();
}
}
if
(
this
.
reload_field
!=
null
)
{
data
.
reload_field
=
this
.
reload_field
.
toObject
();
}
return
data
;
return
data
;
}
}
serialize
():
Uint8Array
;
serialize
():
Uint8Array
;
...
@@ -6857,6 +6938,10 @@ export namespace ygopro {
...
@@ -6857,6 +6938,10 @@ export namespace ygopro {
writer
.
writeMessage
(
23
,
this
.
update_data
,
()
=>
writer
.
writeMessage
(
23
,
this
.
update_data
,
()
=>
this
.
update_data
.
serialize
(
writer
)
this
.
update_data
.
serialize
(
writer
)
);
);
if
(
this
.
has_reload_field
)
writer
.
writeMessage
(
24
,
this
.
reload_field
,
()
=>
this
.
reload_field
.
serialize
(
writer
)
);
if
(
!
w
)
return
writer
.
getResultBuffer
();
if
(
!
w
)
return
writer
.
getResultBuffer
();
}
}
static
deserialize
(
bytes
:
Uint8Array
|
pb_1
.
BinaryReader
):
StocGameMessage
{
static
deserialize
(
bytes
:
Uint8Array
|
pb_1
.
BinaryReader
):
StocGameMessage
{
...
@@ -7041,6 +7126,14 @@ export namespace ygopro {
...
@@ -7041,6 +7126,14 @@ export namespace ygopro {
StocGameMessage
.
MsgUpdateData
.
deserialize
(
reader
))
StocGameMessage
.
MsgUpdateData
.
deserialize
(
reader
))
);
);
break
;
break
;
case
24
:
reader
.
readMessage
(
message
.
reload_field
,
()
=>
(
message
.
reload_field
=
StocGameMessage
.
MsgReloadField
.
deserialize
(
reader
))
);
break
;
default
:
default
:
reader
.
skipField
();
reader
.
skipField
();
}
}
...
@@ -12519,5 +12612,707 @@ export namespace ygopro {
...
@@ -12519,5 +12612,707 @@ export namespace ygopro {
}
}
}
}
}
}
export
class
MsgReloadField
extends
pb_1
.
Message
{
#
one_of_decls
:
number
[][]
=
[];
constructor
(
data
?:
|
any
[]
|
{
duel_rule
?:
number
;
actions
?:
StocGameMessage
.
MsgReloadField
.
Action
[];
}
)
{
super
();
pb_1
.
Message
.
initialize
(
this
,
Array
.
isArray
(
data
)
?
data
:
[],
0
,
-
1
,
[
2
],
this
.
#
one_of_decls
);
if
(
!
Array
.
isArray
(
data
)
&&
typeof
data
==
"
object
"
)
{
if
(
"
duel_rule
"
in
data
&&
data
.
duel_rule
!=
undefined
)
{
this
.
duel_rule
=
data
.
duel_rule
;
}
if
(
"
actions
"
in
data
&&
data
.
actions
!=
undefined
)
{
this
.
actions
=
data
.
actions
;
}
}
}
get
duel_rule
()
{
return
pb_1
.
Message
.
getFieldWithDefault
(
this
,
1
,
0
)
as
number
;
}
set
duel_rule
(
value
:
number
)
{
pb_1
.
Message
.
setField
(
this
,
1
,
value
);
}
get
actions
()
{
return
pb_1
.
Message
.
getRepeatedWrapperField
(
this
,
StocGameMessage
.
MsgReloadField
.
Action
,
2
)
as
StocGameMessage
.
MsgReloadField
.
Action
[];
}
set
actions
(
value
:
StocGameMessage
.
MsgReloadField
.
Action
[])
{
pb_1
.
Message
.
setRepeatedWrapperField
(
this
,
2
,
value
);
}
static
fromObject
(
data
:
{
duel_rule
?:
number
;
actions
?:
ReturnType
<
typeof
StocGameMessage
.
MsgReloadField
.
Action
.
prototype
.
toObject
>
[];
}):
MsgReloadField
{
const
message
=
new
MsgReloadField
({});
if
(
data
.
duel_rule
!=
null
)
{
message
.
duel_rule
=
data
.
duel_rule
;
}
if
(
data
.
actions
!=
null
)
{
message
.
actions
=
data
.
actions
.
map
((
item
)
=>
StocGameMessage
.
MsgReloadField
.
Action
.
fromObject
(
item
)
);
}
return
message
;
}
toObject
()
{
const
data
:
{
duel_rule
?:
number
;
actions
?:
ReturnType
<
typeof
StocGameMessage
.
MsgReloadField
.
Action
.
prototype
.
toObject
>
[];
}
=
{};
if
(
this
.
duel_rule
!=
null
)
{
data
.
duel_rule
=
this
.
duel_rule
;
}
if
(
this
.
actions
!=
null
)
{
data
.
actions
=
this
.
actions
.
map
(
(
item
:
StocGameMessage
.
MsgReloadField
.
Action
)
=>
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
.
duel_rule
!=
0
)
writer
.
writeInt32
(
1
,
this
.
duel_rule
);
if
(
this
.
actions
.
length
)
writer
.
writeRepeatedMessage
(
2
,
this
.
actions
,
(
item
:
StocGameMessage
.
MsgReloadField
.
Action
)
=>
item
.
serialize
(
writer
)
);
if
(
!
w
)
return
writer
.
getResultBuffer
();
}
static
deserialize
(
bytes
:
Uint8Array
|
pb_1
.
BinaryReader
):
MsgReloadField
{
const
reader
=
bytes
instanceof
pb_1
.
BinaryReader
?
bytes
:
new
pb_1
.
BinaryReader
(
bytes
),
message
=
new
MsgReloadField
();
while
(
reader
.
nextField
())
{
if
(
reader
.
isEndGroup
())
break
;
switch
(
reader
.
getFieldNumber
())
{
case
1
:
message
.
duel_rule
=
reader
.
readInt32
();
break
;
case
2
:
reader
.
readMessage
(
message
.
actions
,
()
=>
pb_1
.
Message
.
addToRepeatedWrapperField
(
message
,
2
,
StocGameMessage
.
MsgReloadField
.
Action
.
deserialize
(
reader
),
StocGameMessage
.
MsgReloadField
.
Action
)
);
break
;
default
:
reader
.
skipField
();
}
}
return
message
;
}
serializeBinary
():
Uint8Array
{
return
this
.
serialize
();
}
static
deserializeBinary
(
bytes
:
Uint8Array
):
MsgReloadField
{
return
MsgReloadField
.
deserialize
(
bytes
);
}
}
export
namespace
MsgReloadField
{
export
class
ZoneAction
extends
pb_1
.
Message
{
#
one_of_decls
:
number
[][]
=
[];
constructor
(
data
?:
|
any
[]
|
{
zone
?:
CardZone
;
sequence
?:
number
;
position
?:
number
;
overlay_count
?:
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
(
"
zone
"
in
data
&&
data
.
zone
!=
undefined
)
{
this
.
zone
=
data
.
zone
;
}
if
(
"
sequence
"
in
data
&&
data
.
sequence
!=
undefined
)
{
this
.
sequence
=
data
.
sequence
;
}
if
(
"
position
"
in
data
&&
data
.
position
!=
undefined
)
{
this
.
position
=
data
.
position
;
}
if
(
"
overlay_count
"
in
data
&&
data
.
overlay_count
!=
undefined
)
{
this
.
overlay_count
=
data
.
overlay_count
;
}
}
}
get
zone
()
{
return
pb_1
.
Message
.
getFieldWithDefault
(
this
,
1
,
CardZone
.
DECK
)
as
CardZone
;
}
set
zone
(
value
:
CardZone
)
{
pb_1
.
Message
.
setField
(
this
,
1
,
value
);
}
get
sequence
()
{
return
pb_1
.
Message
.
getFieldWithDefault
(
this
,
2
,
0
)
as
number
;
}
set
sequence
(
value
:
number
)
{
pb_1
.
Message
.
setField
(
this
,
2
,
value
);
}
get
position
()
{
return
pb_1
.
Message
.
getFieldWithDefault
(
this
,
3
,
0
)
as
number
;
}
set
position
(
value
:
number
)
{
pb_1
.
Message
.
setField
(
this
,
3
,
value
);
}
get
overlay_count
()
{
return
pb_1
.
Message
.
getFieldWithDefault
(
this
,
4
,
0
)
as
number
;
}
set
overlay_count
(
value
:
number
)
{
pb_1
.
Message
.
setField
(
this
,
4
,
value
);
}
static
fromObject
(
data
:
{
zone
?:
CardZone
;
sequence
?:
number
;
position
?:
number
;
overlay_count
?:
number
;
}):
ZoneAction
{
const
message
=
new
ZoneAction
({});
if
(
data
.
zone
!=
null
)
{
message
.
zone
=
data
.
zone
;
}
if
(
data
.
sequence
!=
null
)
{
message
.
sequence
=
data
.
sequence
;
}
if
(
data
.
position
!=
null
)
{
message
.
position
=
data
.
position
;
}
if
(
data
.
overlay_count
!=
null
)
{
message
.
overlay_count
=
data
.
overlay_count
;
}
return
message
;
}
toObject
()
{
const
data
:
{
zone
?:
CardZone
;
sequence
?:
number
;
position
?:
number
;
overlay_count
?:
number
;
}
=
{};
if
(
this
.
zone
!=
null
)
{
data
.
zone
=
this
.
zone
;
}
if
(
this
.
sequence
!=
null
)
{
data
.
sequence
=
this
.
sequence
;
}
if
(
this
.
position
!=
null
)
{
data
.
position
=
this
.
position
;
}
if
(
this
.
overlay_count
!=
null
)
{
data
.
overlay_count
=
this
.
overlay_count
;
}
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
.
zone
!=
CardZone
.
DECK
)
writer
.
writeEnum
(
1
,
this
.
zone
);
if
(
this
.
sequence
!=
0
)
writer
.
writeInt32
(
2
,
this
.
sequence
);
if
(
this
.
position
!=
0
)
writer
.
writeInt32
(
3
,
this
.
position
);
if
(
this
.
overlay_count
!=
0
)
writer
.
writeInt32
(
4
,
this
.
overlay_count
);
if
(
!
w
)
return
writer
.
getResultBuffer
();
}
static
deserialize
(
bytes
:
Uint8Array
|
pb_1
.
BinaryReader
):
ZoneAction
{
const
reader
=
bytes
instanceof
pb_1
.
BinaryReader
?
bytes
:
new
pb_1
.
BinaryReader
(
bytes
),
message
=
new
ZoneAction
();
while
(
reader
.
nextField
())
{
if
(
reader
.
isEndGroup
())
break
;
switch
(
reader
.
getFieldNumber
())
{
case
1
:
message
.
zone
=
reader
.
readEnum
();
break
;
case
2
:
message
.
sequence
=
reader
.
readInt32
();
break
;
case
3
:
message
.
position
=
reader
.
readInt32
();
break
;
case
4
:
message
.
overlay_count
=
reader
.
readInt32
();
break
;
default
:
reader
.
skipField
();
}
}
return
message
;
}
serializeBinary
():
Uint8Array
{
return
this
.
serialize
();
}
static
deserializeBinary
(
bytes
:
Uint8Array
):
ZoneAction
{
return
ZoneAction
.
deserialize
(
bytes
);
}
}
export
class
ChainAction
extends
pb_1
.
Message
{
#
one_of_decls
:
number
[][]
=
[];
constructor
(
data
?:
|
any
[]
|
{
chain_code
?:
number
;
location
?:
CardLocation
;
triggering_controller
?:
number
;
triggering_location
?:
number
;
triggering_sequence
?:
number
;
effect_description
?:
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
(
"
chain_code
"
in
data
&&
data
.
chain_code
!=
undefined
)
{
this
.
chain_code
=
data
.
chain_code
;
}
if
(
"
location
"
in
data
&&
data
.
location
!=
undefined
)
{
this
.
location
=
data
.
location
;
}
if
(
"
triggering_controller
"
in
data
&&
data
.
triggering_controller
!=
undefined
)
{
this
.
triggering_controller
=
data
.
triggering_controller
;
}
if
(
"
triggering_location
"
in
data
&&
data
.
triggering_location
!=
undefined
)
{
this
.
triggering_location
=
data
.
triggering_location
;
}
if
(
"
triggering_sequence
"
in
data
&&
data
.
triggering_sequence
!=
undefined
)
{
this
.
triggering_sequence
=
data
.
triggering_sequence
;
}
if
(
"
effect_description
"
in
data
&&
data
.
effect_description
!=
undefined
)
{
this
.
effect_description
=
data
.
effect_description
;
}
}
}
get
chain_code
()
{
return
pb_1
.
Message
.
getFieldWithDefault
(
this
,
1
,
0
)
as
number
;
}
set
chain_code
(
value
:
number
)
{
pb_1
.
Message
.
setField
(
this
,
1
,
value
);
}
get
location
()
{
return
pb_1
.
Message
.
getWrapperField
(
this
,
CardLocation
,
2
)
as
CardLocation
;
}
set
location
(
value
:
CardLocation
)
{
pb_1
.
Message
.
setWrapperField
(
this
,
2
,
value
);
}
get
has_location
()
{
return
pb_1
.
Message
.
getField
(
this
,
2
)
!=
null
;
}
get
triggering_controller
()
{
return
pb_1
.
Message
.
getFieldWithDefault
(
this
,
3
,
0
)
as
number
;
}
set
triggering_controller
(
value
:
number
)
{
pb_1
.
Message
.
setField
(
this
,
3
,
value
);
}
get
triggering_location
()
{
return
pb_1
.
Message
.
getFieldWithDefault
(
this
,
4
,
0
)
as
number
;
}
set
triggering_location
(
value
:
number
)
{
pb_1
.
Message
.
setField
(
this
,
4
,
value
);
}
get
triggering_sequence
()
{
return
pb_1
.
Message
.
getFieldWithDefault
(
this
,
5
,
0
)
as
number
;
}
set
triggering_sequence
(
value
:
number
)
{
pb_1
.
Message
.
setField
(
this
,
5
,
value
);
}
get
effect_description
()
{
return
pb_1
.
Message
.
getFieldWithDefault
(
this
,
6
,
0
)
as
number
;
}
set
effect_description
(
value
:
number
)
{
pb_1
.
Message
.
setField
(
this
,
6
,
value
);
}
static
fromObject
(
data
:
{
chain_code
?:
number
;
location
?:
ReturnType
<
typeof
CardLocation
.
prototype
.
toObject
>
;
triggering_controller
?:
number
;
triggering_location
?:
number
;
triggering_sequence
?:
number
;
effect_description
?:
number
;
}):
ChainAction
{
const
message
=
new
ChainAction
({});
if
(
data
.
chain_code
!=
null
)
{
message
.
chain_code
=
data
.
chain_code
;
}
if
(
data
.
location
!=
null
)
{
message
.
location
=
CardLocation
.
fromObject
(
data
.
location
);
}
if
(
data
.
triggering_controller
!=
null
)
{
message
.
triggering_controller
=
data
.
triggering_controller
;
}
if
(
data
.
triggering_location
!=
null
)
{
message
.
triggering_location
=
data
.
triggering_location
;
}
if
(
data
.
triggering_sequence
!=
null
)
{
message
.
triggering_sequence
=
data
.
triggering_sequence
;
}
if
(
data
.
effect_description
!=
null
)
{
message
.
effect_description
=
data
.
effect_description
;
}
return
message
;
}
toObject
()
{
const
data
:
{
chain_code
?:
number
;
location
?:
ReturnType
<
typeof
CardLocation
.
prototype
.
toObject
>
;
triggering_controller
?:
number
;
triggering_location
?:
number
;
triggering_sequence
?:
number
;
effect_description
?:
number
;
}
=
{};
if
(
this
.
chain_code
!=
null
)
{
data
.
chain_code
=
this
.
chain_code
;
}
if
(
this
.
location
!=
null
)
{
data
.
location
=
this
.
location
.
toObject
();
}
if
(
this
.
triggering_controller
!=
null
)
{
data
.
triggering_controller
=
this
.
triggering_controller
;
}
if
(
this
.
triggering_location
!=
null
)
{
data
.
triggering_location
=
this
.
triggering_location
;
}
if
(
this
.
triggering_sequence
!=
null
)
{
data
.
triggering_sequence
=
this
.
triggering_sequence
;
}
if
(
this
.
effect_description
!=
null
)
{
data
.
effect_description
=
this
.
effect_description
;
}
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
.
chain_code
!=
0
)
writer
.
writeInt32
(
1
,
this
.
chain_code
);
if
(
this
.
has_location
)
writer
.
writeMessage
(
2
,
this
.
location
,
()
=>
this
.
location
.
serialize
(
writer
)
);
if
(
this
.
triggering_controller
!=
0
)
writer
.
writeInt32
(
3
,
this
.
triggering_controller
);
if
(
this
.
triggering_location
!=
0
)
writer
.
writeInt32
(
4
,
this
.
triggering_location
);
if
(
this
.
triggering_sequence
!=
0
)
writer
.
writeInt32
(
5
,
this
.
triggering_sequence
);
if
(
this
.
effect_description
!=
0
)
writer
.
writeInt32
(
6
,
this
.
effect_description
);
if
(
!
w
)
return
writer
.
getResultBuffer
();
}
static
deserialize
(
bytes
:
Uint8Array
|
pb_1
.
BinaryReader
):
ChainAction
{
const
reader
=
bytes
instanceof
pb_1
.
BinaryReader
?
bytes
:
new
pb_1
.
BinaryReader
(
bytes
),
message
=
new
ChainAction
();
while
(
reader
.
nextField
())
{
if
(
reader
.
isEndGroup
())
break
;
switch
(
reader
.
getFieldNumber
())
{
case
1
:
message
.
chain_code
=
reader
.
readInt32
();
break
;
case
2
:
reader
.
readMessage
(
message
.
location
,
()
=>
(
message
.
location
=
CardLocation
.
deserialize
(
reader
))
);
break
;
case
3
:
message
.
triggering_controller
=
reader
.
readInt32
();
break
;
case
4
:
message
.
triggering_location
=
reader
.
readInt32
();
break
;
case
5
:
message
.
triggering_sequence
=
reader
.
readInt32
();
break
;
case
6
:
message
.
effect_description
=
reader
.
readInt32
();
break
;
default
:
reader
.
skipField
();
}
}
return
message
;
}
serializeBinary
():
Uint8Array
{
return
this
.
serialize
();
}
static
deserializeBinary
(
bytes
:
Uint8Array
):
ChainAction
{
return
ChainAction
.
deserialize
(
bytes
);
}
}
export
class
Action
extends
pb_1
.
Message
{
#
one_of_decls
:
number
[][]
=
[];
constructor
(
data
?:
|
any
[]
|
{
player
?:
number
;
lp
?:
number
;
zone_actions
?:
StocGameMessage
.
MsgReloadField
.
ZoneAction
[];
chain_actions
?:
StocGameMessage
.
MsgReloadField
.
ChainAction
[];
}
)
{
super
();
pb_1
.
Message
.
initialize
(
this
,
Array
.
isArray
(
data
)
?
data
:
[],
0
,
-
1
,
[
3
,
4
],
this
.
#
one_of_decls
);
if
(
!
Array
.
isArray
(
data
)
&&
typeof
data
==
"
object
"
)
{
if
(
"
player
"
in
data
&&
data
.
player
!=
undefined
)
{
this
.
player
=
data
.
player
;
}
if
(
"
lp
"
in
data
&&
data
.
lp
!=
undefined
)
{
this
.
lp
=
data
.
lp
;
}
if
(
"
zone_actions
"
in
data
&&
data
.
zone_actions
!=
undefined
)
{
this
.
zone_actions
=
data
.
zone_actions
;
}
if
(
"
chain_actions
"
in
data
&&
data
.
chain_actions
!=
undefined
)
{
this
.
chain_actions
=
data
.
chain_actions
;
}
}
}
get
player
()
{
return
pb_1
.
Message
.
getFieldWithDefault
(
this
,
1
,
0
)
as
number
;
}
set
player
(
value
:
number
)
{
pb_1
.
Message
.
setField
(
this
,
1
,
value
);
}
get
lp
()
{
return
pb_1
.
Message
.
getFieldWithDefault
(
this
,
2
,
0
)
as
number
;
}
set
lp
(
value
:
number
)
{
pb_1
.
Message
.
setField
(
this
,
2
,
value
);
}
get
zone_actions
()
{
return
pb_1
.
Message
.
getRepeatedWrapperField
(
this
,
StocGameMessage
.
MsgReloadField
.
ZoneAction
,
3
)
as
StocGameMessage
.
MsgReloadField
.
ZoneAction
[];
}
set
zone_actions
(
value
:
StocGameMessage
.
MsgReloadField
.
ZoneAction
[])
{
pb_1
.
Message
.
setRepeatedWrapperField
(
this
,
3
,
value
);
}
get
chain_actions
()
{
return
pb_1
.
Message
.
getRepeatedWrapperField
(
this
,
StocGameMessage
.
MsgReloadField
.
ChainAction
,
4
)
as
StocGameMessage
.
MsgReloadField
.
ChainAction
[];
}
set
chain_actions
(
value
:
StocGameMessage
.
MsgReloadField
.
ChainAction
[])
{
pb_1
.
Message
.
setRepeatedWrapperField
(
this
,
4
,
value
);
}
static
fromObject
(
data
:
{
player
?:
number
;
lp
?:
number
;
zone_actions
?:
ReturnType
<
typeof
StocGameMessage
.
MsgReloadField
.
ZoneAction
.
prototype
.
toObject
>
[];
chain_actions
?:
ReturnType
<
typeof
StocGameMessage
.
MsgReloadField
.
ChainAction
.
prototype
.
toObject
>
[];
}):
Action
{
const
message
=
new
Action
({});
if
(
data
.
player
!=
null
)
{
message
.
player
=
data
.
player
;
}
if
(
data
.
lp
!=
null
)
{
message
.
lp
=
data
.
lp
;
}
if
(
data
.
zone_actions
!=
null
)
{
message
.
zone_actions
=
data
.
zone_actions
.
map
((
item
)
=>
StocGameMessage
.
MsgReloadField
.
ZoneAction
.
fromObject
(
item
)
);
}
if
(
data
.
chain_actions
!=
null
)
{
message
.
chain_actions
=
data
.
chain_actions
.
map
((
item
)
=>
StocGameMessage
.
MsgReloadField
.
ChainAction
.
fromObject
(
item
)
);
}
return
message
;
}
toObject
()
{
const
data
:
{
player
?:
number
;
lp
?:
number
;
zone_actions
?:
ReturnType
<
typeof
StocGameMessage
.
MsgReloadField
.
ZoneAction
.
prototype
.
toObject
>
[];
chain_actions
?:
ReturnType
<
typeof
StocGameMessage
.
MsgReloadField
.
ChainAction
.
prototype
.
toObject
>
[];
}
=
{};
if
(
this
.
player
!=
null
)
{
data
.
player
=
this
.
player
;
}
if
(
this
.
lp
!=
null
)
{
data
.
lp
=
this
.
lp
;
}
if
(
this
.
zone_actions
!=
null
)
{
data
.
zone_actions
=
this
.
zone_actions
.
map
(
(
item
:
StocGameMessage
.
MsgReloadField
.
ZoneAction
)
=>
item
.
toObject
()
);
}
if
(
this
.
chain_actions
!=
null
)
{
data
.
chain_actions
=
this
.
chain_actions
.
map
(
(
item
:
StocGameMessage
.
MsgReloadField
.
ChainAction
)
=>
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
.
lp
!=
0
)
writer
.
writeInt32
(
2
,
this
.
lp
);
if
(
this
.
zone_actions
.
length
)
writer
.
writeRepeatedMessage
(
3
,
this
.
zone_actions
,
(
item
:
StocGameMessage
.
MsgReloadField
.
ZoneAction
)
=>
item
.
serialize
(
writer
)
);
if
(
this
.
chain_actions
.
length
)
writer
.
writeRepeatedMessage
(
4
,
this
.
chain_actions
,
(
item
:
StocGameMessage
.
MsgReloadField
.
ChainAction
)
=>
item
.
serialize
(
writer
)
);
if
(
!
w
)
return
writer
.
getResultBuffer
();
}
static
deserialize
(
bytes
:
Uint8Array
|
pb_1
.
BinaryReader
):
Action
{
const
reader
=
bytes
instanceof
pb_1
.
BinaryReader
?
bytes
:
new
pb_1
.
BinaryReader
(
bytes
),
message
=
new
Action
();
while
(
reader
.
nextField
())
{
if
(
reader
.
isEndGroup
())
break
;
switch
(
reader
.
getFieldNumber
())
{
case
1
:
message
.
player
=
reader
.
readInt32
();
break
;
case
2
:
message
.
lp
=
reader
.
readInt32
();
break
;
case
3
:
reader
.
readMessage
(
message
.
zone_actions
,
()
=>
pb_1
.
Message
.
addToRepeatedWrapperField
(
message
,
3
,
StocGameMessage
.
MsgReloadField
.
ZoneAction
.
deserialize
(
reader
),
StocGameMessage
.
MsgReloadField
.
ZoneAction
)
);
break
;
case
4
:
reader
.
readMessage
(
message
.
chain_actions
,
()
=>
pb_1
.
Message
.
addToRepeatedWrapperField
(
message
,
4
,
StocGameMessage
.
MsgReloadField
.
ChainAction
.
deserialize
(
reader
),
StocGameMessage
.
MsgReloadField
.
ChainAction
)
);
break
;
default
:
reader
.
skipField
();
}
}
return
message
;
}
serializeBinary
():
Uint8Array
{
return
this
.
serialize
();
}
static
deserializeBinary
(
bytes
:
Uint8Array
):
Action
{
return
Action
.
deserialize
(
bytes
);
}
}
}
}
}
}
}
src/api/ocgcore/ocgAdapter/protoDecl.ts
View file @
0eb554ec
...
@@ -50,3 +50,4 @@ export const MSG_PAY_LP_COST = 100;
...
@@ -50,3 +50,4 @@ export const MSG_PAY_LP_COST = 100;
export
const
MSG_WIN
=
5
;
export
const
MSG_WIN
=
5
;
export
const
MSG_WAITING
=
3
;
export
const
MSG_WAITING
=
3
;
export
const
MSG_UPDATE_DATA
=
6
;
export
const
MSG_UPDATE_DATA
=
6
;
export
const
MSG_RELOAD_FIELD
=
162
;
src/api/ocgcore/ocgAdapter/stoc/stocGameMsg/mod.ts
View file @
0eb554ec
...
@@ -26,6 +26,7 @@ import MsgDamage from "./damage";
...
@@ -26,6 +26,7 @@ import MsgDamage from "./damage";
import
MsgRecover
from
"
./recover
"
;
import
MsgRecover
from
"
./recover
"
;
import
MsgWin
from
"
./win
"
;
import
MsgWin
from
"
./win
"
;
import
MsgUpdateDataAdapter
from
"
./updateData
"
;
import
MsgUpdateDataAdapter
from
"
./updateData
"
;
import
MsgReloadFieldAdapter
from
"
./reloadField
"
;
import
PENETRATE
from
"
./penetrate
"
;
import
PENETRATE
from
"
./penetrate
"
;
/*
/*
...
@@ -154,6 +155,11 @@ export default class GameMsgAdapter implements StocAdapter {
...
@@ -154,6 +155,11 @@ export default class GameMsgAdapter implements StocAdapter {
break
;
break
;
}
}
case
GAME_MSG
.
MSG_RELOAD_FIELD
:
{
gameMsg
.
reload_field
=
MsgReloadFieldAdapter
(
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/reloadField.ts
0 → 100644
View file @
0eb554ec
import
{
ygopro
}
from
"
../../../idl/ocgcore
"
;
// @ts-ignore
import
{
BufferReaderExt
}
from
"
../../bufferIO
"
;
import
MsgReloadField
=
ygopro
.
StocGameMessage
.
MsgReloadField
;
import
{
numberToCardPosition
}
from
"
../../util
"
;
export
default
(
data
:
Uint8Array
)
=>
{
const
reader
=
new
BufferReaderExt
(
data
);
const
duel_rule
=
reader
.
inner
.
readUint8
();
const
actions
=
[];
for
(
let
player
=
0
;
player
<
2
;
player
++
)
{
const
lp
=
reader
.
inner
.
readUint32
();
const
zone_actions
=
[];
// MZONE
for
(
let
sequence
=
0
;
sequence
<
7
;
sequence
++
)
{
const
flag
=
reader
.
inner
.
readUint8
();
if
(
flag
)
{
const
position
=
reader
.
inner
.
readUint8
();
const
overlay_count
=
reader
.
inner
.
readUint8
();
zone_actions
.
push
(
new
MsgReloadField
.
ZoneAction
({
zone
:
ygopro
.
CardZone
.
MZONE
,
sequence
,
position
:
numberToCardPosition
(
position
),
overlay_count
,
})
);
}
else
{
zone_actions
.
push
(
new
MsgReloadField
.
ZoneAction
({
zone
:
ygopro
.
CardZone
.
MZONE
,
sequence
,
position
:
ygopro
.
CardPosition
.
FACEDOWN
,
})
);
}
}
// SZONE
for
(
let
sequence
=
0
;
sequence
<
8
;
sequence
++
)
{
const
flag
=
reader
.
inner
.
readUint8
();
if
(
flag
)
{
const
position
=
reader
.
inner
.
readUint8
();
zone_actions
.
push
(
new
MsgReloadField
.
ZoneAction
({
zone
:
ygopro
.
CardZone
.
SZONE
,
sequence
,
position
:
numberToCardPosition
(
position
),
})
);
}
else
{
zone_actions
.
push
(
new
MsgReloadField
.
ZoneAction
({
zone
:
ygopro
.
CardZone
.
SZONE
,
sequence
,
position
:
ygopro
.
CardPosition
.
FACEDOWN
,
})
);
}
}
const
main_size
=
reader
.
inner
.
readUint8
();
for
(
let
sequence
=
0
;
sequence
<
main_size
;
sequence
++
)
{
zone_actions
.
push
(
new
MsgReloadField
.
ZoneAction
({
zone
:
ygopro
.
CardZone
.
DECK
,
sequence
,
position
:
ygopro
.
CardPosition
.
FACEDOWN_ATTACK
,
})
);
}
const
hand_size
=
reader
.
inner
.
readUint8
();
for
(
let
sequence
=
0
;
sequence
<
hand_size
;
sequence
++
)
{
zone_actions
.
push
(
new
MsgReloadField
.
ZoneAction
({
zone
:
ygopro
.
CardZone
.
HAND
,
sequence
,
})
);
}
const
grave_size
=
reader
.
inner
.
readUint8
();
for
(
let
sequence
=
0
;
sequence
<
grave_size
;
sequence
++
)
{
zone_actions
.
push
(
new
MsgReloadField
.
ZoneAction
({
zone
:
ygopro
.
CardZone
.
GRAVE
,
sequence
,
})
);
}
const
removed_size
=
reader
.
inner
.
readUint8
();
for
(
let
sequence
=
0
;
sequence
<
removed_size
;
sequence
++
)
{
zone_actions
.
push
(
new
MsgReloadField
.
ZoneAction
({
zone
:
ygopro
.
CardZone
.
REMOVED
,
sequence
,
})
);
}
const
extra_size
=
reader
.
inner
.
readUint8
();
for
(
let
sequence
=
0
;
sequence
<
extra_size
;
sequence
++
)
{
zone_actions
.
push
(
new
MsgReloadField
.
ZoneAction
({
zone
:
ygopro
.
CardZone
.
EXTRA
,
sequence
,
position
:
ygopro
.
CardPosition
.
FACEDOWN_ATTACK
,
})
);
}
const
_extra_p_size
=
reader
.
inner
.
readUint8
();
// const chain_size = reader.inner.readUint8();
// const chain_actions = [];
// for (let i = 0; i < chain_size; i += 1) {
// const chain_code = reader.inner.readUint32();
// const location = reader.readCardLocation();
// const triggering_controller = reader.inner.readUint8();
// const triggering_location = reader.inner.readUint8();
// const triggering_sequence = reader.inner.readUint8();
// const effect_description = reader.inner.readUint32();
//
// chain_actions.push(
// new MsgReloadField.ChainAction({
// chain_code,
// location,
// triggering_controller,
// triggering_location,
// triggering_sequence,
// effect_description,
// })
// );
// }
actions
.
push
(
new
MsgReloadField
.
Action
({
player
,
lp
,
zone_actions
,
// chain_actions,
})
);
}
return
new
MsgReloadField
({
duel_rule
,
actions
,
});
};
src/reducers/duel/commonSlice.ts
View file @
0eb554ec
...
@@ -3,9 +3,11 @@ import {
...
@@ -3,9 +3,11 @@ import {
clearIdleInteractivities
,
clearIdleInteractivities
,
clearPlaceInteractivities
,
clearPlaceInteractivities
,
DuelReducer
,
DuelReducer
,
reloadFieldMeta
,
updateCardData
,
updateCardData
,
}
from
"
./generic
"
;
}
from
"
./generic
"
;
import
{
judgeSelf
}
from
"
./util
"
;
import
{
judgeSelf
}
from
"
./util
"
;
import
MsgReloadField
=
ygopro
.
StocGameMessage
.
MsgReloadField
;
type
MsgUpdateData
=
ReturnType
<
type
MsgUpdateData
=
ReturnType
<
typeof
ygopro
.
StocGameMessage
.
MsgUpdateData
.
prototype
.
toObject
typeof
ygopro
.
StocGameMessage
.
MsgUpdateData
.
prototype
.
toObject
>
;
>
;
...
@@ -124,3 +126,87 @@ export const updateFieldDataImpl: DuelReducer<MsgUpdateData> = (
...
@@ -124,3 +126,87 @@ export const updateFieldDataImpl: DuelReducer<MsgUpdateData> = (
}
}
}
}
};
};
export
const
reloadFieldImpl
:
DuelReducer
<
MsgReloadField
>
=
(
state
,
action
)
=>
{
const
_duel_rule
=
action
.
payload
.
duel_rule
;
// 初始化`DuelState`
state
.
meDeck
=
{
inner
:
[]
};
state
.
opDeck
=
{
inner
:
[]
};
state
.
meExtraDeck
=
{
inner
:
[]
};
state
.
opExtraDeck
=
{
inner
:
[]
};
state
.
meMonsters
=
{
inner
:
[]
};
state
.
opMonsters
=
{
inner
:
[]
};
state
.
meMagics
=
{
inner
:
[]
};
state
.
opMagics
=
{
inner
:
[]
};
state
.
meCemetery
=
{
inner
:
[]
};
state
.
opCemetery
=
{
inner
:
[]
};
state
.
meExclusion
=
{
inner
:
[]
};
state
.
opExclusion
=
{
inner
:
[]
};
state
.
meHands
=
{
inner
:
[]
};
state
.
opHands
=
{
inner
:
[]
};
for
(
const
reload
of
action
.
payload
.
actions
)
{
const
player
=
reload
.
player
;
// DECK
const
deck
=
judgeSelf
(
player
,
state
)
?
state
.
meDeck
:
state
.
opDeck
;
reloadFieldMeta
(
deck
,
reload
.
zone_actions
.
filter
((
item
)
=>
item
.
zone
==
ygopro
.
CardZone
.
DECK
),
player
);
// EXTRA_DECK
const
extraDeck
=
judgeSelf
(
player
,
state
)
?
state
.
meExtraDeck
:
state
.
opExtraDeck
;
reloadFieldMeta
(
extraDeck
,
reload
.
zone_actions
.
filter
((
item
)
=>
item
.
zone
==
ygopro
.
CardZone
.
EXTRA
),
player
);
// MZONE
const
monster
=
judgeSelf
(
player
,
state
)
?
state
.
meMonsters
:
state
.
opMonsters
;
reloadFieldMeta
(
monster
,
reload
.
zone_actions
.
filter
((
item
)
=>
item
.
zone
==
ygopro
.
CardZone
.
MZONE
),
player
);
// SZONE
const
magics
=
judgeSelf
(
player
,
state
)
?
state
.
meMagics
:
state
.
opMagics
;
reloadFieldMeta
(
magics
,
reload
.
zone_actions
.
filter
((
item
)
=>
item
.
zone
==
ygopro
.
CardZone
.
SZONE
),
player
);
// GRAVE
const
cemetery
=
judgeSelf
(
player
,
state
)
?
state
.
meCemetery
:
state
.
opCemetery
;
reloadFieldMeta
(
cemetery
,
reload
.
zone_actions
.
filter
((
item
)
=>
item
.
zone
==
ygopro
.
CardZone
.
GRAVE
),
player
);
// REMOVED
const
exclusion
=
judgeSelf
(
player
,
state
)
?
state
.
meExclusion
:
state
.
opExclusion
;
reloadFieldMeta
(
exclusion
,
reload
.
zone_actions
.
filter
(
(
item
)
=>
item
.
zone
==
ygopro
.
CardZone
.
REMOVED
),
player
);
// HANDS
const
hands
=
judgeSelf
(
player
,
state
)
?
state
.
meHands
:
state
.
opHands
;
reloadFieldMeta
(
hands
,
reload
.
zone_actions
.
filter
((
item
)
=>
item
.
zone
==
ygopro
.
CardZone
.
HAND
),
player
);
}
};
src/reducers/duel/generic.ts
View file @
0eb554ec
...
@@ -8,6 +8,7 @@ import { CardMeta } from "../../api/cards";
...
@@ -8,6 +8,7 @@ import { CardMeta } from "../../api/cards";
import
{
ygopro
}
from
"
../../api/ocgcore/idl/ocgcore
"
;
import
{
ygopro
}
from
"
../../api/ocgcore/idl/ocgcore
"
;
import
{
fetchCard
}
from
"
../../api/cards
"
;
import
{
fetchCard
}
from
"
../../api/cards
"
;
import
{
DuelState
}
from
"
./mod
"
;
import
{
DuelState
}
from
"
./mod
"
;
import
ReloadFieldAction
=
ygopro
.
StocGameMessage
.
MsgReloadField
.
ZoneAction
;
type
UpdateDataAction
=
ReturnType
<
type
UpdateDataAction
=
ReturnType
<
typeof
ygopro
.
StocGameMessage
.
MsgUpdateData
.
Action
.
prototype
.
toObject
typeof
ygopro
.
StocGameMessage
.
MsgUpdateData
.
Action
.
prototype
.
toObject
>
;
>
;
...
@@ -33,6 +34,7 @@ export interface CardState {
...
@@ -33,6 +34,7 @@ export interface CardState {
sequence
:
number
;
sequence
:
number
;
}
>
;
// 选择位置状态下的互动信息
}
>
;
// 选择位置状态下的互动信息
overlay_materials
?:
CardMeta
[];
// 超量素材
overlay_materials
?:
CardMeta
[];
// 超量素材
reload
?:
boolean
;
// 这个字段会在收到MSG_RELOAD_FIELD的时候设置成true,在收到MSG_UPDATE_DATE的时候设置成false
}
}
export
enum
InteractType
{
export
enum
InteractType
{
...
@@ -294,9 +296,11 @@ export function updateCardData<T extends DuelFieldState>(
...
@@ -294,9 +296,11 @@ export function updateCardData<T extends DuelFieldState>(
for
(
const
payload
of
actions
)
{
for
(
const
payload
of
actions
)
{
const
sequence
=
payload
.
location
?.
sequence
;
const
sequence
=
payload
.
location
?.
sequence
;
if
(
typeof
sequence
!==
"
undefined
"
)
{
if
(
typeof
sequence
!==
"
undefined
"
)
{
console
.
log
(
payload
.
type_
);
const
target
=
state
?.
inner
.
find
((
_
,
idx
)
=>
idx
==
sequence
);
const
target
=
state
?.
inner
.
find
((
_
,
idx
)
=>
idx
==
sequence
);
if
(
target
&&
target
.
occupant
)
{
if
(
target
&&
(
target
.
occupant
||
target
.
reload
))
{
if
(
target
.
occupant
===
undefined
)
{
target
.
occupant
=
{
id
:
payload
.
code
!
,
data
:
{},
text
:
{}
};
}
const
occupant
=
target
.
occupant
;
const
occupant
=
target
.
occupant
;
// 目前只更新以下字段
// 目前只更新以下字段
if
(
payload
.
code
!==
undefined
&&
payload
.
code
>=
0
)
{
if
(
payload
.
code
!==
undefined
&&
payload
.
code
>=
0
)
{
...
@@ -325,6 +329,31 @@ export function updateCardData<T extends DuelFieldState>(
...
@@ -325,6 +329,31 @@ export function updateCardData<T extends DuelFieldState>(
occupant
.
data
.
def
=
payload
.
defense
;
occupant
.
data
.
def
=
payload
.
defense
;
}
}
}
}
if
(
target
?.
reload
)
{
target
.
reload
=
false
;
}
}
}
}
}
}
}
export
function
reloadFieldMeta
<
T
extends
DuelFieldState
>
(
state
:
T
,
actions
:
ReloadFieldAction
[],
controler
:
number
)
{
actions
.
sort
((
a
,
b
)
=>
a
.
sequence
-
b
.
sequence
);
const
cards
=
actions
.
map
((
action
)
=>
{
// FIXME: OVERLAY
return
{
location
:
{
controler
,
location
:
action
.
zone
,
position
:
action
.
position
,
},
idleInteractivities
:
[],
reload
:
true
,
};
});
state
.
inner
=
cards
;
}
src/reducers/duel/mod.ts
View file @
0eb554ec
...
@@ -96,6 +96,7 @@ import {
...
@@ -96,6 +96,7 @@ import {
clearAllIdleInteractivitiesImpl
,
clearAllIdleInteractivitiesImpl
,
clearAllPlaceInteractivitiesImpl
,
clearAllPlaceInteractivitiesImpl
,
updateFieldDataImpl
,
updateFieldDataImpl
,
reloadFieldImpl
,
}
from
"
./commonSlice
"
;
}
from
"
./commonSlice
"
;
import
{
import
{
ExtraDeckState
,
ExtraDeckState
,
...
@@ -258,6 +259,7 @@ const duelSlice = createSlice({
...
@@ -258,6 +259,7 @@ const duelSlice = createSlice({
clearAllIdleInteractivities
:
clearAllIdleInteractivitiesImpl
,
clearAllIdleInteractivities
:
clearAllIdleInteractivitiesImpl
,
clearAllPlaceInteractivities
:
clearAllPlaceInteractivitiesImpl
,
clearAllPlaceInteractivities
:
clearAllPlaceInteractivitiesImpl
,
updateFieldData
:
updateFieldDataImpl
,
updateFieldData
:
updateFieldDataImpl
,
reloadField
:
reloadFieldImpl
,
// 对局结果`Reducer`
// 对局结果`Reducer`
setResult
:
(
state
,
action
:
PayloadAction
<
MsgWin
.
ActionType
>
)
=>
{
setResult
:
(
state
,
action
:
PayloadAction
<
MsgWin
.
ActionType
>
)
=>
{
...
@@ -355,6 +357,7 @@ export const {
...
@@ -355,6 +357,7 @@ export const {
setWaiting
,
setWaiting
,
setUnimplemented
,
setUnimplemented
,
updateFieldData
,
updateFieldData
,
reloadField
,
}
=
duelSlice
.
actions
;
}
=
duelSlice
.
actions
;
export
const
selectDuelHsStart
=
(
state
:
RootState
)
=>
{
export
const
selectDuelHsStart
=
(
state
:
RootState
)
=>
{
return
state
.
duel
.
meInitInfo
!=
null
;
return
state
.
duel
.
meInitInfo
!=
null
;
...
...
src/service/duel/gameMsg.ts
View file @
0eb554ec
...
@@ -23,6 +23,7 @@ import onMsgWin from "./win";
...
@@ -23,6 +23,7 @@ import onMsgWin from "./win";
import
onMsgWait
from
"
./wait
"
;
import
onMsgWait
from
"
./wait
"
;
import
onUnimplemented
from
"
./unimplemented
"
;
import
onUnimplemented
from
"
./unimplemented
"
;
import
onMsgUpdateData
from
"
./updateData
"
;
import
onMsgUpdateData
from
"
./updateData
"
;
import
onMsgReloadField
from
"
./reloadField
"
;
import
{
setWaiting
}
from
"
../../reducers/duel/mod
"
;
import
{
setWaiting
}
from
"
../../reducers/duel/mod
"
;
const
ActiveList
=
[
const
ActiveList
=
[
...
@@ -157,6 +158,11 @@ export default function handleGameMsg(pb: ygopro.YgoStocMsg) {
...
@@ -157,6 +158,11 @@ export default function handleGameMsg(pb: ygopro.YgoStocMsg) {
break
;
break
;
}
}
case
"
reload_field
"
:
{
onMsgReloadField
(
msg
.
reload_field
,
dispatch
);
break
;
}
case
"
unimplemented
"
:
{
case
"
unimplemented
"
:
{
onUnimplemented
(
msg
.
unimplemented
,
dispatch
);
onUnimplemented
(
msg
.
unimplemented
,
dispatch
);
...
...
src/service/duel/reloadField.ts
0 → 100644
View file @
0eb554ec
import
{
ygopro
}
from
"
../../api/ocgcore/idl/ocgcore
"
;
import
{
reloadField
}
from
"
../../reducers/duel/mod
"
;
import
{
AppDispatch
}
from
"
../../store
"
;
import
MsgReloadField
=
ygopro
.
StocGameMessage
.
MsgReloadField
;
export
default
(
field
:
MsgReloadField
,
dispatch
:
AppDispatch
)
=>
{
dispatch
(
reloadField
(
field
));
};
src/store.ts
View file @
0eb554ec
...
@@ -19,7 +19,7 @@ export const store = configureStore({
...
@@ -19,7 +19,7 @@ export const store = configureStore({
middleware
:
(
getDefaultMiddleware
)
=>
middleware
:
(
getDefaultMiddleware
)
=>
getDefaultMiddleware
({
getDefaultMiddleware
({
serializableCheck
:
{
serializableCheck
:
{
ignoredActions
:
[
"
duel/updateHp
"
],
ignoredActions
:
[
"
duel/updateHp
"
,
"
duel/reloadField
"
],
},
},
}),
}),
});
});
...
...
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