Commit b4e4a4e8 authored by Chunchi Che's avatar Chunchi Che

Merge branch 'dev/async_rebase' into 'dev/async'

Dev/async rebase

See merge request mycard/Neos!234
parents c78b6b62 d0b7a3c9
...@@ -2,7 +2,7 @@ ...@@ -2,7 +2,7 @@
"version":4960, "version":4960,
"servers":[ "servers":[
{ {
"ip":"koishi-r.momobako.com", "ip":"koishi.momobako.com",
"port":"7211" "port":"7211"
} }
], ],
......
/** /**
* Generated by the protoc-gen-ts. DO NOT EDIT! * Generated by the protoc-gen-ts. DO NOT EDIT!
* compiler version: 3.21.5 * compiler version: 3.21.9
* source: idl/ocgcore.proto * source: idl/ocgcore.proto
* git: https://github.com/thesayyn/protoc-gen-ts */ * git: https://github.com/thesayyn/protoc-gen-ts */
import * as pb_1 from "google-protobuf"; import * as pb_1 from "google-protobuf";
...@@ -4511,7 +4511,7 @@ export namespace ygopro { ...@@ -4511,7 +4511,7 @@ export namespace ygopro {
} }
} }
export class StocGameMessage extends pb_1.Message { export class StocGameMessage extends pb_1.Message {
#one_of_decls: number[][] = [[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47]]; #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[] | ({} & (({ constructor(data?: any[] | ({} & (({
start?: StocGameMessage.MsgStart; start?: StocGameMessage.MsgStart;
draw?: never; draw?: never;
...@@ -4560,6 +4560,9 @@ export namespace ygopro { ...@@ -4560,6 +4560,9 @@ export namespace ygopro {
confirm_cards?: never; confirm_cards?: never;
become_target?: never; become_target?: never;
toss?: never; toss?: never;
shuffle_set_card?: never;
field_disabled?: never;
shuffle_deck?: never;
} | { } | {
start?: never; start?: never;
draw?: StocGameMessage.MsgDraw; draw?: StocGameMessage.MsgDraw;
...@@ -4608,6 +4611,9 @@ export namespace ygopro { ...@@ -4608,6 +4611,9 @@ export namespace ygopro {
confirm_cards?: never; confirm_cards?: never;
become_target?: never; become_target?: never;
toss?: never; toss?: never;
shuffle_set_card?: never;
field_disabled?: never;
shuffle_deck?: never;
} | { } | {
start?: never; start?: never;
draw?: never; draw?: never;
...@@ -4656,6 +4662,9 @@ export namespace ygopro { ...@@ -4656,6 +4662,9 @@ export namespace ygopro {
confirm_cards?: never; confirm_cards?: never;
become_target?: never; become_target?: never;
toss?: never; toss?: never;
shuffle_set_card?: never;
field_disabled?: never;
shuffle_deck?: never;
} | { } | {
start?: never; start?: never;
draw?: never; draw?: never;
...@@ -4704,6 +4713,9 @@ export namespace ygopro { ...@@ -4704,6 +4713,9 @@ export namespace ygopro {
confirm_cards?: never; confirm_cards?: never;
become_target?: never; become_target?: never;
toss?: never; toss?: never;
shuffle_set_card?: never;
field_disabled?: never;
shuffle_deck?: never;
} | { } | {
start?: never; start?: never;
draw?: never; draw?: never;
...@@ -4752,6 +4764,9 @@ export namespace ygopro { ...@@ -4752,6 +4764,9 @@ export namespace ygopro {
confirm_cards?: never; confirm_cards?: never;
become_target?: never; become_target?: never;
toss?: never; toss?: never;
shuffle_set_card?: never;
field_disabled?: never;
shuffle_deck?: never;
} | { } | {
start?: never; start?: never;
draw?: never; draw?: never;
...@@ -4800,6 +4815,9 @@ export namespace ygopro { ...@@ -4800,6 +4815,9 @@ export namespace ygopro {
confirm_cards?: never; confirm_cards?: never;
become_target?: never; become_target?: never;
toss?: never; toss?: never;
shuffle_set_card?: never;
field_disabled?: never;
shuffle_deck?: never;
} | { } | {
start?: never; start?: never;
draw?: never; draw?: never;
...@@ -4848,6 +4866,9 @@ export namespace ygopro { ...@@ -4848,6 +4866,9 @@ export namespace ygopro {
confirm_cards?: never; confirm_cards?: never;
become_target?: never; become_target?: never;
toss?: never; toss?: never;
shuffle_set_card?: never;
field_disabled?: never;
shuffle_deck?: never;
} | { } | {
start?: never; start?: never;
draw?: never; draw?: never;
...@@ -4896,6 +4917,9 @@ export namespace ygopro { ...@@ -4896,6 +4917,9 @@ export namespace ygopro {
confirm_cards?: never; confirm_cards?: never;
become_target?: never; become_target?: never;
toss?: never; toss?: never;
shuffle_set_card?: never;
field_disabled?: never;
shuffle_deck?: never;
} | { } | {
start?: never; start?: never;
draw?: never; draw?: never;
...@@ -4944,6 +4968,9 @@ export namespace ygopro { ...@@ -4944,6 +4968,9 @@ export namespace ygopro {
confirm_cards?: never; confirm_cards?: never;
become_target?: never; become_target?: never;
toss?: never; toss?: never;
shuffle_set_card?: never;
field_disabled?: never;
shuffle_deck?: never;
} | { } | {
start?: never; start?: never;
draw?: never; draw?: never;
...@@ -4992,6 +5019,9 @@ export namespace ygopro { ...@@ -4992,6 +5019,9 @@ export namespace ygopro {
confirm_cards?: never; confirm_cards?: never;
become_target?: never; become_target?: never;
toss?: never; toss?: never;
shuffle_set_card?: never;
field_disabled?: never;
shuffle_deck?: never;
} | { } | {
start?: never; start?: never;
draw?: never; draw?: never;
...@@ -5040,6 +5070,9 @@ export namespace ygopro { ...@@ -5040,6 +5070,9 @@ export namespace ygopro {
confirm_cards?: never; confirm_cards?: never;
become_target?: never; become_target?: never;
toss?: never; toss?: never;
shuffle_set_card?: never;
field_disabled?: never;
shuffle_deck?: never;
} | { } | {
start?: never; start?: never;
draw?: never; draw?: never;
...@@ -5088,6 +5121,9 @@ export namespace ygopro { ...@@ -5088,6 +5121,9 @@ export namespace ygopro {
confirm_cards?: never; confirm_cards?: never;
become_target?: never; become_target?: never;
toss?: never; toss?: never;
shuffle_set_card?: never;
field_disabled?: never;
shuffle_deck?: never;
} | { } | {
start?: never; start?: never;
draw?: never; draw?: never;
...@@ -5136,6 +5172,9 @@ export namespace ygopro { ...@@ -5136,6 +5172,9 @@ export namespace ygopro {
confirm_cards?: never; confirm_cards?: never;
become_target?: never; become_target?: never;
toss?: never; toss?: never;
shuffle_set_card?: never;
field_disabled?: never;
shuffle_deck?: never;
} | { } | {
start?: never; start?: never;
draw?: never; draw?: never;
...@@ -5184,6 +5223,9 @@ export namespace ygopro { ...@@ -5184,6 +5223,9 @@ export namespace ygopro {
confirm_cards?: never; confirm_cards?: never;
become_target?: never; become_target?: never;
toss?: never; toss?: never;
shuffle_set_card?: never;
field_disabled?: never;
shuffle_deck?: never;
} | { } | {
start?: never; start?: never;
draw?: never; draw?: never;
...@@ -5232,6 +5274,9 @@ export namespace ygopro { ...@@ -5232,6 +5274,9 @@ export namespace ygopro {
confirm_cards?: never; confirm_cards?: never;
become_target?: never; become_target?: never;
toss?: never; toss?: never;
shuffle_set_card?: never;
field_disabled?: never;
shuffle_deck?: never;
} | { } | {
start?: never; start?: never;
draw?: never; draw?: never;
...@@ -5280,6 +5325,9 @@ export namespace ygopro { ...@@ -5280,6 +5325,9 @@ export namespace ygopro {
confirm_cards?: never; confirm_cards?: never;
become_target?: never; become_target?: never;
toss?: never; toss?: never;
shuffle_set_card?: never;
field_disabled?: never;
shuffle_deck?: never;
} | { } | {
start?: never; start?: never;
draw?: never; draw?: never;
...@@ -5328,6 +5376,9 @@ export namespace ygopro { ...@@ -5328,6 +5376,9 @@ export namespace ygopro {
confirm_cards?: never; confirm_cards?: never;
become_target?: never; become_target?: never;
toss?: never; toss?: never;
shuffle_set_card?: never;
field_disabled?: never;
shuffle_deck?: never;
} | { } | {
start?: never; start?: never;
draw?: never; draw?: never;
...@@ -5376,6 +5427,9 @@ export namespace ygopro { ...@@ -5376,6 +5427,9 @@ export namespace ygopro {
confirm_cards?: never; confirm_cards?: never;
become_target?: never; become_target?: never;
toss?: never; toss?: never;
shuffle_set_card?: never;
field_disabled?: never;
shuffle_deck?: never;
} | { } | {
start?: never; start?: never;
draw?: never; draw?: never;
...@@ -5424,6 +5478,9 @@ export namespace ygopro { ...@@ -5424,6 +5478,9 @@ export namespace ygopro {
confirm_cards?: never; confirm_cards?: never;
become_target?: never; become_target?: never;
toss?: never; toss?: never;
shuffle_set_card?: never;
field_disabled?: never;
shuffle_deck?: never;
} | { } | {
start?: never; start?: never;
draw?: never; draw?: never;
...@@ -5472,6 +5529,9 @@ export namespace ygopro { ...@@ -5472,6 +5529,9 @@ export namespace ygopro {
confirm_cards?: never; confirm_cards?: never;
become_target?: never; become_target?: never;
toss?: never; toss?: never;
shuffle_set_card?: never;
field_disabled?: never;
shuffle_deck?: never;
} | { } | {
start?: never; start?: never;
draw?: never; draw?: never;
...@@ -5520,6 +5580,9 @@ export namespace ygopro { ...@@ -5520,6 +5580,9 @@ export namespace ygopro {
confirm_cards?: never; confirm_cards?: never;
become_target?: never; become_target?: never;
toss?: never; toss?: never;
shuffle_set_card?: never;
field_disabled?: never;
shuffle_deck?: never;
} | { } | {
start?: never; start?: never;
draw?: never; draw?: never;
...@@ -5568,6 +5631,9 @@ export namespace ygopro { ...@@ -5568,6 +5631,9 @@ export namespace ygopro {
confirm_cards?: never; confirm_cards?: never;
become_target?: never; become_target?: never;
toss?: never; toss?: never;
shuffle_set_card?: never;
field_disabled?: never;
shuffle_deck?: never;
} | { } | {
start?: never; start?: never;
draw?: never; draw?: never;
...@@ -5616,6 +5682,9 @@ export namespace ygopro { ...@@ -5616,6 +5682,9 @@ export namespace ygopro {
confirm_cards?: never; confirm_cards?: never;
become_target?: never; become_target?: never;
toss?: never; toss?: never;
shuffle_set_card?: never;
field_disabled?: never;
shuffle_deck?: never;
} | { } | {
start?: never; start?: never;
draw?: never; draw?: never;
...@@ -5664,6 +5733,9 @@ export namespace ygopro { ...@@ -5664,6 +5733,9 @@ export namespace ygopro {
confirm_cards?: never; confirm_cards?: never;
become_target?: never; become_target?: never;
toss?: never; toss?: never;
shuffle_set_card?: never;
field_disabled?: never;
shuffle_deck?: never;
} | { } | {
start?: never; start?: never;
draw?: never; draw?: never;
...@@ -5712,6 +5784,9 @@ export namespace ygopro { ...@@ -5712,6 +5784,9 @@ export namespace ygopro {
confirm_cards?: never; confirm_cards?: never;
become_target?: never; become_target?: never;
toss?: never; toss?: never;
shuffle_set_card?: never;
field_disabled?: never;
shuffle_deck?: never;
} | { } | {
start?: never; start?: never;
draw?: never; draw?: never;
...@@ -5760,6 +5835,9 @@ export namespace ygopro { ...@@ -5760,6 +5835,9 @@ export namespace ygopro {
confirm_cards?: never; confirm_cards?: never;
become_target?: never; become_target?: never;
toss?: never; toss?: never;
shuffle_set_card?: never;
field_disabled?: never;
shuffle_deck?: never;
} | { } | {
start?: never; start?: never;
draw?: never; draw?: never;
...@@ -5808,6 +5886,9 @@ export namespace ygopro { ...@@ -5808,6 +5886,9 @@ export namespace ygopro {
confirm_cards?: never; confirm_cards?: never;
become_target?: never; become_target?: never;
toss?: never; toss?: never;
shuffle_set_card?: never;
field_disabled?: never;
shuffle_deck?: never;
} | { } | {
start?: never; start?: never;
draw?: never; draw?: never;
...@@ -5856,6 +5937,9 @@ export namespace ygopro { ...@@ -5856,6 +5937,9 @@ export namespace ygopro {
confirm_cards?: never; confirm_cards?: never;
become_target?: never; become_target?: never;
toss?: never; toss?: never;
shuffle_set_card?: never;
field_disabled?: never;
shuffle_deck?: never;
} | { } | {
start?: never; start?: never;
draw?: never; draw?: never;
...@@ -5904,6 +5988,9 @@ export namespace ygopro { ...@@ -5904,6 +5988,9 @@ export namespace ygopro {
confirm_cards?: never; confirm_cards?: never;
become_target?: never; become_target?: never;
toss?: never; toss?: never;
shuffle_set_card?: never;
field_disabled?: never;
shuffle_deck?: never;
} | { } | {
start?: never; start?: never;
draw?: never; draw?: never;
...@@ -5952,6 +6039,9 @@ export namespace ygopro { ...@@ -5952,6 +6039,9 @@ export namespace ygopro {
confirm_cards?: never; confirm_cards?: never;
become_target?: never; become_target?: never;
toss?: never; toss?: never;
shuffle_set_card?: never;
field_disabled?: never;
shuffle_deck?: never;
} | { } | {
start?: never; start?: never;
draw?: never; draw?: never;
...@@ -6000,6 +6090,9 @@ export namespace ygopro { ...@@ -6000,6 +6090,9 @@ export namespace ygopro {
confirm_cards?: never; confirm_cards?: never;
become_target?: never; become_target?: never;
toss?: never; toss?: never;
shuffle_set_card?: never;
field_disabled?: never;
shuffle_deck?: never;
} | { } | {
start?: never; start?: never;
draw?: never; draw?: never;
...@@ -6048,6 +6141,9 @@ export namespace ygopro { ...@@ -6048,6 +6141,9 @@ export namespace ygopro {
confirm_cards?: never; confirm_cards?: never;
become_target?: never; become_target?: never;
toss?: never; toss?: never;
shuffle_set_card?: never;
field_disabled?: never;
shuffle_deck?: never;
} | { } | {
start?: never; start?: never;
draw?: never; draw?: never;
...@@ -6096,6 +6192,9 @@ export namespace ygopro { ...@@ -6096,6 +6192,9 @@ export namespace ygopro {
confirm_cards?: never; confirm_cards?: never;
become_target?: never; become_target?: never;
toss?: never; toss?: never;
shuffle_set_card?: never;
field_disabled?: never;
shuffle_deck?: never;
} | { } | {
start?: never; start?: never;
draw?: never; draw?: never;
...@@ -6144,6 +6243,9 @@ export namespace ygopro { ...@@ -6144,6 +6243,9 @@ export namespace ygopro {
confirm_cards?: never; confirm_cards?: never;
become_target?: never; become_target?: never;
toss?: never; toss?: never;
shuffle_set_card?: never;
field_disabled?: never;
shuffle_deck?: never;
} | { } | {
start?: never; start?: never;
draw?: never; draw?: never;
...@@ -6192,6 +6294,9 @@ export namespace ygopro { ...@@ -6192,6 +6294,9 @@ export namespace ygopro {
confirm_cards?: never; confirm_cards?: never;
become_target?: never; become_target?: never;
toss?: never; toss?: never;
shuffle_set_card?: never;
field_disabled?: never;
shuffle_deck?: never;
} | { } | {
start?: never; start?: never;
draw?: never; draw?: never;
...@@ -6240,6 +6345,9 @@ export namespace ygopro { ...@@ -6240,6 +6345,9 @@ export namespace ygopro {
confirm_cards?: never; confirm_cards?: never;
become_target?: never; become_target?: never;
toss?: never; toss?: never;
shuffle_set_card?: never;
field_disabled?: never;
shuffle_deck?: never;
} | { } | {
start?: never; start?: never;
draw?: never; draw?: never;
...@@ -6288,6 +6396,9 @@ export namespace ygopro { ...@@ -6288,6 +6396,9 @@ export namespace ygopro {
confirm_cards?: never; confirm_cards?: never;
become_target?: never; become_target?: never;
toss?: never; toss?: never;
shuffle_set_card?: never;
field_disabled?: never;
shuffle_deck?: never;
} | { } | {
start?: never; start?: never;
draw?: never; draw?: never;
...@@ -6336,6 +6447,9 @@ export namespace ygopro { ...@@ -6336,6 +6447,9 @@ export namespace ygopro {
confirm_cards?: never; confirm_cards?: never;
become_target?: never; become_target?: never;
toss?: never; toss?: never;
shuffle_set_card?: never;
field_disabled?: never;
shuffle_deck?: never;
} | { } | {
start?: never; start?: never;
draw?: never; draw?: never;
...@@ -6384,6 +6498,9 @@ export namespace ygopro { ...@@ -6384,6 +6498,9 @@ export namespace ygopro {
confirm_cards?: never; confirm_cards?: never;
become_target?: never; become_target?: never;
toss?: never; toss?: never;
shuffle_set_card?: never;
field_disabled?: never;
shuffle_deck?: never;
} | { } | {
start?: never; start?: never;
draw?: never; draw?: never;
...@@ -6432,6 +6549,9 @@ export namespace ygopro { ...@@ -6432,6 +6549,9 @@ export namespace ygopro {
confirm_cards?: never; confirm_cards?: never;
become_target?: never; become_target?: never;
toss?: never; toss?: never;
shuffle_set_card?: never;
field_disabled?: never;
shuffle_deck?: never;
} | { } | {
start?: never; start?: never;
draw?: never; draw?: never;
...@@ -6480,6 +6600,9 @@ export namespace ygopro { ...@@ -6480,6 +6600,9 @@ export namespace ygopro {
confirm_cards?: never; confirm_cards?: never;
become_target?: never; become_target?: never;
toss?: never; toss?: never;
shuffle_set_card?: never;
field_disabled?: never;
shuffle_deck?: never;
} | { } | {
start?: never; start?: never;
draw?: never; draw?: never;
...@@ -6528,6 +6651,9 @@ export namespace ygopro { ...@@ -6528,6 +6651,9 @@ export namespace ygopro {
confirm_cards?: never; confirm_cards?: never;
become_target?: never; become_target?: never;
toss?: never; toss?: never;
shuffle_set_card?: never;
field_disabled?: never;
shuffle_deck?: never;
} | { } | {
start?: never; start?: never;
draw?: never; draw?: never;
...@@ -6576,6 +6702,9 @@ export namespace ygopro { ...@@ -6576,6 +6702,9 @@ export namespace ygopro {
confirm_cards?: never; confirm_cards?: never;
become_target?: never; become_target?: never;
toss?: never; toss?: never;
shuffle_set_card?: never;
field_disabled?: never;
shuffle_deck?: never;
} | { } | {
start?: never; start?: never;
draw?: never; draw?: never;
...@@ -6624,6 +6753,9 @@ export namespace ygopro { ...@@ -6624,6 +6753,9 @@ export namespace ygopro {
confirm_cards?: never; confirm_cards?: never;
become_target?: never; become_target?: never;
toss?: never; toss?: never;
shuffle_set_card?: never;
field_disabled?: never;
shuffle_deck?: never;
} | { } | {
start?: never; start?: never;
draw?: never; draw?: never;
...@@ -6672,6 +6804,9 @@ export namespace ygopro { ...@@ -6672,6 +6804,9 @@ export namespace ygopro {
confirm_cards?: StocGameMessage.MsgConfirmCards; confirm_cards?: StocGameMessage.MsgConfirmCards;
become_target?: never; become_target?: never;
toss?: never; toss?: never;
shuffle_set_card?: never;
field_disabled?: never;
shuffle_deck?: never;
} | { } | {
start?: never; start?: never;
draw?: never; draw?: never;
...@@ -6720,6 +6855,9 @@ export namespace ygopro { ...@@ -6720,6 +6855,9 @@ export namespace ygopro {
confirm_cards?: never; confirm_cards?: never;
become_target?: StocGameMessage.MsgBecomeTarget; become_target?: StocGameMessage.MsgBecomeTarget;
toss?: never; toss?: never;
shuffle_set_card?: never;
field_disabled?: never;
shuffle_deck?: never;
} | { } | {
start?: never; start?: never;
draw?: never; draw?: never;
...@@ -6768,6 +6906,162 @@ export namespace ygopro { ...@@ -6768,6 +6906,162 @@ export namespace ygopro {
confirm_cards?: never; confirm_cards?: never;
become_target?: never; become_target?: never;
toss?: StocGameMessage.MsgToss; 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(); super();
pb_1.Message.initialize(this, Array.isArray(data) ? data : [], 0, -1, [], this.#one_of_decls); pb_1.Message.initialize(this, Array.isArray(data) ? data : [], 0, -1, [], this.#one_of_decls);
...@@ -6913,6 +7207,15 @@ export namespace ygopro { ...@@ -6913,6 +7207,15 @@ export namespace ygopro {
if ("toss" in data && data.toss != undefined) { if ("toss" in data && data.toss != undefined) {
this.toss = data.toss; 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() { get start() {
...@@ -7338,9 +7641,36 @@ export namespace ygopro { ...@@ -7338,9 +7641,36 @@ export namespace ygopro {
get has_toss() { get has_toss() {
return pb_1.Message.getField(this, 47) != null; 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() { get gameMsg() {
const cases: { const cases: {
[index: number]: "none" | "start" | "draw" | "new_turn" | "new_phase" | "hint" | "select_idle_cmd" | "select_place" | "move" | "select_card" | "select_chain" | "select_effect_yn" | "select_position" | "select_option" | "shuffle_hand" | "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", 0: "none",
1: "start", 1: "start",
...@@ -7389,9 +7719,12 @@ export namespace ygopro { ...@@ -7389,9 +7719,12 @@ export namespace ygopro {
44: "lp_update", 44: "lp_update",
45: "confirm_cards", 45: "confirm_cards",
46: "become_target", 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: { static fromObject(data: {
start?: ReturnType<typeof StocGameMessage.MsgStart.prototype.toObject>; start?: ReturnType<typeof StocGameMessage.MsgStart.prototype.toObject>;
...@@ -7441,6 +7774,9 @@ export namespace ygopro { ...@@ -7441,6 +7774,9 @@ export namespace ygopro {
confirm_cards?: ReturnType<typeof StocGameMessage.MsgConfirmCards.prototype.toObject>; confirm_cards?: ReturnType<typeof StocGameMessage.MsgConfirmCards.prototype.toObject>;
become_target?: ReturnType<typeof StocGameMessage.MsgBecomeTarget.prototype.toObject>; become_target?: ReturnType<typeof StocGameMessage.MsgBecomeTarget.prototype.toObject>;
toss?: ReturnType<typeof StocGameMessage.MsgToss.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 { }): StocGameMessage {
const message = new StocGameMessage({}); const message = new StocGameMessage({});
if (data.start != null) { if (data.start != null) {
...@@ -7584,6 +7920,15 @@ export namespace ygopro { ...@@ -7584,6 +7920,15 @@ export namespace ygopro {
if (data.toss != null) { if (data.toss != null) {
message.toss = StocGameMessage.MsgToss.fromObject(data.toss); 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; return message;
} }
toObject() { toObject() {
...@@ -7635,6 +7980,9 @@ export namespace ygopro { ...@@ -7635,6 +7980,9 @@ export namespace ygopro {
confirm_cards?: ReturnType<typeof StocGameMessage.MsgConfirmCards.prototype.toObject>; confirm_cards?: ReturnType<typeof StocGameMessage.MsgConfirmCards.prototype.toObject>;
become_target?: ReturnType<typeof StocGameMessage.MsgBecomeTarget.prototype.toObject>; become_target?: ReturnType<typeof StocGameMessage.MsgBecomeTarget.prototype.toObject>;
toss?: ReturnType<typeof StocGameMessage.MsgToss.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) { if (this.start != null) {
data.start = this.start.toObject(); data.start = this.start.toObject();
...@@ -7777,6 +8125,15 @@ export namespace ygopro { ...@@ -7777,6 +8125,15 @@ export namespace ygopro {
if (this.toss != null) { if (this.toss != null) {
data.toss = this.toss.toObject(); 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; return data;
} }
serialize(): Uint8Array; serialize(): Uint8Array;
...@@ -7877,6 +8234,12 @@ export namespace ygopro { ...@@ -7877,6 +8234,12 @@ export namespace ygopro {
writer.writeMessage(46, this.become_target, () => this.become_target.serialize(writer)); writer.writeMessage(46, this.become_target, () => this.become_target.serialize(writer));
if (this.has_toss) if (this.has_toss)
writer.writeMessage(47, this.toss, () => this.toss.serialize(writer)); 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) if (!w)
return writer.getResultBuffer(); return writer.getResultBuffer();
} }
...@@ -8027,6 +8390,15 @@ export namespace ygopro { ...@@ -8027,6 +8390,15 @@ export namespace ygopro {
case 47: case 47:
reader.readMessage(message.toss, () => message.toss = StocGameMessage.MsgToss.deserialize(reader)); reader.readMessage(message.toss, () => message.toss = StocGameMessage.MsgToss.deserialize(reader));
break; 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(); default: reader.skipField();
} }
} }
...@@ -10639,6 +11011,119 @@ export namespace ygopro { ...@@ -10639,6 +11011,119 @@ export namespace ygopro {
return MsgShuffleHand.deserialize(bytes); 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 { export class MsgSelectBattleCmd extends pb_1.Message {
#one_of_decls: number[][] = []; #one_of_decls: number[][] = [];
constructor(data?: any[] | { constructor(data?: any[] | {
...@@ -15280,6 +15765,278 @@ export namespace ygopro { ...@@ -15280,6 +15765,278 @@ export namespace ygopro {
DICE = 2 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 { export class MsgReloadField extends pb_1.Message {
#one_of_decls: number[][] = []; #one_of_decls: number[][] = [];
constructor(data?: any[] | { constructor(data?: any[] | {
......
...@@ -35,6 +35,7 @@ export const MSG_NEW_PHASE = 41; ...@@ -35,6 +35,7 @@ export const MSG_NEW_PHASE = 41;
export const MSG_HINT = 2; export const MSG_HINT = 2;
export const MSG_SELECT_IDLE_CMD = 11; export const MSG_SELECT_IDLE_CMD = 11;
export const MSG_SELECT_PLACE = 18; export const MSG_SELECT_PLACE = 18;
export const MSG_SELECT_DISFIELD = 24;
export const MSG_MOVE = 50; export const MSG_MOVE = 50;
export const MSG_SELECT_CARD = 15; export const MSG_SELECT_CARD = 15;
export const MSG_SELECT_TRIBUTE = 20; export const MSG_SELECT_TRIBUTE = 20;
...@@ -63,3 +64,5 @@ export const MSG_ANNOUNCE_CARD = 142; ...@@ -63,3 +64,5 @@ export const MSG_ANNOUNCE_CARD = 142;
export const MSG_ANNOUNCE_NUMBER = 143; export const MSG_ANNOUNCE_NUMBER = 143;
export const MSG_TOSS_COIN = 130; export const MSG_TOSS_COIN = 130;
export const MSG_TOSS_DICE = 131; export const MSG_TOSS_DICE = 131;
export const MSG_SHUFFLE_SET_CARD = 36;
export const MSG_FIELD_DISABLED = 56;
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,
});
};
...@@ -14,6 +14,7 @@ import MsgAnnounceRace from "./announceRace"; ...@@ -14,6 +14,7 @@ import MsgAnnounceRace from "./announceRace";
import MsgAttack from "./attack"; import MsgAttack from "./attack";
import MsgDamage from "./damage"; import MsgDamage from "./damage";
import MsgDrawAdapter from "./draw"; import MsgDrawAdapter from "./draw";
import MsgFieldDisabledAdapter from "./fieldDisabled";
import MsgHintAdapter from "./hint"; import MsgHintAdapter from "./hint";
import MsgNewPhaseAdapter from "./newPhase"; import MsgNewPhaseAdapter from "./newPhase";
import MsgNewTurnAdapter from "./newTurn"; import MsgNewTurnAdapter from "./newTurn";
...@@ -33,6 +34,7 @@ import MsgSelectPositionAdapter from "./selectPosition"; ...@@ -33,6 +34,7 @@ import MsgSelectPositionAdapter from "./selectPosition";
import MsgSelectSum from "./selectSum"; import MsgSelectSum from "./selectSum";
import MsgSelectTributeAdapter from "./selectTribute"; import MsgSelectTributeAdapter from "./selectTribute";
import MsgSelectUnselectCardAdapter from "./selectUnselectCard"; import MsgSelectUnselectCardAdapter from "./selectUnselectCard";
import MsgShuffleSetCard from "./shuffleSetCard";
import MsgSortCard from "./sortCard"; import MsgSortCard from "./sortCard";
import MsgStartAdapter from "./start"; import MsgStartAdapter from "./start";
import MsgTossAdapter from "./toss"; import MsgTossAdapter from "./toss";
...@@ -95,6 +97,7 @@ export default class GameMsgAdapter implements StocAdapter { ...@@ -95,6 +97,7 @@ export default class GameMsgAdapter implements StocAdapter {
break; break;
} }
case GAME_MSG.MSG_SELECT_DISFIELD:
case GAME_MSG.MSG_SELECT_PLACE: { case GAME_MSG.MSG_SELECT_PLACE: {
gameMsg.select_place = MsgSelectPlaceAdapter(gameData); gameMsg.select_place = MsgSelectPlaceAdapter(gameData);
...@@ -237,6 +240,16 @@ export default class GameMsgAdapter implements StocAdapter { ...@@ -237,6 +240,16 @@ export default class GameMsgAdapter implements StocAdapter {
break; 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: { default: {
gameMsg.unimplemented = new ygopro.StocGameMessage.MsgUnimplemented({ gameMsg.unimplemented = new ygopro.StocGameMessage.MsgUnimplemented({
command: func, command: func,
......
...@@ -235,5 +235,14 @@ ...@@ -235,5 +235,14 @@
"repeatedType":"CardLocation" "repeatedType":"CardLocation"
} }
] ]
},
"32":{
"protoType":"shuffle_deck",
"fields":[
{
"fieldName":"player",
"fieldType":"uint8"
}
]
} }
} }
...@@ -35,6 +35,7 @@ const MsgConstructorMap: Map<string, Constructor> = new Map([ ...@@ -35,6 +35,7 @@ const MsgConstructorMap: Map<string, Constructor> = new Map([
["lp_update", ygopro.StocGameMessage.MsgLpUpdate], ["lp_update", ygopro.StocGameMessage.MsgLpUpdate],
["confirm_cards", ygopro.StocGameMessage.MsgConfirmCards], ["confirm_cards", ygopro.StocGameMessage.MsgConfirmCards],
["become_target", ygopro.StocGameMessage.MsgBecomeTarget], ["become_target", ygopro.StocGameMessage.MsgBecomeTarget],
["shuffle_deck", ygopro.StocGameMessage.MsgShuffleDeck],
]); ]);
export interface penetrateType { export interface penetrateType {
......
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,
});
};
...@@ -10,7 +10,7 @@ export default (becomeTarget: ygopro.StocGameMessage.MsgBecomeTarget) => { ...@@ -10,7 +10,7 @@ export default (becomeTarget: ygopro.StocGameMessage.MsgBecomeTarget) => {
); );
if (target) { if (target) {
console.info(`${target.meta.text.name} become target`); console.info(`${target.meta.text.name} become target`);
// TODO: 动画 target.selected = true;
} else { } else {
console.warn(`<BecomeTarget>target from ${location} is null`); console.warn(`<BecomeTarget>target from ${location} is null`);
} }
......
...@@ -15,4 +15,12 @@ export default (_chainEnd: ygopro.StocGameMessage.MsgChainEnd) => { ...@@ -15,4 +15,12 @@ export default (_chainEnd: ygopro.StocGameMessage.MsgChainEnd) => {
console.warn(`<ChainEnd>target from ${chain} is null`); console.warn(`<ChainEnd>target from ${chain} is null`);
} }
} }
// 目前selected字段只会涉及连锁过程某些卡成为效果对象,
// 因此在连锁结束的时候把selected标记清掉。
//
// TODO: 这里每次都要全部遍历一遍,后续可以优化下
for (const card of cardStore.inner) {
card.selected = false;
}
}; };
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!");
}
}
};
...@@ -12,6 +12,7 @@ import onMsgChaining from "./chaining"; ...@@ -12,6 +12,7 @@ import onMsgChaining from "./chaining";
import onMsgChainSolved from "./chainSolved"; import onMsgChainSolved from "./chainSolved";
import onConfirmCards from "./confirmCards"; import onConfirmCards from "./confirmCards";
import onMsgDraw from "./draw"; import onMsgDraw from "./draw";
import onMsgFieldDisabled from "./fieldDisabled";
import onMsgFilpSummoned from "./flipSummoned"; import onMsgFilpSummoned from "./flipSummoned";
import onMsgFlipSummoning from "./flipSummoning"; import onMsgFlipSummoning from "./flipSummoning";
import onMsgHint from "./hint"; import onMsgHint from "./hint";
...@@ -35,7 +36,9 @@ import onMsgSelectTribute from "./selectTribute"; ...@@ -35,7 +36,9 @@ import onMsgSelectTribute from "./selectTribute";
import onMsgSelectUnselectCard from "./selectUnselectCard"; import onMsgSelectUnselectCard from "./selectUnselectCard";
import onMsgSelectYesNo from "./selectYesNo"; import onMsgSelectYesNo from "./selectYesNo";
import onMsgSet from "./set"; import onMsgSet from "./set";
import onMsgShuffleDeck from "./shuffleDeck";
import onMsgShuffleHand from "./shuffleHand"; import onMsgShuffleHand from "./shuffleHand";
import onMsgShuffleSetCard from "./shuffleSetCard";
import onMsgSortCard from "./sortCard"; import onMsgSortCard from "./sortCard";
import onMsgSpSummoned from "./spSummoned"; import onMsgSpSummoned from "./spSummoned";
import onMsgSpSummoning from "./spSummoning"; import onMsgSpSummoning from "./spSummoning";
...@@ -186,7 +189,7 @@ async function _handleGameMsg(pb: ygopro.YgoStocMsg) { ...@@ -186,7 +189,7 @@ async function _handleGameMsg(pb: ygopro.YgoStocMsg) {
break; break;
} }
case "update_data": { case "update_data": {
onMsgUpdateData(msg.update_data); await onMsgUpdateData(msg.update_data);
break; break;
} }
...@@ -310,6 +313,21 @@ async function _handleGameMsg(pb: ygopro.YgoStocMsg) { ...@@ -310,6 +313,21 @@ async function _handleGameMsg(pb: ygopro.YgoStocMsg) {
break; 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": { case "unimplemented": {
onUnimplemented(msg.unimplemented); onUnimplemented(msg.unimplemented);
......
...@@ -14,12 +14,15 @@ export default (selectPlace: MsgSelectPlace) => { ...@@ -14,12 +14,15 @@ export default (selectPlace: MsgSelectPlace) => {
case ygopro.CardZone.MZONE: case ygopro.CardZone.MZONE:
case ygopro.CardZone.SZONE: case ygopro.CardZone.SZONE:
placeStore.set(place.zone, place.controller, place.sequence, { placeStore.set(place.zone, place.controller, place.sequence, {
interactType: InteractType.PLACE_SELECTABLE, interactivity: {
response: { interactType: InteractType.PLACE_SELECTABLE,
controller: place.controller, response: {
zone: place.zone, controller: place.controller,
sequence: place.sequence, zone: place.zone,
sequence: place.sequence,
},
}, },
disabled: false,
}); });
break; break;
} }
......
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: {} };
}
};
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社没想好的设计?
}
}
}
};
...@@ -62,6 +62,7 @@ export default async (start: ygopro.StocGameMessage.MsgStart) => { ...@@ -62,6 +62,7 @@ export default async (start: ygopro.StocGameMessage.MsgStart) => {
text: {}, text: {},
}, },
isToken: !((i + 1) % 3), isToken: !((i + 1) % 3),
selected: false,
}) })
) )
) )
......
import { ygopro } from "@/api"; import { fetchCard, ygopro } from "@/api";
import MsgUpdateData = ygopro.StocGameMessage.MsgUpdateData; import MsgUpdateData = ygopro.StocGameMessage.MsgUpdateData;
import { eventbus, Task } from "@/infra";
import { cardStore } from "@/stores"; import { cardStore } from "@/stores";
export default (updateData: MsgUpdateData) => { export default async (updateData: MsgUpdateData) => {
const { player: controller, zone, actions } = updateData; const { player: controller, zone, actions } = updateData;
if (controller !== undefined && zone !== undefined && actions !== undefined) { if (controller !== undefined && zone !== undefined && actions !== undefined) {
const field = cardStore.at(zone, controller); const field = cardStore.at(zone, controller);
actions.forEach((action) => { for (const action of actions) {
const sequence = action.location?.sequence; const sequence = action.location?.sequence;
if (typeof sequence !== "undefined") { if (typeof sequence !== "undefined") {
const target = field const target = field
.filter((card) => card.location.sequence === sequence) .filter((card) => card.location.sequence === sequence)
.at(0); .at(0);
if (target) { if (target) {
const meta = target.meta;
// 目前只更新以下字段 // 目前只更新以下字段
if (action?.code >= 0) { if (action?.code >= 0) {
meta.id = action.code; const newMeta = await fetchCard(action.code);
meta.text.id = action.code; target.code = action.code;
target.meta = newMeta;
} }
const meta = target.meta;
if (action.location !== undefined) { if (action.location !== undefined) {
target.location.position = action.location.position; 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) { if (action?.type_ >= 0) {
meta.data.type = action.type_; meta.data.type = action.type_;
...@@ -48,10 +56,7 @@ export default (updateData: MsgUpdateData) => { ...@@ -48,10 +56,7 @@ export default (updateData: MsgUpdateData) => {
); );
console.info(field); console.info(field);
} }
if (target?.reload) {
target.reload = false;
}
} }
}); }
} }
}; };
...@@ -20,11 +20,10 @@ export interface CardType { ...@@ -20,11 +20,10 @@ export interface CardType {
sequence: number; sequence: number;
}>; // 选择位置状态下的互动信息 }>; // 选择位置状态下的互动信息
counters: { [type: number]: number }; // 指示器 counters: { [type: number]: number }; // 指示器
reload?: boolean; // 这个字段会在收到MSG_RELOAD_FIELD的时候设置成true,在收到MSG_UPDATE_DATE的时候设置成false
isToken: boolean; // 是否是token isToken: boolean; // 是否是token
chainIndex?: number /*连锁的序号,如果为空表示不在连锁 chainIndex?: number /*连锁的序号,如果为空表示不在连锁
TODO: 目前是妥协的设计,因为其实一张卡是可以在同一个连锁链中被连锁多次的,这里为了避免太过复杂只保存最后的连锁序号*/; TODO: 目前是妥协的设计,因为其实一张卡是可以在同一个连锁链中被连锁多次的,这里为了避免太过复杂只保存最后的连锁序号*/;
selected: boolean; // 当前卡是否被选择成为效果的对象
} }
class CardStore { class CardStore {
......
...@@ -15,31 +15,60 @@ export type PlaceInteractivity = ...@@ -15,31 +15,60 @@ export type PlaceInteractivity =
const { MZONE, SZONE } = ygopro.CardZone; const { MZONE, SZONE } = ygopro.CardZone;
export interface BlockState {
interactivity?: PlaceInteractivity; // 互动性
disabled: boolean; // 是否被禁用
}
export const placeStore = proxy({ export const placeStore = proxy({
inner: { inner: {
[MZONE]: { [MZONE]: {
me: Array.from({ length: 7 }).map(() => undefined as PlaceInteractivity), me: Array.from({ length: 7 }).map(
op: Array.from({ length: 7 }).map(() => undefined as PlaceInteractivity), () =>
({
interactivity: undefined,
disabled: false,
} as BlockState)
),
op: Array.from({ length: 7 }).map(
() =>
({
interactivity: undefined,
disabled: false,
} as BlockState)
),
}, },
[SZONE]: { [SZONE]: {
me: Array.from({ length: 6 }).map(() => undefined as PlaceInteractivity), me: Array.from({ length: 6 }).map(
op: Array.from({ length: 6 }).map(() => undefined as PlaceInteractivity), () =>
({
interactivity: undefined,
disabled: false,
} as BlockState)
),
op: Array.from({ length: 6 }).map(
() =>
({
interactivity: undefined,
disabled: false,
} as BlockState)
),
}, },
}, },
set( set(
zone: ygopro.CardZone.MZONE | ygopro.CardZone.SZONE, zone: ygopro.CardZone.MZONE | ygopro.CardZone.SZONE,
controller: number, controller: number,
sequence: number, sequence: number,
placeInteractivity: PlaceInteractivity state: BlockState
) { ) {
placeStore.inner[zone][matStore.isMe(controller) ? "me" : "op"][sequence] = placeStore.inner[zone][matStore.isMe(controller) ? "me" : "op"][sequence] =
placeInteractivity; state;
}, },
clearAll() { clearAllInteractivity() {
(["me", "op"] as const).forEach((who) => { (["me", "op"] as const).forEach((who) => {
([MZONE, SZONE] as const).forEach((where) => { ([MZONE, SZONE] as const).forEach((where) => {
placeStore.inner[where][who] = placeStore.inner[where][who].map( placeStore.inner[where][who].forEach(
() => undefined (block) => (block.interactivity = undefined)
); );
}); });
}); });
......
import "./index.scss"; import "./index.scss";
import classnames from "classnames"; 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 { type INTERNAL_Snapshot as Snapshot, useSnapshot } from "valtio";
import { sendSelectPlaceResponse, ygopro } from "@/api"; 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<{ const BgExtraRow: FC<{
meSnap: Snapshot<PlaceInteractivity[]>; meSnap: Snapshot<BlockState[]>;
opSnap: Snapshot<PlaceInteractivity[]>; opSnap: Snapshot<BlockState[]>;
}> = ({ meSnap, opSnap }) => { }> = ({ meSnap, opSnap }) => {
return ( return (
<div className={classnames("bg-row")}> <div className={classnames("bg-row")}>
...@@ -17,11 +41,16 @@ const BgExtraRow: FC<{ ...@@ -17,11 +41,16 @@ const BgExtraRow: FC<{
<div <div
key={i} key={i}
className={classnames("block", "extra", { 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={() => { onClick={() => {
onBlockClick(meSnap[i]); onBlockClick(meSnap[i].interactivity);
onBlockClick(opSnap[i]); onBlockClick(opSnap[i].interactivity);
}} }}
> >
{<DecoTriangles />} {<DecoTriangles />}
...@@ -34,7 +63,7 @@ const BgExtraRow: FC<{ ...@@ -34,7 +63,7 @@ const BgExtraRow: FC<{
const BgRow: FC<{ const BgRow: FC<{
isSzone?: boolean; isSzone?: boolean;
opponent?: boolean; opponent?: boolean;
snap: Snapshot<PlaceInteractivity[]>; snap: Snapshot<BlockState[]>;
}> = ({ isSzone = false, opponent = false, snap }) => ( }> = ({ isSzone = false, opponent = false, snap }) => (
<div className={classnames("bg-row", { opponent })}> <div className={classnames("bg-row", { opponent })}>
{Array.from({ length: 5 }).map((_, i) => ( {Array.from({ length: 5 }).map((_, i) => (
...@@ -42,9 +71,10 @@ const BgRow: FC<{ ...@@ -42,9 +71,10 @@ const BgRow: FC<{
key={i} key={i}
className={classnames("block", { className={classnames("block", {
szone: isSzone, 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 />} {<DecoTriangles />}
</div> </div>
...@@ -72,7 +102,7 @@ const onBlockClick = (placeInteractivity: PlaceInteractivity) => { ...@@ -72,7 +102,7 @@ const onBlockClick = (placeInteractivity: PlaceInteractivity) => {
if (placeInteractivity) { if (placeInteractivity) {
sendSelectPlaceResponse(placeInteractivity.response); sendSelectPlaceResponse(placeInteractivity.response);
cardStore.inner.forEach((card) => (card.idleInteractivities = [])); cardStore.inner.forEach((card) => (card.idleInteractivities = []));
placeStore.clearAll(); placeStore.clearAllInteractivity();
} }
}; };
......
...@@ -9,8 +9,10 @@ section#mat { ...@@ -9,8 +9,10 @@ section#mat {
.card-img-wrap { .card-img-wrap {
transform-style: preserve-3d; transform-style: preserve-3d;
position: relative; position: relative;
height: 100%; margin: auto auto;
width: 100%; top: 2%;
height: 96%;
width: 96%;
transform: translateZ(calc(var(--z) * 1px + 0.1px)) transform: translateZ(calc(var(--z) * 1px + 0.1px))
rotateY(calc(var(--ry) * 1deg)); rotateY(calc(var(--ry) * 1deg));
transition: 0.2s scale; transition: 0.2s scale;
...@@ -47,6 +49,41 @@ section#mat { ...@@ -47,6 +49,41 @@ section#mat {
background-color: transparent; background-color: transparent;
// filter: blur(2px); // 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 { .card-focus {
position: absolute; position: absolute;
width: calc(100% * var(--focus-scale)); width: calc(100% * var(--focus-scale));
......
...@@ -241,6 +241,7 @@ export const Card: FC<{ idx: number }> = React.memo(({ idx }) => { ...@@ -241,6 +241,7 @@ export const Card: FC<{ idx: number }> = React.memo(({ idx }) => {
<YgoCard className="card-back" isBack /> <YgoCard className="card-back" isBack />
</div> </div>
</Dropdown> </Dropdown>
{snap.selected ? <div className="card-streamer" /> : <></>}
</animated.div> </animated.div>
); );
}); });
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment