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
b4e4a4e8
Commit
b4e4a4e8
authored
Jun 22, 2023
by
Chunchi Che
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'dev/async_rebase' into 'dev/async'
Dev/async rebase See merge request
mycard/Neos!234
parents
c78b6b62
d0b7a3c9
Changes
22
Show whitespace changes
Inline
Side-by-side
Showing
22 changed files
with
1147 additions
and
48 deletions
+1147
-48
neos.config.json
neos.config.json
+1
-1
src/api/ocgcore/idl/ocgcore.ts
src/api/ocgcore/idl/ocgcore.ts
+762
-5
src/api/ocgcore/ocgAdapter/protoDecl.ts
src/api/ocgcore/ocgAdapter/protoDecl.ts
+3
-0
src/api/ocgcore/ocgAdapter/stoc/stocGameMsg/fieldDisabled.ts
src/api/ocgcore/ocgAdapter/stoc/stocGameMsg/fieldDisabled.ts
+73
-0
src/api/ocgcore/ocgAdapter/stoc/stocGameMsg/mod.ts
src/api/ocgcore/ocgAdapter/stoc/stocGameMsg/mod.ts
+13
-0
src/api/ocgcore/ocgAdapter/stoc/stocGameMsg/penetrate.json
src/api/ocgcore/ocgAdapter/stoc/stocGameMsg/penetrate.json
+9
-0
src/api/ocgcore/ocgAdapter/stoc/stocGameMsg/penetrate.ts
src/api/ocgcore/ocgAdapter/stoc/stocGameMsg/penetrate.ts
+1
-0
src/api/ocgcore/ocgAdapter/stoc/stocGameMsg/shuffleSetCard.ts
...api/ocgcore/ocgAdapter/stoc/stocGameMsg/shuffleSetCard.ts
+32
-0
src/service/duel/becomeTarget.ts
src/service/duel/becomeTarget.ts
+1
-1
src/service/duel/chainEnd.ts
src/service/duel/chainEnd.ts
+8
-0
src/service/duel/fieldDisabled.ts
src/service/duel/fieldDisabled.ts
+19
-0
src/service/duel/gameMsg.ts
src/service/duel/gameMsg.ts
+19
-1
src/service/duel/selectPlace.ts
src/service/duel/selectPlace.ts
+8
-5
src/service/duel/shuffleDeck.ts
src/service/duel/shuffleDeck.ts
+11
-0
src/service/duel/shuffleSetCard.ts
src/service/duel/shuffleSetCard.ts
+50
-0
src/service/duel/start.ts
src/service/duel/start.ts
+1
-0
src/service/duel/updateData.ts
src/service/duel/updateData.ts
+16
-11
src/stores/cardStore.ts
src/stores/cardStore.ts
+1
-2
src/stores/placeStore.ts
src/stores/placeStore.ts
+38
-9
src/ui/Duel/PlayMat/Bg/index.tsx
src/ui/Duel/PlayMat/Bg/index.tsx
+41
-11
src/ui/Duel/PlayMat/Card/index.scss
src/ui/Duel/PlayMat/Card/index.scss
+39
-2
src/ui/Duel/PlayMat/Card/index.tsx
src/ui/Duel/PlayMat/Card/index.tsx
+1
-0
No files found.
neos.config.json
View file @
b4e4a4e8
...
...
@@ -2,7 +2,7 @@
"version"
:
4960
,
"servers"
:[
{
"ip"
:
"koishi
-r
.momobako.com"
,
"ip"
:
"koishi.momobako.com"
,
"port"
:
"7211"
}
],
...
...
src/api/ocgcore/idl/ocgcore.ts
View file @
b4e4a4e8
/**
* Generated by the protoc-gen-ts. DO NOT EDIT!
* compiler version: 3.21.
5
* compiler version: 3.21.
9
* source: idl/ocgcore.proto
* git: https://github.com/thesayyn/protoc-gen-ts */
import * as pb_1 from "google-protobuf";
...
...
@@ -4511,7 +4511,7 @@ export namespace ygopro {
}
}
export class StocGameMessage extends pb_1.Message {
#
one_of_decls
:
number
[][]
=
[[
1
,
2
,
3
,
4
,
5
,
6
,
7
,
8
,
9
,
10
,
11
,
12
,
13
,
14
,
15
,
16
,
17
,
18
,
19
,
20
,
21
,
22
,
23
,
24
,
25
,
26
,
27
,
28
,
29
,
30
,
31
,
32
,
33
,
34
,
35
,
36
,
37
,
38
,
39
,
40
,
41
,
42
,
43
,
44
,
45
,
46
,
47
]];
#one_of_decls: number[][] = [[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47
, 48, 49, 50
]];
constructor(data?: any[] | ({} & (({
start?: StocGameMessage.MsgStart;
draw?: never;
...
...
@@ -4560,6 +4560,9 @@ export namespace ygopro {
confirm_cards?: never;
become_target?: never;
toss?: never;
shuffle_set_card?: never;
field_disabled?: never;
shuffle_deck?: never;
} | {
start?: never;
draw?: StocGameMessage.MsgDraw;
...
...
@@ -4608,6 +4611,9 @@ export namespace ygopro {
confirm_cards?: never;
become_target?: never;
toss?: never;
shuffle_set_card?: never;
field_disabled?: never;
shuffle_deck?: never;
} | {
start?: never;
draw?: never;
...
...
@@ -4656,6 +4662,9 @@ export namespace ygopro {
confirm_cards?: never;
become_target?: never;
toss?: never;
shuffle_set_card?: never;
field_disabled?: never;
shuffle_deck?: never;
} | {
start?: never;
draw?: never;
...
...
@@ -4704,6 +4713,9 @@ export namespace ygopro {
confirm_cards?: never;
become_target?: never;
toss?: never;
shuffle_set_card?: never;
field_disabled?: never;
shuffle_deck?: never;
} | {
start?: never;
draw?: never;
...
...
@@ -4752,6 +4764,9 @@ export namespace ygopro {
confirm_cards?: never;
become_target?: never;
toss?: never;
shuffle_set_card?: never;
field_disabled?: never;
shuffle_deck?: never;
} | {
start?: never;
draw?: never;
...
...
@@ -4800,6 +4815,9 @@ export namespace ygopro {
confirm_cards?: never;
become_target?: never;
toss?: never;
shuffle_set_card?: never;
field_disabled?: never;
shuffle_deck?: never;
} | {
start?: never;
draw?: never;
...
...
@@ -4848,6 +4866,9 @@ export namespace ygopro {
confirm_cards?: never;
become_target?: never;
toss?: never;
shuffle_set_card?: never;
field_disabled?: never;
shuffle_deck?: never;
} | {
start?: never;
draw?: never;
...
...
@@ -4896,6 +4917,9 @@ export namespace ygopro {
confirm_cards?: never;
become_target?: never;
toss?: never;
shuffle_set_card?: never;
field_disabled?: never;
shuffle_deck?: never;
} | {
start?: never;
draw?: never;
...
...
@@ -4944,6 +4968,9 @@ export namespace ygopro {
confirm_cards?: never;
become_target?: never;
toss?: never;
shuffle_set_card?: never;
field_disabled?: never;
shuffle_deck?: never;
} | {
start?: never;
draw?: never;
...
...
@@ -4992,6 +5019,9 @@ export namespace ygopro {
confirm_cards?: never;
become_target?: never;
toss?: never;
shuffle_set_card?: never;
field_disabled?: never;
shuffle_deck?: never;
} | {
start?: never;
draw?: never;
...
...
@@ -5040,6 +5070,9 @@ export namespace ygopro {
confirm_cards?: never;
become_target?: never;
toss?: never;
shuffle_set_card?: never;
field_disabled?: never;
shuffle_deck?: never;
} | {
start?: never;
draw?: never;
...
...
@@ -5088,6 +5121,9 @@ export namespace ygopro {
confirm_cards?: never;
become_target?: never;
toss?: never;
shuffle_set_card?: never;
field_disabled?: never;
shuffle_deck?: never;
} | {
start?: never;
draw?: never;
...
...
@@ -5136,6 +5172,9 @@ export namespace ygopro {
confirm_cards?: never;
become_target?: never;
toss?: never;
shuffle_set_card?: never;
field_disabled?: never;
shuffle_deck?: never;
} | {
start?: never;
draw?: never;
...
...
@@ -5184,6 +5223,9 @@ export namespace ygopro {
confirm_cards?: never;
become_target?: never;
toss?: never;
shuffle_set_card?: never;
field_disabled?: never;
shuffle_deck?: never;
} | {
start?: never;
draw?: never;
...
...
@@ -5232,6 +5274,9 @@ export namespace ygopro {
confirm_cards?: never;
become_target?: never;
toss?: never;
shuffle_set_card?: never;
field_disabled?: never;
shuffle_deck?: never;
} | {
start?: never;
draw?: never;
...
...
@@ -5280,6 +5325,9 @@ export namespace ygopro {
confirm_cards?: never;
become_target?: never;
toss?: never;
shuffle_set_card?: never;
field_disabled?: never;
shuffle_deck?: never;
} | {
start?: never;
draw?: never;
...
...
@@ -5328,6 +5376,9 @@ export namespace ygopro {
confirm_cards?: never;
become_target?: never;
toss?: never;
shuffle_set_card?: never;
field_disabled?: never;
shuffle_deck?: never;
} | {
start?: never;
draw?: never;
...
...
@@ -5376,6 +5427,9 @@ export namespace ygopro {
confirm_cards?: never;
become_target?: never;
toss?: never;
shuffle_set_card?: never;
field_disabled?: never;
shuffle_deck?: never;
} | {
start?: never;
draw?: never;
...
...
@@ -5424,6 +5478,9 @@ export namespace ygopro {
confirm_cards?: never;
become_target?: never;
toss?: never;
shuffle_set_card?: never;
field_disabled?: never;
shuffle_deck?: never;
} | {
start?: never;
draw?: never;
...
...
@@ -5472,6 +5529,9 @@ export namespace ygopro {
confirm_cards?: never;
become_target?: never;
toss?: never;
shuffle_set_card?: never;
field_disabled?: never;
shuffle_deck?: never;
} | {
start?: never;
draw?: never;
...
...
@@ -5520,6 +5580,9 @@ export namespace ygopro {
confirm_cards?: never;
become_target?: never;
toss?: never;
shuffle_set_card?: never;
field_disabled?: never;
shuffle_deck?: never;
} | {
start?: never;
draw?: never;
...
...
@@ -5568,6 +5631,9 @@ export namespace ygopro {
confirm_cards?: never;
become_target?: never;
toss?: never;
shuffle_set_card?: never;
field_disabled?: never;
shuffle_deck?: never;
} | {
start?: never;
draw?: never;
...
...
@@ -5616,6 +5682,9 @@ export namespace ygopro {
confirm_cards?: never;
become_target?: never;
toss?: never;
shuffle_set_card?: never;
field_disabled?: never;
shuffle_deck?: never;
} | {
start?: never;
draw?: never;
...
...
@@ -5664,6 +5733,9 @@ export namespace ygopro {
confirm_cards?: never;
become_target?: never;
toss?: never;
shuffle_set_card?: never;
field_disabled?: never;
shuffle_deck?: never;
} | {
start?: never;
draw?: never;
...
...
@@ -5712,6 +5784,9 @@ export namespace ygopro {
confirm_cards?: never;
become_target?: never;
toss?: never;
shuffle_set_card?: never;
field_disabled?: never;
shuffle_deck?: never;
} | {
start?: never;
draw?: never;
...
...
@@ -5760,6 +5835,9 @@ export namespace ygopro {
confirm_cards?: never;
become_target?: never;
toss?: never;
shuffle_set_card?: never;
field_disabled?: never;
shuffle_deck?: never;
} | {
start?: never;
draw?: never;
...
...
@@ -5808,6 +5886,9 @@ export namespace ygopro {
confirm_cards?: never;
become_target?: never;
toss?: never;
shuffle_set_card?: never;
field_disabled?: never;
shuffle_deck?: never;
} | {
start?: never;
draw?: never;
...
...
@@ -5856,6 +5937,9 @@ export namespace ygopro {
confirm_cards?: never;
become_target?: never;
toss?: never;
shuffle_set_card?: never;
field_disabled?: never;
shuffle_deck?: never;
} | {
start?: never;
draw?: never;
...
...
@@ -5904,6 +5988,9 @@ export namespace ygopro {
confirm_cards?: never;
become_target?: never;
toss?: never;
shuffle_set_card?: never;
field_disabled?: never;
shuffle_deck?: never;
} | {
start?: never;
draw?: never;
...
...
@@ -5952,6 +6039,9 @@ export namespace ygopro {
confirm_cards?: never;
become_target?: never;
toss?: never;
shuffle_set_card?: never;
field_disabled?: never;
shuffle_deck?: never;
} | {
start?: never;
draw?: never;
...
...
@@ -6000,6 +6090,9 @@ export namespace ygopro {
confirm_cards?: never;
become_target?: never;
toss?: never;
shuffle_set_card?: never;
field_disabled?: never;
shuffle_deck?: never;
} | {
start?: never;
draw?: never;
...
...
@@ -6048,6 +6141,9 @@ export namespace ygopro {
confirm_cards?: never;
become_target?: never;
toss?: never;
shuffle_set_card?: never;
field_disabled?: never;
shuffle_deck?: never;
} | {
start?: never;
draw?: never;
...
...
@@ -6096,6 +6192,9 @@ export namespace ygopro {
confirm_cards?: never;
become_target?: never;
toss?: never;
shuffle_set_card?: never;
field_disabled?: never;
shuffle_deck?: never;
} | {
start?: never;
draw?: never;
...
...
@@ -6144,6 +6243,9 @@ export namespace ygopro {
confirm_cards?: never;
become_target?: never;
toss?: never;
shuffle_set_card?: never;
field_disabled?: never;
shuffle_deck?: never;
} | {
start?: never;
draw?: never;
...
...
@@ -6192,6 +6294,9 @@ export namespace ygopro {
confirm_cards?: never;
become_target?: never;
toss?: never;
shuffle_set_card?: never;
field_disabled?: never;
shuffle_deck?: never;
} | {
start?: never;
draw?: never;
...
...
@@ -6240,6 +6345,9 @@ export namespace ygopro {
confirm_cards?: never;
become_target?: never;
toss?: never;
shuffle_set_card?: never;
field_disabled?: never;
shuffle_deck?: never;
} | {
start?: never;
draw?: never;
...
...
@@ -6288,6 +6396,9 @@ export namespace ygopro {
confirm_cards?: never;
become_target?: never;
toss?: never;
shuffle_set_card?: never;
field_disabled?: never;
shuffle_deck?: never;
} | {
start?: never;
draw?: never;
...
...
@@ -6336,6 +6447,9 @@ export namespace ygopro {
confirm_cards?: never;
become_target?: never;
toss?: never;
shuffle_set_card?: never;
field_disabled?: never;
shuffle_deck?: never;
} | {
start?: never;
draw?: never;
...
...
@@ -6384,6 +6498,9 @@ export namespace ygopro {
confirm_cards?: never;
become_target?: never;
toss?: never;
shuffle_set_card?: never;
field_disabled?: never;
shuffle_deck?: never;
} | {
start?: never;
draw?: never;
...
...
@@ -6432,6 +6549,9 @@ export namespace ygopro {
confirm_cards?: never;
become_target?: never;
toss?: never;
shuffle_set_card?: never;
field_disabled?: never;
shuffle_deck?: never;
} | {
start?: never;
draw?: never;
...
...
@@ -6480,6 +6600,9 @@ export namespace ygopro {
confirm_cards?: never;
become_target?: never;
toss?: never;
shuffle_set_card?: never;
field_disabled?: never;
shuffle_deck?: never;
} | {
start?: never;
draw?: never;
...
...
@@ -6528,6 +6651,9 @@ export namespace ygopro {
confirm_cards?: never;
become_target?: never;
toss?: never;
shuffle_set_card?: never;
field_disabled?: never;
shuffle_deck?: never;
} | {
start?: never;
draw?: never;
...
...
@@ -6576,6 +6702,9 @@ export namespace ygopro {
confirm_cards?: never;
become_target?: never;
toss?: never;
shuffle_set_card?: never;
field_disabled?: never;
shuffle_deck?: never;
} | {
start?: never;
draw?: never;
...
...
@@ -6624,6 +6753,9 @@ export namespace ygopro {
confirm_cards?: never;
become_target?: never;
toss?: never;
shuffle_set_card?: never;
field_disabled?: never;
shuffle_deck?: never;
} | {
start?: never;
draw?: never;
...
...
@@ -6672,6 +6804,9 @@ export namespace ygopro {
confirm_cards?: StocGameMessage.MsgConfirmCards;
become_target?: never;
toss?: never;
shuffle_set_card?: never;
field_disabled?: never;
shuffle_deck?: never;
} | {
start?: never;
draw?: never;
...
...
@@ -6720,6 +6855,9 @@ export namespace ygopro {
confirm_cards?: never;
become_target?: StocGameMessage.MsgBecomeTarget;
toss?: never;
shuffle_set_card?: never;
field_disabled?: never;
shuffle_deck?: never;
} | {
start?: never;
draw?: never;
...
...
@@ -6768,6 +6906,162 @@ export namespace ygopro {
confirm_cards?: never;
become_target?: never;
toss?: StocGameMessage.MsgToss;
shuffle_set_card?: never;
field_disabled?: never;
shuffle_deck?: 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?: never;
select_sum?: never;
select_tribute?: never;
update_counter?: never;
select_counter?: never;
sort_card?: never;
set?: never;
swap?: never;
summoning?: never;
summoned?: never;
flip_summoning?: never;
flip_summoned?: never;
sp_summoning?: never;
sp_summoned?: never;
chaining?: never;
attack?: never;
attack_disable?: never;
chain_solved?: never;
chain_end?: never;
announce?: never;
lp_update?: never;
confirm_cards?: never;
become_target?: never;
toss?: never;
shuffle_set_card?: StocGameMessage.MsgShuffleSetCard;
field_disabled?: never;
shuffle_deck?: 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?: never;
select_sum?: never;
select_tribute?: never;
update_counter?: never;
select_counter?: never;
sort_card?: never;
set?: never;
swap?: never;
summoning?: never;
summoned?: never;
flip_summoning?: never;
flip_summoned?: never;
sp_summoning?: never;
sp_summoned?: never;
chaining?: never;
attack?: never;
attack_disable?: never;
chain_solved?: never;
chain_end?: never;
announce?: never;
lp_update?: never;
confirm_cards?: never;
become_target?: never;
toss?: never;
shuffle_set_card?: never;
field_disabled?: StocGameMessage.MsgFieldDisabled;
shuffle_deck?: 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?: never;
select_sum?: never;
select_tribute?: never;
update_counter?: never;
select_counter?: never;
sort_card?: never;
set?: never;
swap?: never;
summoning?: never;
summoned?: never;
flip_summoning?: never;
flip_summoned?: never;
sp_summoning?: never;
sp_summoned?: never;
chaining?: never;
attack?: never;
attack_disable?: never;
chain_solved?: never;
chain_end?: never;
announce?: never;
lp_update?: never;
confirm_cards?: never;
become_target?: never;
toss?: never;
shuffle_set_card?: never;
field_disabled?: never;
shuffle_deck?: StocGameMessage.MsgShuffleDeck;
})))) {
super();
pb_1.Message.initialize(this, Array.isArray(data) ? data : [], 0, -1, [], this.#one_of_decls);
...
...
@@ -6913,6 +7207,15 @@ export namespace ygopro {
if ("toss" in data && data.toss != undefined) {
this.toss = data.toss;
}
if ("shuffle_set_card" in data && data.shuffle_set_card != undefined) {
this.shuffle_set_card = data.shuffle_set_card;
}
if ("field_disabled" in data && data.field_disabled != undefined) {
this.field_disabled = data.field_disabled;
}
if ("shuffle_deck" in data && data.shuffle_deck != undefined) {
this.shuffle_deck = data.shuffle_deck;
}
}
}
get start() {
...
...
@@ -7338,9 +7641,36 @@ export namespace ygopro {
get has_toss() {
return pb_1.Message.getField(this, 47) != null;
}
get shuffle_set_card() {
return pb_1.Message.getWrapperField(this, StocGameMessage.MsgShuffleSetCard, 48) as StocGameMessage.MsgShuffleSetCard;
}
set shuffle_set_card(value: StocGameMessage.MsgShuffleSetCard) {
pb_1.Message.setOneofWrapperField(this, 48, this.#one_of_decls[0], value);
}
get has_shuffle_set_card() {
return pb_1.Message.getField(this, 48) != null;
}
get field_disabled() {
return pb_1.Message.getWrapperField(this, StocGameMessage.MsgFieldDisabled, 49) as StocGameMessage.MsgFieldDisabled;
}
set field_disabled(value: StocGameMessage.MsgFieldDisabled) {
pb_1.Message.setOneofWrapperField(this, 49, this.#one_of_decls[0], value);
}
get has_field_disabled() {
return pb_1.Message.getField(this, 49) != null;
}
get shuffle_deck() {
return pb_1.Message.getWrapperField(this, StocGameMessage.MsgShuffleDeck, 50) as StocGameMessage.MsgShuffleDeck;
}
set shuffle_deck(value: StocGameMessage.MsgShuffleDeck) {
pb_1.Message.setOneofWrapperField(this, 50, this.#one_of_decls[0], value);
}
get has_shuffle_deck() {
return pb_1.Message.getField(this, 50) != null;
}
get gameMsg() {
const cases: {
[
index
:
number
]:
"
none
"
|
"
start
"
|
"
draw
"
|
"
new_turn
"
|
"
new_phase
"
|
"
hint
"
|
"
select_idle_cmd
"
|
"
select_place
"
|
"
move
"
|
"
select_card
"
|
"
select_chain
"
|
"
select_effect_yn
"
|
"
select_position
"
|
"
select_option
"
|
"
shuffle_hand
"
|
"
select_battle_cmd
"
|
"
pos_change
"
|
"
select_unselect_card
"
|
"
select_yes_no
"
|
"
update_hp
"
|
"
win
"
|
"
wait
"
|
"
unimplemented
"
|
"
update_data
"
|
"
reload_field
"
|
"
select_sum
"
|
"
select_tribute
"
|
"
update_counter
"
|
"
select_counter
"
|
"
sort_card
"
|
"
set
"
|
"
swap
"
|
"
summoning
"
|
"
summoned
"
|
"
flip_summoning
"
|
"
flip_summoned
"
|
"
sp_summoning
"
|
"
sp_summoned
"
|
"
chaining
"
|
"
attack
"
|
"
attack_disable
"
|
"
chain_solved
"
|
"
chain_end
"
|
"
announce
"
|
"
lp_update
"
|
"
confirm_cards
"
|
"
become_target
"
|
"
toss
"
;
[index: number]: "none" | "start" | "draw" | "new_turn" | "new_phase" | "hint" | "select_idle_cmd" | "select_place" | "move" | "select_card" | "select_chain" | "select_effect_yn" | "select_position" | "select_option" | "shuffle_hand" | "select_battle_cmd" | "pos_change" | "select_unselect_card" | "select_yes_no" | "update_hp" | "win" | "wait" | "unimplemented" | "update_data" | "reload_field" | "select_sum" | "select_tribute" | "update_counter" | "select_counter" | "sort_card" | "set" | "swap" | "summoning" | "summoned" | "flip_summoning" | "flip_summoned" | "sp_summoning" | "sp_summoned" | "chaining" | "attack" | "attack_disable" | "chain_solved" | "chain_end" | "announce" | "lp_update" | "confirm_cards" | "become_target" | "toss"
| "shuffle_set_card" | "field_disabled" | "shuffle_deck"
;
} = {
0: "none",
1: "start",
...
...
@@ -7389,9 +7719,12 @@ export namespace ygopro {
44: "lp_update",
45: "confirm_cards",
46: "become_target",
47
:
"
toss
"
47: "toss",
48: "shuffle_set_card",
49: "field_disabled",
50: "shuffle_deck"
};
return
cases
[
pb_1
.
Message
.
computeOneofCase
(
this
,
[
1
,
2
,
3
,
4
,
5
,
6
,
7
,
8
,
9
,
10
,
11
,
12
,
13
,
14
,
15
,
16
,
17
,
18
,
19
,
20
,
21
,
22
,
23
,
24
,
25
,
26
,
27
,
28
,
29
,
30
,
31
,
32
,
33
,
34
,
35
,
36
,
37
,
38
,
39
,
40
,
41
,
42
,
43
,
44
,
45
,
46
,
47
])];
return cases[pb_1.Message.computeOneofCase(this, [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47
, 48, 49, 50
])];
}
static fromObject(data: {
start?: ReturnType<typeof StocGameMessage.MsgStart.prototype.toObject>;
...
...
@@ -7441,6 +7774,9 @@ export namespace ygopro {
confirm_cards?: ReturnType<typeof StocGameMessage.MsgConfirmCards.prototype.toObject>;
become_target?: ReturnType<typeof StocGameMessage.MsgBecomeTarget.prototype.toObject>;
toss?: ReturnType<typeof StocGameMessage.MsgToss.prototype.toObject>;
shuffle_set_card?: ReturnType<typeof StocGameMessage.MsgShuffleSetCard.prototype.toObject>;
field_disabled?: ReturnType<typeof StocGameMessage.MsgFieldDisabled.prototype.toObject>;
shuffle_deck?: ReturnType<typeof StocGameMessage.MsgShuffleDeck.prototype.toObject>;
}): StocGameMessage {
const message = new StocGameMessage({});
if (data.start != null) {
...
...
@@ -7584,6 +7920,15 @@ export namespace ygopro {
if (data.toss != null) {
message.toss = StocGameMessage.MsgToss.fromObject(data.toss);
}
if (data.shuffle_set_card != null) {
message.shuffle_set_card = StocGameMessage.MsgShuffleSetCard.fromObject(data.shuffle_set_card);
}
if (data.field_disabled != null) {
message.field_disabled = StocGameMessage.MsgFieldDisabled.fromObject(data.field_disabled);
}
if (data.shuffle_deck != null) {
message.shuffle_deck = StocGameMessage.MsgShuffleDeck.fromObject(data.shuffle_deck);
}
return message;
}
toObject() {
...
...
@@ -7635,6 +7980,9 @@ export namespace ygopro {
confirm_cards?: ReturnType<typeof StocGameMessage.MsgConfirmCards.prototype.toObject>;
become_target?: ReturnType<typeof StocGameMessage.MsgBecomeTarget.prototype.toObject>;
toss?: ReturnType<typeof StocGameMessage.MsgToss.prototype.toObject>;
shuffle_set_card?: ReturnType<typeof StocGameMessage.MsgShuffleSetCard.prototype.toObject>;
field_disabled?: ReturnType<typeof StocGameMessage.MsgFieldDisabled.prototype.toObject>;
shuffle_deck?: ReturnType<typeof StocGameMessage.MsgShuffleDeck.prototype.toObject>;
} = {};
if (this.start != null) {
data.start = this.start.toObject();
...
...
@@ -7777,6 +8125,15 @@ export namespace ygopro {
if (this.toss != null) {
data.toss = this.toss.toObject();
}
if (this.shuffle_set_card != null) {
data.shuffle_set_card = this.shuffle_set_card.toObject();
}
if (this.field_disabled != null) {
data.field_disabled = this.field_disabled.toObject();
}
if (this.shuffle_deck != null) {
data.shuffle_deck = this.shuffle_deck.toObject();
}
return data;
}
serialize(): Uint8Array;
...
...
@@ -7877,6 +8234,12 @@ export namespace ygopro {
writer.writeMessage(46, this.become_target, () => this.become_target.serialize(writer));
if (this.has_toss)
writer.writeMessage(47, this.toss, () => this.toss.serialize(writer));
if (this.has_shuffle_set_card)
writer.writeMessage(48, this.shuffle_set_card, () => this.shuffle_set_card.serialize(writer));
if (this.has_field_disabled)
writer.writeMessage(49, this.field_disabled, () => this.field_disabled.serialize(writer));
if (this.has_shuffle_deck)
writer.writeMessage(50, this.shuffle_deck, () => this.shuffle_deck.serialize(writer));
if (!w)
return writer.getResultBuffer();
}
...
...
@@ -8027,6 +8390,15 @@ export namespace ygopro {
case 47:
reader.readMessage(message.toss, () => message.toss = StocGameMessage.MsgToss.deserialize(reader));
break;
case 48:
reader.readMessage(message.shuffle_set_card, () => message.shuffle_set_card = StocGameMessage.MsgShuffleSetCard.deserialize(reader));
break;
case 49:
reader.readMessage(message.field_disabled, () => message.field_disabled = StocGameMessage.MsgFieldDisabled.deserialize(reader));
break;
case 50:
reader.readMessage(message.shuffle_deck, () => message.shuffle_deck = StocGameMessage.MsgShuffleDeck.deserialize(reader));
break;
default: reader.skipField();
}
}
...
...
@@ -10639,6 +11011,119 @@ export namespace ygopro {
return MsgShuffleHand.deserialize(bytes);
}
}
export class MsgShuffleSetCard extends pb_1.Message {
#one_of_decls: number[][] = [];
constructor(data?: any[] | {
zone?: CardZone;
from_locations?: CardLocation[];
overlay_locations?: CardLocation[];
}) {
super();
pb_1.Message.initialize(this, Array.isArray(data) ? data : [], 0, -1, [2, 3], this.#one_of_decls);
if (!Array.isArray(data) && typeof data == "object") {
if ("zone" in data && data.zone != undefined) {
this.zone = data.zone;
}
if ("from_locations" in data && data.from_locations != undefined) {
this.from_locations = data.from_locations;
}
if ("overlay_locations" in data && data.overlay_locations != undefined) {
this.overlay_locations = data.overlay_locations;
}
}
}
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 from_locations() {
return pb_1.Message.getRepeatedWrapperField(this, CardLocation, 2) as CardLocation[];
}
set from_locations(value: CardLocation[]) {
pb_1.Message.setRepeatedWrapperField(this, 2, value);
}
get overlay_locations() {
return pb_1.Message.getRepeatedWrapperField(this, CardLocation, 3) as CardLocation[];
}
set overlay_locations(value: CardLocation[]) {
pb_1.Message.setRepeatedWrapperField(this, 3, value);
}
static fromObject(data: {
zone?: CardZone;
from_locations?: ReturnType<typeof CardLocation.prototype.toObject>[];
overlay_locations?: ReturnType<typeof CardLocation.prototype.toObject>[];
}): MsgShuffleSetCard {
const message = new MsgShuffleSetCard({});
if (data.zone != null) {
message.zone = data.zone;
}
if (data.from_locations != null) {
message.from_locations = data.from_locations.map(item => CardLocation.fromObject(item));
}
if (data.overlay_locations != null) {
message.overlay_locations = data.overlay_locations.map(item => CardLocation.fromObject(item));
}
return message;
}
toObject() {
const data: {
zone?: CardZone;
from_locations?: ReturnType<typeof CardLocation.prototype.toObject>[];
overlay_locations?: ReturnType<typeof CardLocation.prototype.toObject>[];
} = {};
if (this.zone != null) {
data.zone = this.zone;
}
if (this.from_locations != null) {
data.from_locations = this.from_locations.map((item: CardLocation) => item.toObject());
}
if (this.overlay_locations != null) {
data.overlay_locations = this.overlay_locations.map((item: CardLocation) => 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.zone != CardZone.DECK)
writer.writeEnum(1, this.zone);
if (this.from_locations.length)
writer.writeRepeatedMessage(2, this.from_locations, (item: CardLocation) => item.serialize(writer));
if (this.overlay_locations.length)
writer.writeRepeatedMessage(3, this.overlay_locations, (item: CardLocation) => item.serialize(writer));
if (!w)
return writer.getResultBuffer();
}
static deserialize(bytes: Uint8Array | pb_1.BinaryReader): MsgShuffleSetCard {
const reader = bytes instanceof pb_1.BinaryReader ? bytes : new pb_1.BinaryReader(bytes), message = new MsgShuffleSetCard();
while (reader.nextField()) {
if (reader.isEndGroup())
break;
switch (reader.getFieldNumber()) {
case 1:
message.zone = reader.readEnum();
break;
case 2:
reader.readMessage(message.from_locations, () => pb_1.Message.addToRepeatedWrapperField(message, 2, CardLocation.deserialize(reader), CardLocation));
break;
case 3:
reader.readMessage(message.overlay_locations, () => pb_1.Message.addToRepeatedWrapperField(message, 3, CardLocation.deserialize(reader), CardLocation));
break;
default: reader.skipField();
}
}
return message;
}
serializeBinary(): Uint8Array {
return this.serialize();
}
static deserializeBinary(bytes: Uint8Array): MsgShuffleSetCard {
return MsgShuffleSetCard.deserialize(bytes);
}
}
export class MsgSelectBattleCmd extends pb_1.Message {
#one_of_decls: number[][] = [];
constructor(data?: any[] | {
...
...
@@ -15280,6 +15765,278 @@ export namespace ygopro {
DICE = 2
}
}
export class MsgFieldDisabled extends pb_1.Message {
#one_of_decls: number[][] = [];
constructor(data?: any[] | {
actions?: StocGameMessage.MsgFieldDisabled.Action[];
}) {
super();
pb_1.Message.initialize(this, Array.isArray(data) ? data : [], 0, -1, [1], this.#one_of_decls);
if (!Array.isArray(data) && typeof data == "object") {
if ("actions" in data && data.actions != undefined) {
this.actions = data.actions;
}
}
}
get actions() {
return pb_1.Message.getRepeatedWrapperField(this, StocGameMessage.MsgFieldDisabled.Action, 1) as StocGameMessage.MsgFieldDisabled.Action[];
}
set actions(value: StocGameMessage.MsgFieldDisabled.Action[]) {
pb_1.Message.setRepeatedWrapperField(this, 1, value);
}
static fromObject(data: {
actions?: ReturnType<typeof StocGameMessage.MsgFieldDisabled.Action.prototype.toObject>[];
}): MsgFieldDisabled {
const message = new MsgFieldDisabled({});
if (data.actions != null) {
message.actions = data.actions.map(item => StocGameMessage.MsgFieldDisabled.Action.fromObject(item));
}
return message;
}
toObject() {
const data: {
actions?: ReturnType<typeof StocGameMessage.MsgFieldDisabled.Action.prototype.toObject>[];
} = {};
if (this.actions != null) {
data.actions = this.actions.map((item: StocGameMessage.MsgFieldDisabled.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.actions.length)
writer.writeRepeatedMessage(1, this.actions, (item: StocGameMessage.MsgFieldDisabled.Action) => item.serialize(writer));
if (!w)
return writer.getResultBuffer();
}
static deserialize(bytes: Uint8Array | pb_1.BinaryReader): MsgFieldDisabled {
const reader = bytes instanceof pb_1.BinaryReader ? bytes : new pb_1.BinaryReader(bytes), message = new MsgFieldDisabled();
while (reader.nextField()) {
if (reader.isEndGroup())
break;
switch (reader.getFieldNumber()) {
case 1:
reader.readMessage(message.actions, () => pb_1.Message.addToRepeatedWrapperField(message, 1, StocGameMessage.MsgFieldDisabled.Action.deserialize(reader), StocGameMessage.MsgFieldDisabled.Action));
break;
default: reader.skipField();
}
}
return message;
}
serializeBinary(): Uint8Array {
return this.serialize();
}
static deserializeBinary(bytes: Uint8Array): MsgFieldDisabled {
return MsgFieldDisabled.deserialize(bytes);
}
}
export namespace MsgFieldDisabled {
export class Action extends pb_1.Message {
#one_of_decls: number[][] = [];
constructor(data?: any[] | {
controller?: number;
zone?: CardZone;
sequence?: number;
disabled?: boolean;
}) {
super();
pb_1.Message.initialize(this, Array.isArray(data) ? data : [], 0, -1, [], this.#one_of_decls);
if (!Array.isArray(data) && typeof data == "object") {
if ("controller" in data && data.controller != undefined) {
this.controller = data.controller;
}
if ("zone" in data && data.zone != undefined) {
this.zone = data.zone;
}
if ("sequence" in data && data.sequence != undefined) {
this.sequence = data.sequence;
}
if ("disabled" in data && data.disabled != undefined) {
this.disabled = data.disabled;
}
}
}
get controller() {
return pb_1.Message.getFieldWithDefault(this, 1, 0) as number;
}
set controller(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);
}
get disabled() {
return pb_1.Message.getFieldWithDefault(this, 4, false) as boolean;
}
set disabled(value: boolean) {
pb_1.Message.setField(this, 4, value);
}
static fromObject(data: {
controller?: number;
zone?: CardZone;
sequence?: number;
disabled?: boolean;
}): Action {
const message = new Action({});
if (data.controller != null) {
message.controller = data.controller;
}
if (data.zone != null) {
message.zone = data.zone;
}
if (data.sequence != null) {
message.sequence = data.sequence;
}
if (data.disabled != null) {
message.disabled = data.disabled;
}
return message;
}
toObject() {
const data: {
controller?: number;
zone?: CardZone;
sequence?: number;
disabled?: boolean;
} = {};
if (this.controller != null) {
data.controller = this.controller;
}
if (this.zone != null) {
data.zone = this.zone;
}
if (this.sequence != null) {
data.sequence = this.sequence;
}
if (this.disabled != null) {
data.disabled = this.disabled;
}
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.controller != 0)
writer.writeInt32(1, this.controller);
if (this.zone != CardZone.DECK)
writer.writeEnum(2, this.zone);
if (this.sequence != 0)
writer.writeInt32(3, this.sequence);
if (this.disabled != false)
writer.writeBool(4, this.disabled);
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.controller = reader.readInt32();
break;
case 2:
message.zone = reader.readEnum();
break;
case 3:
message.sequence = reader.readInt32();
break;
case 4:
message.disabled = reader.readBool();
break;
default: reader.skipField();
}
}
return message;
}
serializeBinary(): Uint8Array {
return this.serialize();
}
static deserializeBinary(bytes: Uint8Array): Action {
return Action.deserialize(bytes);
}
}
}
export class MsgShuffleDeck extends pb_1.Message {
#one_of_decls: number[][] = [];
constructor(data?: any[] | {
player?: 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 ("player" in data && data.player != undefined) {
this.player = data.player;
}
}
}
get player() {
return pb_1.Message.getFieldWithDefault(this, 1, 0) as number;
}
set player(value: number) {
pb_1.Message.setField(this, 1, value);
}
static fromObject(data: {
player?: number;
}): MsgShuffleDeck {
const message = new MsgShuffleDeck({});
if (data.player != null) {
message.player = data.player;
}
return message;
}
toObject() {
const data: {
player?: number;
} = {};
if (this.player != null) {
data.player = this.player;
}
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 (!w)
return writer.getResultBuffer();
}
static deserialize(bytes: Uint8Array | pb_1.BinaryReader): MsgShuffleDeck {
const reader = bytes instanceof pb_1.BinaryReader ? bytes : new pb_1.BinaryReader(bytes), message = new MsgShuffleDeck();
while (reader.nextField()) {
if (reader.isEndGroup())
break;
switch (reader.getFieldNumber()) {
case 1:
message.player = reader.readInt32();
break;
default: reader.skipField();
}
}
return message;
}
serializeBinary(): Uint8Array {
return this.serialize();
}
static deserializeBinary(bytes: Uint8Array): MsgShuffleDeck {
return MsgShuffleDeck.deserialize(bytes);
}
}
export class MsgReloadField extends pb_1.Message {
#one_of_decls: number[][] = [];
constructor(data?: any[] | {
...
...
src/api/ocgcore/ocgAdapter/protoDecl.ts
View file @
b4e4a4e8
...
...
@@ -35,6 +35,7 @@ export const MSG_NEW_PHASE = 41;
export
const
MSG_HINT
=
2
;
export
const
MSG_SELECT_IDLE_CMD
=
11
;
export
const
MSG_SELECT_PLACE
=
18
;
export
const
MSG_SELECT_DISFIELD
=
24
;
export
const
MSG_MOVE
=
50
;
export
const
MSG_SELECT_CARD
=
15
;
export
const
MSG_SELECT_TRIBUTE
=
20
;
...
...
@@ -63,3 +64,5 @@ export const MSG_ANNOUNCE_CARD = 142;
export
const
MSG_ANNOUNCE_NUMBER
=
143
;
export
const
MSG_TOSS_COIN
=
130
;
export
const
MSG_TOSS_DICE
=
131
;
export
const
MSG_SHUFFLE_SET_CARD
=
36
;
export
const
MSG_FIELD_DISABLED
=
56
;
src/api/ocgcore/ocgAdapter/stoc/stocGameMsg/fieldDisabled.ts
0 → 100644
View file @
b4e4a4e8
import
{
ygopro
}
from
"
@/api/ocgcore/idl/ocgcore
"
;
import
{
BufferReader
}
from
"
../../../../../../rust-src/pkg/rust_src
"
;
import
MsgFieldDisabled
=
ygopro
.
StocGameMessage
.
MsgFieldDisabled
;
import
CardZone
=
ygopro
.
CardZone
;
/*
* Msg Field Disabled
* @param - TODO
*
* @usage - 区域禁用
* */
export
default
(
data
:
Uint8Array
)
=>
{
const
reader
=
new
BufferReader
(
data
);
const
flag
=
reader
.
readInt32
();
const
actions
=
[];
let
filter
=
0x1
;
for
(
let
i
=
0
;
i
<
5
;
i
++
,
filter
<<=
1
)
{
const
disabled
=
(
flag
&
filter
)
>
0
;
actions
.
push
(
new
MsgFieldDisabled
.
Action
({
controller
:
0
,
zone
:
CardZone
.
MZONE
,
sequence
:
i
,
disabled
,
})
);
}
filter
=
0x100
;
for
(
let
i
=
0
;
i
<
8
;
i
++
,
filter
<<=
1
)
{
const
disabled
=
(
flag
&
filter
)
>
0
;
actions
.
push
(
new
MsgFieldDisabled
.
Action
({
controller
:
0
,
zone
:
CardZone
.
SZONE
,
sequence
:
i
,
disabled
,
})
);
}
filter
=
0x10000
;
for
(
let
i
=
0
;
i
<
5
;
i
++
,
filter
<<=
1
)
{
const
disabled
=
(
flag
&
filter
)
>
0
;
actions
.
push
(
new
MsgFieldDisabled
.
Action
({
controller
:
1
,
zone
:
CardZone
.
MZONE
,
sequence
:
i
,
disabled
,
})
);
}
filter
=
0x1000000
;
for
(
let
i
=
0
;
i
<
8
;
i
++
,
filter
<<=
1
)
{
const
disabled
=
(
flag
&
filter
)
>
0
;
actions
.
push
(
new
MsgFieldDisabled
.
Action
({
controller
:
1
,
zone
:
CardZone
.
SZONE
,
sequence
:
i
,
disabled
,
})
);
}
return
new
MsgFieldDisabled
({
actions
,
});
};
src/api/ocgcore/ocgAdapter/stoc/stocGameMsg/mod.ts
View file @
b4e4a4e8
...
...
@@ -14,6 +14,7 @@ import MsgAnnounceRace from "./announceRace";
import
MsgAttack
from
"
./attack
"
;
import
MsgDamage
from
"
./damage
"
;
import
MsgDrawAdapter
from
"
./draw
"
;
import
MsgFieldDisabledAdapter
from
"
./fieldDisabled
"
;
import
MsgHintAdapter
from
"
./hint
"
;
import
MsgNewPhaseAdapter
from
"
./newPhase
"
;
import
MsgNewTurnAdapter
from
"
./newTurn
"
;
...
...
@@ -33,6 +34,7 @@ import MsgSelectPositionAdapter from "./selectPosition";
import
MsgSelectSum
from
"
./selectSum
"
;
import
MsgSelectTributeAdapter
from
"
./selectTribute
"
;
import
MsgSelectUnselectCardAdapter
from
"
./selectUnselectCard
"
;
import
MsgShuffleSetCard
from
"
./shuffleSetCard
"
;
import
MsgSortCard
from
"
./sortCard
"
;
import
MsgStartAdapter
from
"
./start
"
;
import
MsgTossAdapter
from
"
./toss
"
;
...
...
@@ -95,6 +97,7 @@ export default class GameMsgAdapter implements StocAdapter {
break
;
}
case
GAME_MSG
.
MSG_SELECT_DISFIELD
:
case
GAME_MSG
.
MSG_SELECT_PLACE
:
{
gameMsg
.
select_place
=
MsgSelectPlaceAdapter
(
gameData
);
...
...
@@ -237,6 +240,16 @@ export default class GameMsgAdapter implements StocAdapter {
break
;
}
case
GAME_MSG
.
MSG_SHUFFLE_SET_CARD
:
{
gameMsg
.
shuffle_set_card
=
MsgShuffleSetCard
(
gameData
);
break
;
}
case
GAME_MSG
.
MSG_FIELD_DISABLED
:
{
gameMsg
.
field_disabled
=
MsgFieldDisabledAdapter
(
gameData
);
break
;
}
default
:
{
gameMsg
.
unimplemented
=
new
ygopro
.
StocGameMessage
.
MsgUnimplemented
({
command
:
func
,
...
...
src/api/ocgcore/ocgAdapter/stoc/stocGameMsg/penetrate.json
View file @
b4e4a4e8
...
...
@@ -235,5 +235,14 @@
"repeatedType"
:
"CardLocation"
}
]
},
"32"
:{
"protoType"
:
"shuffle_deck"
,
"fields"
:[
{
"fieldName"
:
"player"
,
"fieldType"
:
"uint8"
}
]
}
}
src/api/ocgcore/ocgAdapter/stoc/stocGameMsg/penetrate.ts
View file @
b4e4a4e8
...
...
@@ -35,6 +35,7 @@ const MsgConstructorMap: Map<string, Constructor> = new Map([
[
"
lp_update
"
,
ygopro
.
StocGameMessage
.
MsgLpUpdate
],
[
"
confirm_cards
"
,
ygopro
.
StocGameMessage
.
MsgConfirmCards
],
[
"
become_target
"
,
ygopro
.
StocGameMessage
.
MsgBecomeTarget
],
[
"
shuffle_deck
"
,
ygopro
.
StocGameMessage
.
MsgShuffleDeck
],
]);
export
interface
penetrateType
{
...
...
src/api/ocgcore/ocgAdapter/stoc/stocGameMsg/shuffleSetCard.ts
0 → 100644
View file @
b4e4a4e8
import
{
ygopro
}
from
"
@/api/ocgcore/idl/ocgcore
"
;
import
{
BufferReaderExt
}
from
"
../../bufferIO
"
;
import
{
numberToCardZone
}
from
"
../../util
"
;
import
MsgShuffleSetCard
=
ygopro
.
StocGameMessage
.
MsgShuffleSetCard
;
/*
* Msg Shuffle Set Card
* @param - TODO
*
* @usage - 盖卡切洗
* */
export
default
(
data
:
Uint8Array
)
=>
{
const
reader
=
new
BufferReaderExt
(
data
);
const
zone
=
numberToCardZone
(
reader
.
inner
.
readUint8
());
const
count
=
reader
.
inner
.
readUint8
();
const
from_locations
=
[];
const
overlay_locations
=
[];
// TODO: 这个字段是否有用?
for
(
let
i
=
0
;
i
<
count
;
i
++
)
{
from_locations
.
push
(
reader
.
readCardLocation
());
}
for
(
let
i
=
0
;
i
<
count
;
i
++
)
{
overlay_locations
.
push
(
reader
.
readCardLocation
());
}
return
new
MsgShuffleSetCard
({
zone
,
from_locations
,
overlay_locations
,
});
};
src/service/duel/becomeTarget.ts
View file @
b4e4a4e8
...
...
@@ -10,7 +10,7 @@ export default (becomeTarget: ygopro.StocGameMessage.MsgBecomeTarget) => {
);
if
(
target
)
{
console
.
info
(
`
${
target
.
meta
.
text
.
name
}
become target`
);
// TODO: 动画
target
.
selected
=
true
;
}
else
{
console
.
warn
(
`<BecomeTarget>target from
${
location
}
is null`
);
}
...
...
src/service/duel/chainEnd.ts
View file @
b4e4a4e8
...
...
@@ -15,4 +15,12 @@ export default (_chainEnd: ygopro.StocGameMessage.MsgChainEnd) => {
console
.
warn
(
`<ChainEnd>target from
${
chain
}
is null`
);
}
}
// 目前selected字段只会涉及连锁过程某些卡成为效果对象,
// 因此在连锁结束的时候把selected标记清掉。
//
// TODO: 这里每次都要全部遍历一遍,后续可以优化下
for
(
const
card
of
cardStore
.
inner
)
{
card
.
selected
=
false
;
}
};
src/service/duel/fieldDisabled.ts
0 → 100644
View file @
b4e4a4e8
import
{
ygopro
}
from
"
@/api
"
;
import
{
placeStore
}
from
"
@/stores
"
;
import
MsgFieldDisabled
=
ygopro
.
StocGameMessage
.
MsgFieldDisabled
;
export
default
(
fieldDisabled
:
MsgFieldDisabled
)
=>
{
for
(
const
action
of
fieldDisabled
.
actions
)
{
switch
(
action
.
zone
)
{
case
ygopro
.
CardZone
.
MZONE
:
case
ygopro
.
CardZone
.
SZONE
:
placeStore
.
set
(
action
.
zone
,
action
.
controller
,
action
.
sequence
,
{
interactivity
:
undefined
,
disabled
:
action
.
disabled
,
});
break
;
default
:
console
.
warn
(
"
<FieldDisabled>zone is not MZONE nor SZONE!
"
);
}
}
};
src/service/duel/gameMsg.ts
View file @
b4e4a4e8
...
...
@@ -12,6 +12,7 @@ import onMsgChaining from "./chaining";
import
onMsgChainSolved
from
"
./chainSolved
"
;
import
onConfirmCards
from
"
./confirmCards
"
;
import
onMsgDraw
from
"
./draw
"
;
import
onMsgFieldDisabled
from
"
./fieldDisabled
"
;
import
onMsgFilpSummoned
from
"
./flipSummoned
"
;
import
onMsgFlipSummoning
from
"
./flipSummoning
"
;
import
onMsgHint
from
"
./hint
"
;
...
...
@@ -35,7 +36,9 @@ import onMsgSelectTribute from "./selectTribute";
import
onMsgSelectUnselectCard
from
"
./selectUnselectCard
"
;
import
onMsgSelectYesNo
from
"
./selectYesNo
"
;
import
onMsgSet
from
"
./set
"
;
import
onMsgShuffleDeck
from
"
./shuffleDeck
"
;
import
onMsgShuffleHand
from
"
./shuffleHand
"
;
import
onMsgShuffleSetCard
from
"
./shuffleSetCard
"
;
import
onMsgSortCard
from
"
./sortCard
"
;
import
onMsgSpSummoned
from
"
./spSummoned
"
;
import
onMsgSpSummoning
from
"
./spSummoning
"
;
...
...
@@ -186,7 +189,7 @@ async function _handleGameMsg(pb: ygopro.YgoStocMsg) {
break
;
}
case
"
update_data
"
:
{
onMsgUpdateData
(
msg
.
update_data
);
await
onMsgUpdateData
(
msg
.
update_data
);
break
;
}
...
...
@@ -310,6 +313,21 @@ async function _handleGameMsg(pb: ygopro.YgoStocMsg) {
break
;
}
case
"
shuffle_set_card
"
:
{
await
onMsgShuffleSetCard
(
msg
.
shuffle_set_card
);
break
;
}
case
"
field_disabled
"
:
{
onMsgFieldDisabled
(
msg
.
field_disabled
);
break
;
}
case
"
shuffle_deck
"
:
{
onMsgShuffleDeck
(
msg
.
shuffle_deck
);
break
;
}
case
"
unimplemented
"
:
{
onUnimplemented
(
msg
.
unimplemented
);
...
...
src/service/duel/selectPlace.ts
View file @
b4e4a4e8
...
...
@@ -14,12 +14,15 @@ export default (selectPlace: MsgSelectPlace) => {
case
ygopro
.
CardZone
.
MZONE
:
case
ygopro
.
CardZone
.
SZONE
:
placeStore
.
set
(
place
.
zone
,
place
.
controller
,
place
.
sequence
,
{
interactivity
:
{
interactType
:
InteractType
.
PLACE_SELECTABLE
,
response
:
{
controller
:
place
.
controller
,
zone
:
place
.
zone
,
sequence
:
place
.
sequence
,
},
},
disabled
:
false
,
});
break
;
}
...
...
src/service/duel/shuffleDeck.ts
0 → 100644
View file @
b4e4a4e8
import
{
ygopro
}
from
"
@/api
"
;
import
{
cardStore
}
from
"
@/stores
"
;
export
default
(
shuffleDeck
:
ygopro
.
StocGameMessage
.
MsgShuffleDeck
)
=>
{
const
player
=
shuffleDeck
.
player
;
for
(
const
card
of
cardStore
.
at
(
ygopro
.
CardZone
.
DECK
,
player
))
{
// 把数据抹掉就好了
card
.
code
=
0
;
card
.
meta
=
{
id
:
0
,
data
:
{},
text
:
{}
};
}
};
src/service/duel/shuffleSetCard.ts
0 → 100644
View file @
b4e4a4e8
import
{
ygopro
}
from
"
@/api
"
;
import
{
eventbus
,
Task
}
from
"
@/infra
"
;
import
{
cardStore
}
from
"
@/stores
"
;
import
MsgShuffleSetCard
=
ygopro
.
StocGameMessage
.
MsgShuffleSetCard
;
// 后端传过来的`from_locations`的列表是切洗前场上卡的location,它们在列表里面按照切洗后的顺序排列
export
default
async
(
shuffleSetCard
:
MsgShuffleSetCard
)
=>
{
const
from_locations
=
shuffleSetCard
.
from_locations
;
const
overlay_locations
=
shuffleSetCard
.
overlay_locations
;
if
(
from_locations
.
length
==
0
)
{
console
.
error
(
"
<ShuffleSetCard>from_locations is empty
"
);
return
;
}
if
(
from_locations
.
length
!=
overlay_locations
.
length
)
{
console
.
error
(
"
<ShuffleSetCard>length of from_locations and overlay_locations not matched
"
);
}
const
count
=
from_locations
.
length
;
for
(
let
i
=
0
;
i
<
count
;
i
++
)
{
const
from
=
from_locations
[
i
];
const
target
=
cardStore
.
at
(
from
.
zone
,
from
.
controller
,
from
.
sequence
);
if
(
target
)
{
// 设置code为0,洗切后的code会由`UpdateData`指定
target
.
code
=
0
;
target
.
meta
.
id
=
0
;
target
.
meta
.
text
.
id
=
0
;
}
else
{
console
.
warn
(
`<ShuffleSetCard>target from
${
from
}
is null`
);
}
// 处理超量
const
overlay_location
=
overlay_locations
[
i
];
if
(
overlay_location
.
zone
>
0
)
{
// 如果没有超量素材,后端会全传0
for
(
const
overlay
of
cardStore
.
findOverlay
(
from
.
zone
,
from
.
controller
,
from
.
sequence
))
{
// 更新sequence
overlay
.
location
.
sequence
=
overlay_location
.
sequence
;
// 渲染动画
await
eventbus
.
call
(
Task
.
Move
,
overlay
.
uuid
);
// 这里其实有个疑惑,如果超量素材也跟着洗切的话,洗切的意义好像就没有了,感觉算是个k社没想好的设计?
}
}
}
};
src/service/duel/start.ts
View file @
b4e4a4e8
...
...
@@ -62,6 +62,7 @@ export default async (start: ygopro.StocGameMessage.MsgStart) => {
text
:
{},
},
isToken
:
!
((
i
+
1
)
%
3
),
selected
:
false
,
})
)
)
...
...
src/service/duel/updateData.ts
View file @
b4e4a4e8
import
{
ygopro
}
from
"
@/api
"
;
import
{
fetchCard
,
ygopro
}
from
"
@/api
"
;
import
MsgUpdateData
=
ygopro
.
StocGameMessage
.
MsgUpdateData
;
import
{
eventbus
,
Task
}
from
"
@/infra
"
;
import
{
cardStore
}
from
"
@/stores
"
;
export
default
(
updateData
:
MsgUpdateData
)
=>
{
export
default
async
(
updateData
:
MsgUpdateData
)
=>
{
const
{
player
:
controller
,
zone
,
actions
}
=
updateData
;
if
(
controller
!==
undefined
&&
zone
!==
undefined
&&
actions
!==
undefined
)
{
const
field
=
cardStore
.
at
(
zone
,
controller
);
actions
.
forEach
((
action
)
=>
{
for
(
const
action
of
actions
)
{
const
sequence
=
action
.
location
?.
sequence
;
if
(
typeof
sequence
!==
"
undefined
"
)
{
const
target
=
field
.
filter
((
card
)
=>
card
.
location
.
sequence
===
sequence
)
.
at
(
0
);
if
(
target
)
{
const
meta
=
target
.
meta
;
// 目前只更新以下字段
if
(
action
?.
code
>=
0
)
{
meta
.
id
=
action
.
code
;
meta
.
text
.
id
=
action
.
code
;
const
newMeta
=
await
fetchCard
(
action
.
code
);
target
.
code
=
action
.
code
;
target
.
meta
=
newMeta
;
}
const
meta
=
target
.
meta
;
if
(
action
.
location
!==
undefined
)
{
if
(
target
.
location
.
position
!=
action
.
location
.
position
)
{
// Currently only update position
target
.
location
.
position
=
action
.
location
.
position
;
// animation
await
eventbus
.
call
(
Task
.
Move
,
target
.
uuid
);
}
}
if
(
action
?.
type_
>=
0
)
{
meta
.
data
.
type
=
action
.
type_
;
...
...
@@ -48,10 +56,7 @@ export default (updateData: MsgUpdateData) => {
);
console
.
info
(
field
);
}
if
(
target
?.
reload
)
{
target
.
reload
=
false
;
}
}
});
}
};
src/stores/cardStore.ts
View file @
b4e4a4e8
...
...
@@ -20,11 +20,10 @@ export interface CardType {
sequence
:
number
;
}
>
;
// 选择位置状态下的互动信息
counters
:
{
[
type
:
number
]:
number
};
// 指示器
reload
?:
boolean
;
// 这个字段会在收到MSG_RELOAD_FIELD的时候设置成true,在收到MSG_UPDATE_DATE的时候设置成false
isToken
:
boolean
;
// 是否是token
chainIndex
?:
number
/*连锁的序号,如果为空表示不在连锁
TODO: 目前是妥协的设计,因为其实一张卡是可以在同一个连锁链中被连锁多次的,这里为了避免太过复杂只保存最后的连锁序号*/
;
selected
:
boolean
;
// 当前卡是否被选择成为效果的对象
}
class
CardStore
{
...
...
src/stores/placeStore.ts
View file @
b4e4a4e8
...
...
@@ -15,31 +15,60 @@ export type PlaceInteractivity =
const
{
MZONE
,
SZONE
}
=
ygopro
.
CardZone
;
export
interface
BlockState
{
interactivity
?:
PlaceInteractivity
;
// 互动性
disabled
:
boolean
;
// 是否被禁用
}
export
const
placeStore
=
proxy
({
inner
:
{
[
MZONE
]:
{
me
:
Array
.
from
({
length
:
7
}).
map
(()
=>
undefined
as
PlaceInteractivity
),
op
:
Array
.
from
({
length
:
7
}).
map
(()
=>
undefined
as
PlaceInteractivity
),
me
:
Array
.
from
({
length
:
7
}).
map
(
()
=>
({
interactivity
:
undefined
,
disabled
:
false
,
}
as
BlockState
)
),
op
:
Array
.
from
({
length
:
7
}).
map
(
()
=>
({
interactivity
:
undefined
,
disabled
:
false
,
}
as
BlockState
)
),
},
[
SZONE
]:
{
me
:
Array
.
from
({
length
:
6
}).
map
(()
=>
undefined
as
PlaceInteractivity
),
op
:
Array
.
from
({
length
:
6
}).
map
(()
=>
undefined
as
PlaceInteractivity
),
me
:
Array
.
from
({
length
:
6
}).
map
(
()
=>
({
interactivity
:
undefined
,
disabled
:
false
,
}
as
BlockState
)
),
op
:
Array
.
from
({
length
:
6
}).
map
(
()
=>
({
interactivity
:
undefined
,
disabled
:
false
,
}
as
BlockState
)
),
},
},
set
(
zone
:
ygopro
.
CardZone
.
MZONE
|
ygopro
.
CardZone
.
SZONE
,
controller
:
number
,
sequence
:
number
,
placeInteractivity
:
PlaceInteractivity
state
:
BlockState
)
{
placeStore
.
inner
[
zone
][
matStore
.
isMe
(
controller
)
?
"
me
"
:
"
op
"
][
sequence
]
=
placeInteractivity
;
state
;
},
clearAll
()
{
clearAll
Interactivity
()
{
([
"
me
"
,
"
op
"
]
as
const
).
forEach
((
who
)
=>
{
([
MZONE
,
SZONE
]
as
const
).
forEach
((
where
)
=>
{
placeStore
.
inner
[
where
][
who
]
=
placeStore
.
inner
[
where
][
who
].
map
(
(
)
=>
undefined
placeStore
.
inner
[
where
][
who
]
.
forEach
(
(
block
)
=>
(
block
.
interactivity
=
undefined
)
);
});
});
...
...
src/ui/Duel/PlayMat/Bg/index.tsx
View file @
b4e4a4e8
import
"
./index.scss
"
;
import
classnames
from
"
classnames
"
;
import
{
type
FC
}
from
"
react
"
;
import
{
type
CSSProperties
,
type
FC
}
from
"
react
"
;
import
{
type
INTERNAL_Snapshot
as
Snapshot
,
useSnapshot
}
from
"
valtio
"
;
import
{
sendSelectPlaceResponse
,
ygopro
}
from
"
@/api
"
;
import
{
cardStore
,
type
PlaceInteractivity
,
placeStore
}
from
"
@/stores
"
;
import
{
BlockState
,
cardStore
,
type
PlaceInteractivity
,
placeStore
,
}
from
"
@/stores
"
;
// Block被禁用的样式
const
BgDisabledStyle
=
{
background
:
`linear-gradient(
to top right,
rgba(0, 0, 0, 0) 0%,
rgba(0, 0, 0, 0) calc(50% - 1.5px),
red 50%,
rgba(0, 0, 0, 0) calc(50% + 1.5px),
rgba(0, 0, 0, 0) 100%
), linear-gradient(
to bottom right,
rgba(0, 0, 0, 0) 0%,
rgba(0, 0, 0, 0) calc(50% - 1.5px),
red 50%,
rgba(0, 0, 0, 0) calc(50% + 1.5px),
rgba(0, 0, 0, 0) 100%
)`
,
};
const
BgExtraRow
:
FC
<
{
meSnap
:
Snapshot
<
PlaceInteractivity
[]
>
;
opSnap
:
Snapshot
<
PlaceInteractivity
[]
>
;
meSnap
:
Snapshot
<
BlockState
[]
>
;
opSnap
:
Snapshot
<
BlockState
[]
>
;
}
>
=
({
meSnap
,
opSnap
})
=>
{
return
(
<
div
className=
{
classnames
(
"
bg-row
"
)
}
>
...
...
@@ -17,11 +41,16 @@ const BgExtraRow: FC<{
<
div
key=
{
i
}
className=
{
classnames
(
"
block
"
,
"
extra
"
,
{
highlight
:
!!
meSnap
[
i
]
||
!!
opSnap
[
i
]
,
highlight
:
!!
meSnap
[
i
]
.
interactivity
||
!!
opSnap
[
i
].
interactivity
,
})
}
style=
{
meSnap
[
i
].
disabled
||
opSnap
[
i
].
disabled
?
(
BgDisabledStyle
as
CSSProperties
)
:
{}
}
onClick=
{
()
=>
{
onBlockClick
(
meSnap
[
i
]);
onBlockClick
(
opSnap
[
i
]);
onBlockClick
(
meSnap
[
i
]
.
interactivity
);
onBlockClick
(
opSnap
[
i
]
.
interactivity
);
}
}
>
{
<
DecoTriangles
/>
}
...
...
@@ -34,7 +63,7 @@ const BgExtraRow: FC<{
const
BgRow
:
FC
<
{
isSzone
?:
boolean
;
opponent
?:
boolean
;
snap
:
Snapshot
<
PlaceInteractivity
[]
>
;
snap
:
Snapshot
<
BlockState
[]
>
;
}
>
=
({
isSzone
=
false
,
opponent
=
false
,
snap
})
=>
(
<
div
className=
{
classnames
(
"
bg-row
"
,
{
opponent
})
}
>
{
Array
.
from
({
length
:
5
}).
map
((
_
,
i
)
=>
(
...
...
@@ -42,9 +71,10 @@ const BgRow: FC<{
key=
{
i
}
className=
{
classnames
(
"
block
"
,
{
szone
:
isSzone
,
highlight
:
!!
snap
[
i
],
highlight
:
!!
snap
[
i
]
.
interactivity
,
})
}
onClick=
{
()
=>
onBlockClick
(
snap
[
i
])
}
style=
{
snap
[
i
].
disabled
?
(
BgDisabledStyle
as
CSSProperties
)
:
{}
}
onClick=
{
()
=>
onBlockClick
(
snap
[
i
].
interactivity
)
}
>
{
<
DecoTriangles
/>
}
</
div
>
...
...
@@ -72,7 +102,7 @@ const onBlockClick = (placeInteractivity: PlaceInteractivity) => {
if
(
placeInteractivity
)
{
sendSelectPlaceResponse
(
placeInteractivity
.
response
);
cardStore
.
inner
.
forEach
((
card
)
=>
(
card
.
idleInteractivities
=
[]));
placeStore
.
clearAll
();
placeStore
.
clearAll
Interactivity
();
}
};
...
...
src/ui/Duel/PlayMat/Card/index.scss
View file @
b4e4a4e8
...
...
@@ -9,8 +9,10 @@ section#mat {
.card-img-wrap
{
transform-style
:
preserve-3d
;
position
:
relative
;
height
:
100%
;
width
:
100%
;
margin
:
auto
auto
;
top
:
2%
;
height
:
96%
;
width
:
96%
;
transform
:
translateZ
(
calc
(
var
(
--
z
)
*
1px
+
0
.1px
))
rotateY
(
calc
(
var
(
--
ry
)
*
1deg
));
transition
:
0
.2s
scale
;
...
...
@@ -47,6 +49,41 @@ section#mat {
background-color
:
transparent
;
// filter: blur(2px);
}
// 卡片被选中后的流光特效
// ref: https://github.com/Mr-majifu/Animated-Profile-Card02/blob/master/style.css
.card-streamer
{
position
:
absolute
;
inset
:
0
;
background
:
#000
;
overflow
:
hidden
;
}
.
card-streamer
:
:
before
{
content
:
''
;
position
:
absolute
;
top
:
50%
;
left
:
50%
;
width
:
400%
;
height
:
80%
;
background
:
linear-gradient
(
transparent
,
#45f3ff
,
#45f3ff
,
#45f3ff
,
transparent
);
animation
:
stream
2s
linear
infinite
;
}
.
card-streamer
:
:
after
{
content
:
''
;
position
:
absolute
;
/* https://developer.mozilla.org/en-US/docs/Web/CSS/inset */
inset
:
3px
;
background
:
#292929
;
}
@keyframes
stream
{
0
%
{
transform
:
translate
(
-50%
,
-50%
)
rotate
(
0deg
);
}
100
%
{
transform
:
translate
(
-50%
,
-50%
)
rotate
(
360deg
);
}
}
.card-focus
{
position
:
absolute
;
width
:
calc
(
100%
*
var
(
--
focus-scale
));
...
...
src/ui/Duel/PlayMat/Card/index.tsx
View file @
b4e4a4e8
...
...
@@ -241,6 +241,7 @@ export const Card: FC<{ idx: number }> = React.memo(({ idx }) => {
<
YgoCard
className=
"card-back"
isBack
/>
</
div
>
</
Dropdown
>
{
snap
.
selected
?
<
div
className=
"card-streamer"
/>
:
<></>
}
</
animated
.
div
>
);
});
...
...
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